6

これをやろうとしていたのですが、

import requests
s=requests.Session()
login_data = dict(userName='user', password='pwd')
ra=s.post('http://example/checklogin.php', data=login_data)
print ra.content
print ra.headers
ans = dict(answer='5')
f=s.cookies
r=s.post('http://example/level1.php',data=ans,cookies=f)
print r.content

しかし、2 番目の投稿リクエストは 404 エラーを返します。

4

1 に答える 1

6

の最新バージョンでrequestsは、sessionsオブジェクトに が装備さCookie Persistenceれています。リクエスト セッション オブジェクトドキュメントを参照してください。したがって、クッキーを人為的に追加する必要はありません。ただ

import requests
s=requests.Session()
login_data = dict(userName='user', password='pwd')
ra=s.post('http://example/checklogin.php', data=login_data)
print ra.content
print ra.headers
ans = dict(answer='5')
r=s.post('http://example/level1.php',data=ans)
print r.content

クッキーを印刷して、ログに記録されているかどうかを調べてください。

for cookie in s.cookies:
    print (cookie.name, cookie.value)

サンプルサイトはあなたのものですか?
そうでない場合は、サイトがボット/クローラーを拒否します。
また、ブラウザを使用しているように見えるように、リクエストのユーザーエージェントを変更できます。


例えば:

import requests
s=requests.Session()
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36'
}
login_data = dict(userName='user', password='pwd')
ra=s.post('http://example/checklogin.php', data=login_data, headers=headers)
print ra.content
print ra.headers
ans = dict(answer='5')
r=s.post('http://example/level1.php',data=ans, headers = headers)
print r.content
于 2013-09-08T08:31:51.960 に答える