Python 3のリクエストを使用してWebサイトにログインしようとしています。 残念ながら私はそれを行うことができません。要求のあるPythonのポストメソッド
これは私がログイン要求から取得した情報です:
レスポンスヘッダ:
Cache-Control:no-cache
Connection:close
Content-Encoding:gzip
Content-Type:application/json
リクエストヘッダ:
Accept:application/json, text/plain, */*
Content-Type:application/json;charset=UTF-8
Referer:fffff
要求ペイロード:
{email: "xxx", password: "yyy", _token: "zzz"}
私のコード:
with requests.Session() as x:
url = 'website'
USERNAME = "xxx"
PASSWORD = "yyy"
token = "zzz"
x.get(url)
x.post(url, data={'email': USERNAME, 'password': PASSWORD, '_token':token},
headers={'Referer':"fffff"})
page = x.get("some_page_I_have_access_after_login")
print(page.content)
最後の「印刷」の結果だけでは
「に....ログインしてください」で、あなたはそれで私を助けてくださいことはできますか?
編集:
私はへの変更コードがあります。今、私は明確なステータスを持つ
url = 'url'
USERNAME = "xxx"
PASSWORD = "yyy"
token = "fff"
headers = {'Content-type': 'application/json', 'Accept': 'text/plain', 'Referer':'cccc'}
data = {'email': USERNAME, 'password': PASSWORD, '_token':token}
x = requests.get(url)
w = requests.post(url, data=data, headers=headers)
print(w.status_code)
page = requests.get("some_url_I_want_access")
page.raise_for_status()
を。 私はステータス200を持っています。 ユーザ名を変更してもまだ200になっているため、ログインできないという問題があります。
ページ: 401クライアントエラー:URLの無断: "some_url_I_want_access"
は、あなたはJSONを使用して資格情報を送信することができますか?通常、フォームエンコードで送信されます。 – Andrey
わかりませんが、変わったのは、x.post(....)行をw = x.post(...)に変更し、次の行にline print(w.content)を追加したことです。私はmy_pageのhtmlを取得しているので、ログインしているようです。残念ながら、最後の "print"ステートメントでも同じエラーが表示されます。 – Maciejjy
私はプログラムを作った。私は間違いがどこにあるか知っていると思う。私のプログラムを実行すると、リクエストボディは次のようになります:email = aaa%40ccc.com&_token = xxx&password = yyyしかし、私は作業中のブラウザ要求を入力すると、リクエストボディは{"email": "[email protected]"、 "password" : "yyy"、 "_ token": "xxx"}これはまったく同じではなく、作業要求からこの行をコピー&ペーストしてWebデバッガに貼り付けると、Pythonからの私の要求が機能します。この行全体をPythonの適切な方法で書くだけでいいです。それは私にとっては難しいかもしれません。 – Maciejjy