18

Chromeセッションから取得したCookieを使用してhttp://www.steampowered.comWebサイトにログインしようとしています。

cookieコマンドSELECT * FROM cookie WHERE host_key LIKE '%steam%'と列名を使用してすべてのテーブルのデータを取得し、リスト内包表記ですべてのデータを並べ替えると、Cookieを使用できるようにするためPRAGMA table_info(cookie)にすべてを渡す方法がわかりません。requests

ドキュメントrequestには、dictを渡す必要があると書かれています。つまり、いくつかのキーは互いに上書きされます。これは、いくつかのキーが異なるホストであるためです。cookies={'cookies':'are_working'}namenameSteam_Language

編集:Pythonで既存のcookielib CookieJarインスタンスにCookieを追加する方法が見つかりましたか?これは私を助けるかもしれませんが、cookielib用にChromeクッキーをフォーマットする方法がわかりません

私の質問は次のとおりです。Cookieに相当するいくつかの異なるサイトをどのように渡すのrequestsですか?

4

2 に答える 2

10

FirefoxからCookieをロードするモジュールを作成しました。

リクエストでの使用例:

import requests
import browser_cookie
cj = browser_cookie.firefox()
r = requests.get(url, cookies=cj)
于 2015-04-14T13:15:24.047 に答える
3

HTTP仕様が意図的に阻止しようとしていることを実行しようとしていることに注意してください(つまり、Cookieの送信元ではないドメインにCookieを送信します)。だからあなたは最初から運命にあるかもしれません。さらに悪いことに、steampoweredがログインを実装する方法をざっと見てみました。あなたはあなたのためにあなたの仕事を切り取っています。

質問に戻ります...

これで、SteamPoweredセッションCookieが有効であると仮定すると(ログインページが実行する暗号化、キー共有、キャプチャメソッドに基づいていない可能性があります)、有効なCookiedictを次のように指定するだけでリクエストライブラリにログインできる可能性があります。ドキュメントの状態。

my_cookies = {'cookiename1': 'cookievalue1', 'cookiename2': 'cookievalue2'}
response = requests.get(
    'http://www.steampowered.com/mystuff',
    cookies=my_cookies)

また、Cookieを取得しているデータベースにどのデータが保存されているかはわかりませんが、「Set-Cookie」ヘッダーに付属するすべてのメタデータ(有効期限、パス、ドメインなど)。これは、ユーザーエージェント(Chrome、IE、リクエストライブラリなど)がリクエストで送信するCookieを決定するために使用する情報ですが、リクエストには含まれていません。'Cookie'ヘッダーには、name=valueのペアのみがあります。これで、Cookiedictで指定する必要があるのはこれだけです。

また、同じ名前のCookieが2つある場合は、1つだけ選択してください。なぜなら、最終的には1つだけが評価されるか、サーバーが単にエラーを返す可能性が高いからです。

于 2012-10-09T04:42:52.537 に答える