私はOP.GGで召喚プロファイルのさわやかな自動化するために、Pythonのポスト要求を使用しようとしている:次のJavaScriptファイルを呼び出すボタンがあるページでPythonのポスト要求418エラー
を: https://opgg-static.akamaized.net/js3/summoner.js?1492755586このURLへの移動
:Chromeのコンソールで、コードの次のスニペットを実行https://na.op.gg/summoner/userName=hamski
は完璧に動作します。プロファイルは期待どおりに更新されました。
$.OP.GG.ajax.getJSON({
url: ('/summoner/ajax/renew.json/'),
method: 'post',
data: {
summonerId: 47220368
},
callback: {
onJSON: function(json){
console.log(json)
},
onError: function(error){
$.OP.GG.summoner.renewBtn.stop(btn);
alert(error);
}
}
});
私は結果が418エラーだった
import json
import requests
url = "https://na.op.gg/summoner/ajax/renew.json/"
payload = {
'summonerId': 47220368,
}
data=json.dumps(payload)
print data
r = requests.post(url, data)
print r
print r.status_code
print r.text
要求モジュールを使用してPOSTリクエストをしました。
<Response [418]> 418
r.textは基本的に私は、このページのHTMLを与える: https://na.op.gg/summoner/ajax/renew.json/
更新コード:
import json
import requests
from fake_useragent import UserAgent
ua = UserAgent(cache=False)
url = "https://na.op.gg/summoner/ajax/renew.json/"
payload = {
'summonerId': 47220368,
}
headers = requests.utils.default_headers()
headers.update(
{
'User-Agent':ua.random
})
print ua.random
session = requests.Session()
r1 = session.get("https://na.op.gg/summoner/userName=hamski",headers=headers)
print session.cookies.get_dict()
r = requests.post(url, data=json.dumps(payload),cookies=r1.cookies, headers=headers)
print r
print r.status_code
print r.text
あなたはティーポットと話しています。エラーコード418「私はティーポットです」は、4月のバカの冗談でした。開発者がユーモアを持っていたようです。あなたの問題は、ブラウザがすでに認証されていて、Pythonのリクエストが認証されていないという事実から来るべきです。ブラウザコンソールの[ネットワーク]タブを調べて、要求内の何かがそれを認証できるかどうかを確認します。 –
問題の内容が不明です。あなたはネットワークタブをチェックすることで何を意味するかを詳しく説明できますか?私はデフォルトのヘッダーと一緒にヘッダーにランダムなユーザーエージェントを追加しました。私は前回のセッションからクッキーを取り出し、ポストリクエストにも追加しました。コードを実行すると同じ結果になります。どうもありがとうございます! – zhivago