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