2017-05-03 15 views
0

私は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 
+0

あなたはティーポットと話しています。エラーコード418「私はティーポットです」は、4月のバカの冗談でした。開発者がユーモアを持っていたようです。あなたの問題は、ブラウザがすでに認証されていて、Pythonのリクエストが認証されていないという事実から来るべきです。ブラウザコンソールの[ネットワーク]タブを調べて、要求内の何かがそれを認証できるかどうかを確認します。 –

+0

問題の内容が不明です。あなたはネットワークタブをチェックすることで何を意味するかを詳しく説明できますか?私はデフォルトのヘッダーと一緒にヘッダーにランダムなユーザーエージェントを追加しました。私は前回のセッションからクッキーを取り出し、ポストリクエストにも追加しました。コードを実行すると同じ結果になります。どうもありがとうございます! – zhivago

答えて

0

私は欠けていたかを把握することができましたリクエストインターセプタを使用している私のリクエスト - 「postman」と呼ばれるクロムエクステンション

クッキーとヘッダーはまったく問題ではないことが分かりました。データと

交換データ=のjson.dumps(ペイロード)=ペイロードが問題を修正しました。