この記事は最終更新日から1年以上が経過しています。
はじめに
そもそもCookieを維持しなければならないAPIを使っているときに、
PythonのrequestsモジュールでCookieが維持できておらず、はまったことがはじまりでした。
requestsモジュールのSession
Pythonのrequestsモジュールでは、Sessionを利用することでCookieを維持できます。
Cookieの維持ができているか確認するためにhttpbin.orgのAPIを使います。
今回使うAPIを簡単に説明すると
- /cookies/set: セットされているCookieを取得
- /cookies/set/{name}/{value}: 指定した{name}, {value}の組み合わせでCookieをセット
httpbin.orgですが、色々便利な使い方が見つかったら記事にできたら良いなと思っています。
以下、Sessionを利用したCookie維持のコードです。
import requests # Sessionインスタンス作成 s = requests.Session() # Name, Valueの組み合わせでCookieをセット r = s.get('https://httpbin.org/cookies/set/Name/Value') # セットされているCookieの取得 r = s.get('https://httpbin.org/cookies') print(r.text) |
これを実行すると
$ python request.py {"cookies":{"Name":"Value"}} |
ちゃんとCookieがセットされていることがわかります。
これcURLだとどうすんの…?
cURLでCookie維持したいときどうすんの?ってなったので調べてみました。
結局Session的なのではなく、Cookieをファイルに保存する方法になるようです。
オプション -c
オプション -c でCookieを保存するファイルを指定
$ curl -c cookie.txt http://httpbin.org/cookies/set/Name/Value |
オプション -b
Cookieを使うときは、オプション -b で保存したファイルを指定
$ curl -b cookie.txt http://httpbin.org/cookies {"cookies":{"Name":"Value"}} |
当然ファイルを指定しなければ、Cookieがないことになります。
$ curl https://httpbin.org/cookies {"cookies":{}} |
まとめ
これでcURLでもログインしなければ見れないページが叩けたりしますね。
この記事を書いた人
- 2017年入社の新卒です。
最近書いた記事
- 2019.10.11Pythonのアンパックとタプル
- 2019.01.22JavaScript側でsubmitができない
- 2018.12.13「AWS Toolkit for PyCharm について」~ RecoChoku Tech Night #09 4社合同 AWS re:Invent参加レポート で登壇しました ~
- 2018.12.02シリコンバレー1日ツアーに参加してきました(前半)