2016-08-07 6 views
12

Ich versuche ein Python-Skript zu schreiben, um mich in meinen Fantasy-Football-Account unter https://fantasy.premierleague.com/ einzuloggen, aber etwas stimmt nicht mit meinem Login. Wenn ich mich über meinen Browser anmelde und die Details mit den Chrome-Entwicklertools überprüfe, ich finde, dass die Anforderungs-URL https://users.premierleague.com/accounts/login/ ist und die Form gesendeten Daten:Verwenden Sie Anfragen Modul in Python, um in Barclays Premier League Fantasy Football einloggen?

csrfmiddlewaretoken:[My token] 
login:[My username] 
password:[My password] 
app:plfpl-web 
redirect_uri:https://fantasy.premierleague.com/a/login 

Es gibt auch eine Reihe von Anfrage-Header:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding:gzip, deflate, br 
Accept-Language:en-US,en;q=0.8 
Cache-Control:max-age=0 
Connection:keep-alive 
Content-Length:185 
Content-Type:application/x-www-form-urlencoded 
Cookie:[My cookies] 
Host:users.premierleague.com 
Origin:https://fantasy.premierleague.com 
Referer:https://fantasy.premierleague.com/ 
Upgrade-Insecure-Requests:1 
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 

Also habe ich einen kurzen Python-Skript mit dem Wunsch geschrieben Bibliothek versuchen, sich einzuloggen und zu einer Seite wie folgt zu navigieren:

import requests 
with requests.Session() as session: 
url_home = 'https://fantasy.premierleague.com/' 
html_home = session.get(url_home) 
csrftoken = session.cookies['csrftoken'] 
values = { 
    'csrfmiddlewaretoken': csrftoken, 
    'login': <My username>, 
    'password': <My password>, 
    'app': 'plfpl-web', 
    'redirect_uri': 'https://fantasy.premierleague.com/a/login' 
} 
head = { 
    'Host':'users.premierleague.com', 
    'Referer': 'https://fantasy.premierleague.com/', 
} 
session.post('https://users.premierleague.com/accounts/login/', 
      data = values, headers = head) 
url_transfers = 'https://fantasy.premierleague.com/a/squad/transfers' 
html_transfers = session.get(url_transfers) 
print(html_transfers.content) 

Auf den Inhalt meiner Post-Anforderung ausdrucken, erhalte ich einen HTML-Antwortcode 500 Fehler mit:

b'\n<html>\n<head>\n<title>Fastly error: unknown domain users.premierleague.com</title>\n</head>\n<body>\nFastly error: unknown domain: users.premierleague.com. Please check that this domain has been added to a service.</body></html>' 

Wenn ich den ‚Host‘ aus meinem Kopf dict entfernen, erhalte ich eine HTML-Antwort Code 405 Fehler mit:

b'' 

ich habe versucht, mit verschiedenen Kombinationen der Anfrage-Header in meinem Kopf dict und nichts scheint zu funktionieren.

+0

Was ist passiert, wenn Sie 'premierleague.com' als' Host' benutzen? –

+0

@OrDuan bekomme ich die gleiche Nachricht: unbekannte Domain premierleague.com –

+0

Hallo. Wissen Sie, wie man Trupps etc. aktualisiert oder Transfers mit Python initiiert? –

Antwort

3

Folgendes funktionierte für mich. Ich habe einfach headers = head

session.post('https://users.premierleague.com/accounts/login/', 
      data = values) 

Ich glaube, Sie versuchen, Ihr Team programmatisch zu holen, wie ich. Dein Code hat mich angefangen, danke.

+1

Danke, das scheint zu funktionieren. Ich habe es vorher schon einmal versucht, aber das HTML, das es zurückgeschickt hat, enthielt keine Spielernamen, also nahm ich an, dass es nur die Homepage zurückgab! Es scheint, dass die Spielerdaten nicht im HTML-Code codiert sind, aber vielleicht mit Javascript gedruckt werden? Ich habe den Quellcode in Google Chrome heruntergeladen und nichts zeigt. Wissen Sie, wie Sie den vollständigen HTML-Code erhalten, damit Sie ihn analysieren und Player-Änderungen vornehmen können? –