1

重複の可能性:
python: urllib2 urlopen リクエストで Cookie を送信する方法

ブラウザに Cookie がある場合、Python スクリプトでこれらの保存された Cookie を URL リクエストに使用するにはどうすればよいですか?

特定のサイトについて、Python スクリプトが (ブラウザーにログインしているため) 私の ID を取得し、サーバーに要求を送信する方法を探しています。ディスクから Cookie を読み取る必要はありませんが、次のようなことをしたいと思います。

cookies = {"username": "USERNAME", "session": "xxxxxxx"...}
urlopen(url, cookies=cookies) # I know that this doesn't work, just showing you what I intend to do

これを行う簡単な方法はありますか?

4

2 に答える 2

3

ここでは Cookielib があなたの友達です。ただし、Cookie の名前と値だけでなく、ブラウザからの情報がもう少し必要になります。

cookies = {"username": "USERNAME", "session": "xxxxxxx"...}

これらの値を指定すると、リクエストでセッションを再作成できるはずです。

cookies = [{
    "name": "username",
    "value": "USERNAME",
    "domain": "domain",
    "path": "path",
    "secure": "secure",
}]

次を使用してセッションを再作成します。

import cookielib
import urllib2

cj = cookielib.CookieJar()

for cookie in cookies:
    c = cookielib.Cookie(version=1,
                         name=cookie["name"],
                         value=cookie["value"],
                         port=None,
                         port_specified=False,
                         domain=cookie["domain"],
                         domain_specified=False,
                         domain_initial_dot=False,
                         path=cookie["path"],
                         path_specified=True,
                         secure=cookie["secure"],
                         expires=None,
                         discard=True,
                         comment=None,
                         comment_url=None,
                         rest={'HttpOnly': None},
                         rfc2109=False)
    cj.set_cookie(c)

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.open(urllib2.Request('http://www.example.com')

テストされていないコード。

于 2012-06-01T23:44:04.307 に答える
1

Firefox と Chrome は、SQLite を使用して Cookie を書き込みます。

そこから Cookie をフェッチするアダプターを作成できます。私はそれを行う方法のこの例を見つけて、Cookie を に設定しましたCookieJarが、実際には pythonCookieJarクラスをサブクラス化して、その場でこれを実行し、値を保存し直すことができると思います。

http://www.guyrutenberg.com/2010/11/27/building-cookiejar-out-of-firefoxs-cookies-sqlite/

于 2012-06-01T23:28:42.470 に答える