は、コードの関連部分はあります要求は次のように私は要求を使用して、Pythonの3.5.1によ
req = requests.post(self.URL, data={"username": username, "password": password})
self.cookies = {"MOODLEID1_": req.cookies["MOODLEID1_"], "MoodleSession": req.cookies["MoodleSession"]}
self.URL
が正しいページがあり、POST意図どおりに動作していますが、私はそれを確認するためにいくつかのプリントを行いました。
マイ出力:
Traceback (most recent call last):
File "D:/.../main.py", line 14, in <module>
m.login('juan.siqueira', '211621QWe!')
File "D:\...\moodle2.py", line 14, in login
self.cookies = {"MOODLEID1_": req.cookies["MOODLEID1_"], "MoodleSession": req.cookies["MoodleSession"]}
File "D:\...\venv\lib\site-packages\requests\cookies.py", line 287, in __getitem__
return self._find_no_duplicates(name)
File "D:\...\venv\lib\site-packages\requests\cookies.py", line 345, in _find_no_duplicates
raise KeyError('name=%r, domain=%r, path=%r' % (name, domain, path))
KeyError: "name='MOODLEID1_', domain=None, path=None"
私はreq.cookies
が持っているかどうか確認するために、実行時にデバッグしようとしています。しかし、私が得ることは、少なくとも私のためには驚くべきことです。 self.cookies = {...}
にブレークポイントを設定して[(c.name, c.value, c.domain) for c in req.cookies]
を実行すると、そこにクッキーがないような空のリストが表示されます。
サイトはCookieを送信しますが、Chrome拡張機能で確認すると、「MOODLEID1_」と「MoodleSession」が2つ見つかりました。その理由は何ですか?
サーバーから 'req.headers'ショーが送信されたことは何ですか?そこにSet-Cookieヘッダーがありますか?そうでない場合、サーバーはCookieを送信しませんでした。 –
私は 'req.headers'に' Set-Cookie'が見つかりませんでしたが、Chrome上ではどちらのクッキーも拡張子を使ってはっきりと見ることができます。なぜ私のスクリプトでそれらを見ることができないのですか? – JChris
クッキーは常に 'Set-Cookie'ヘッダを使ってサーバからクライアントに送られます。 ChromeにCookieが存在していても、現在のURLに設定されているわけではありません。 *別の* URLで設定されている可能性があります。サーバが 'Set-Cookie'ヘッダを発行するURLを見つける必要があります。 –