web-dev-qa-db-ja.com

PythonリクエストでCookieを使用する方法

ページにログインして、ページ内の別のリンクにアクセスしようとしています。

payload={'username'=<username>,'password'=<password>}
with session() as s:
    r = c.post(<URL>, data=payload)
    print r
    print r.content

これにより、「405 Not Allowed」エラーが発生します。 chrome開発者ツールを使用してpostメソッドの詳細を確認したところ、API(URL/api/auth)が表示されていました。私はそのURLにペイロードで投稿し、それが機能していたので、開発者に表示されるものと同様の応答を受け取っていました。

残念ながら、ログイン後に別のURLを「取得」しようとしても、ログインページからコンテンツを取得しています。ログインが固執しないのはなぜですか? Cookieを使用する必要がありますか?私は初心者なので、Cookieの操作方法がよくわかりません。

27
user1474157

セッションオブジェクトを使用できます。 Cookieを保存してリクエストできるようにし、Cookieを処理します

s = requests.Session() 
# all cookies received will be stored in the session object

s.post('http://www...',data=payload)
s.get('http://www...')

ドキュメント: http://docs.python-requests.org/en/latest/user/advanced/

Cookieデータを外部ファイルに保存してから再ロードして、スクリプトを実行するたびにログインすることなくセッションを永続的に保つこともできます。

リクエスト(python)cookieをファイルに保存する方法

42
gtalarico

ドキュメント から:

  1. 応答からCookieを取得します

    url = 'http://example.com/some/cookie/setting/url'
    r = requests.get(url)
    r.cookies
    

    {'example_cookie_name': 'example_cookie_value'}

  2. 後続のリクエストでCookieをサーバーに返す

    url = 'http://httpbin.org/cookies'
    cookies = dict(cookies_are='working')
    r = requests.get(url, cookies=cookies)`
    
14