Ich versuche, Python Post-Anforderung zu verwenden, um die Auffrischung eines summoner Profil in OP.GG zu automatisieren:Python Post-Anforderung 418 Fehler
Auf der Seite gibt es einen Knopf, der die folgende JavaScript-Datei aufruft: https://opgg-static.akamaized.net/js3/summoner.js?1492755586
Navigation zu dieser URL: https://na.op.gg/summoner/userName=hamski
die Folge Code-snippet in Chrome Konsole Lauf funktioniert perfekt. Das Profil wurde wie erwartet aktualisiert.
$.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);
}
}
});
Ich habe einen Beitrag Anfrage
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
Das Ergebnis war ein 418-Fehler die Anfragen Modul.
<Response [418]> 418
R.TEXT gibt mir im Grunde die HTML dieser Seite: https://na.op.gg/summoner/ajax/renew.json/
Aktualisiert Code:
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
Sie haben mit einer Teekanne gesprochen. Fehlercode 418 "Ich bin eine Teekanne" war ein Aprilscherzwitz. Es scheint, dass die Entwickler etwas Humor hatten. Ihr Problem sollte von der Tatsache herrühren, dass der Browser bereits authentifiziert ist und die Python-Anfrage nicht. Überprüfen Sie die Netzwerkregisterkarte der Browserkonsole, um festzustellen, ob irgendetwas in der Anfrage sie authentifizieren kann. –
Noch nicht sicher, was das Problem ist. Können Sie näher erläutern, was Sie meinen, indem Sie die Registerkarte Netzwerk überprüfen? Ich fügte einen Zufallsbenutzeragenten dem Header mit Standardheadern hinzu. Ich habe auch Cookies von einer vorherigen Sitzung abgerufen und diese auch in der Postanforderung hinzugefügt. Das Ausführen des Codes führt zu demselben Ergebnis. Ich danke dir sehr! – zhivago