5

リクエストを使用していくつかのドキュメントをダウンロードしようとしていますが、ページがユーザーログイン画面にリダイレクトしているため、HTMLページをダウンロードしています。

私はやってみました:

c=requests.get(url,auth=HTTPBasicAuth('user','pass'))

しかし、私は認証されていません。

バニラとダイジェストも試してみました。

フォーム自体は次のようになります。

<input id="username" name="username" class="required" tabindex="1" type="text" value="" size="25" autocomplete="false"/>
<br/>

<label for="password">Password</label>
<input id="password" name="password" class="required" tabindex="2" type="password" value="" size="25" autocomplete="off"/>

ペイロードの一部としてユーザー名とパスワードを渡す必要がありますか?もしそうなら、どうすればいいですか?私はこれまでにいくつかの異なる方法を試しました。

4

1 に答える 1

6

基本的に、それはページから認証IDを取得し、Cookieを渡すことと関係がありました。

これは基本的に私がしたことです:

from bs4 import BeautifulSoup as bs
import requests
s = requests.session()
url = r'url_i_care_about'

def authenticate(s, url):
    headers = {'username': 'myuser', 'password': 'mypasss', '_Id': 'submit'}
    page=s.get(url)
    soup=bs(page.content)
    value=soup.form.find_all('input')[2]['value']
    headers.update({'value_name':value})
    auth = s.post(url, params=headers, cookies=page.cookies)
于 2012-09-13T17:26:17.813 に答える