2016-05-07 2 views
0

ziemlich neu in Python zu arbeiten und ich bin versucht, ein Programm zu machen, die in eine Webseite einzuloggen werden und die HTML-Inhalte davon bekommen:Python Login zu Web-Seite nicht

Dies ist die Form, die ich versuche, zu füllen: mein python-Code

<form method="post" action="loginDo.php"> 
    <input type="hidden" name="LoginStamp" value="238a72c6 a127479c bf6ceb84 188367fc cf9065e5 454c5868 59ffd5f2 3a144648 33690673" /> 
    <table> 
    <tr><td>Schoolafkorting:</td><td><input type="text" size="30" name="Root" value="" onblur="verifySchool()" ID="School" /></td><td ID="Schoolname"></td></tr> 
    <tr><td>Gebruikersnaam of e-mail:</td><td><input type="text" size="30" name="Username" value=""/></td></tr> 
    <tr><td>Wachtwoord:</td><td><input type="password" size="30" name="Password"/></td></tr> 
    </table> 
    <script type="text/javascript">verifySchool();</script> 
    <input type="submit" alt="inloggen" value="Log in" name="Login" /> 
</form> 

Und hier ist:

from requests import session 

payload = { 
'Root': 'testRoot', 
'Username': 'test', 
'Password': 'testpass' 
} 

with session() as c: 
    r = c.post('http://rapport.myro.be/login.php', data=payload) 
    print(r.text) 

Und das Ergebnis dieses Codes ist:

<tr><td>Schoolafkorting:</td><td><input type="text" size="30" name="Root" value="" onblur="verifySchool()" ID="School" /></td><td ID="Schoolname"></td></tr> 
<tr><td>Gebruikersnaam of e-mail:</td><td><input type="text" size="30" name="Username" value="test"/></td></tr> 
<tr><td>Wachtwoord:</td><td><input type="password" size="30" name="Password"/></td></tr> 

Wie Sie sehen, wird der Wert "Username" mit "test" ausgefüllt, die Felder "Root" und "Password" bleiben jedoch leer.

Da „Passwort“ keinen Wert haben atribute ich sehen kann, warum es nicht funktionieren könnte, aber „Root“ man muss und es bleibt auch leer, so das einzige, was in ist Benutzername

jemand gefüllt bekommen kann Hilf mir dabei (ich benutze Python 2.7)?

Dank

+0

Können Sie den Link teilen? –

Antwort

2

Der Antrag sollte der Form das Ziel gemacht werden.

Sie können das Ziel sehen hier: <form method="post" action="loginDo.php">

Also, der richtige Code die POST-Anforderung zu senden ist: c.post('http://rapport.myro.be/loginDo.php', data=payload)

Sie können auch eine LoginStamp bieten müssen, auf der Website abhängig.

+0

Ok Das scheint etwas zu tun, aber ich bekomme "Invalid Referrer" (Ich habe auch versucht, ein loginstamp, aber das schien keinen Unterschied zu machen) – user265889

+0

Dann müssen Sie einen Referer setzen. Es ist wahrscheinlich, dass die Website das Formular als Referer erwartet, also: 'requests.post (..., headers = {'Referer': 'http://rapport.myro.be/login.php'})'. –