返信テキストを印刷すると、クッキーを受け入れていないというエラーが表示されます。
このようなことをしているときは、常にブラウザを可能な限り最高にシミュレートしようとします。つまり、すべてのヘッダーを設定し、ブラウザが実行する手順を実行する必要があります。
まずブラウザでウェブページを開きます。開発ツール、ネットワークタブを開きます。 ログインをクリックすると、ブラウザが/ secure/proxyに要求することがわかります あなたのプログラムもそれを行う必要があります。実際の要求よりもブラウザーからの要求と同じように要求が行われていることを確認してください。ヘッダーを確認してください。あなたは彼らがそこにトークンを送るのを見ることができます。 (彼らはあなたのスクリプトでやったのと同じように、投稿データにそれを送りません)。また、他のヘッダーをチェックしている可能性もあります。なぜなら、それらを削除すると機能しないからです。したがって、最も簡単な方法は、すべてのヘッダーをブラウザーとして配置することです。
クッキーについて忘れないでください。しかし、これは要求からセッションを使用しているため自動的に行われます。
![enter image description here](https://i.stack.imgur.com/sQDFw.png)
とにかく、これは動作するコードです:
import requests
post_url = 'https://www.custommade.com/secure/login/api/'
client = requests.session()
client.get('https://www.custommade.com/')
r = client.get('https://www.custommade.com/secure/proxy/')
csrftoken = r.cookies['csrftoken']
header_info = {
"Host" : "www.custommade.com",
"Connection" : " keep-alive",
"Origin" : " https://www.custommade.com",
"User-Agent" : " Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
"Content-Type" : " application/x-www-form-urlencoded",
"Accept" : " */*",
"X-Requested-With" : " XMLHttpRequest",
"X-CSRFToken" : csrftoken,
"DNT" : " 1",
"Referer" : " https://www.custommade.com/secure/proxy/",
"Accept-Encoding" : " gzip, deflate, br",
"Accept-Language" : " en-US,en;q=0.8,cs-CZ;q=0.6,cs;q=0.4,sk;q=0.2,ru;q=0.2",
}
payload = {'_method':'login','email': '[email protected]','password':'asfdasf', 'remember':True}
r = client.post(post_url, data=payload, headers = header_info)
print r.text
print r.status_code
印刷:
{"errors": "Oops! Something went wrong. Please ensure you are sending JSON data."}
400
は^^パスワードが
間違っていることを意味