Python发布请求418错误

时间:2017-05-03 03:14:27

标签: python ajax post python-requests

我正在尝试使用Python post请求自动刷新OP.GG中的召唤者配置文件:

在页面上有一个调用以下javascript文件的按钮: https://opgg-static.akamaized.net/js3/summoner.js?1492755586

导航到此网址:https://na.op.gg/summoner/userName=hamski

在Chrome控制台中运行以下代码段完美无缺。该个人资料按预期更新。

$.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);
        }
    }
});

我使用了申请模块

发了一个帖子请求
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

结果是418错误。

<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

1 个答案:

答案 0 :(得分:0)

我能够使用请求拦截器找出我的请求中缺少的内容 - 名为“postman”的chrome扩展

事实证明,cookie和标题根本不重要。

用data = payload替换data = json.dumps(payload)解决了这个问题。