0
我试图使用Python POST请求来自动OP.GG召唤师轮廓的清爽:Python的POST请求418错误
在页面上有一个调用下面的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错误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“我是茶壶”是一个愚蠢的玩笑。看起来开发者有些幽默。您的问题应该来自浏览器已经过身份验证并且Python请求不是。检查浏览器控制台的网络选项卡,查看请求中是否有任何内容可以对其进行身份验证。 –
仍不确定问题是什么。你能通过检查网络标签来详细说明你的意思吗?我在头上添加了一个随机用户代理以及默认头文件。我还从以前的会话中检索了Cookie,并在发布请求中添加了这些Cookie。运行代码获得相同的结果。非常感谢! – zhivago