我正在尝试使用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
答案 0 :(得分:0)
我能够使用请求拦截器找出我的请求中缺少的内容 - 名为“postman”的chrome扩展
事实证明,cookie和标题根本不重要。
用data = payload替换data = json.dumps(payload)解决了这个问题。