Seite 1 von 1
urllib2 "HTTPError: HTTP Error 400: Bad Request"
Verfasst: Mittwoch 8. Mai 2013, 07:13
von ceddy
Folgender Code funktioniert mit fast jeder url, auch bei einer extra erstellten test Seite wird der Post request erfolgreich ausgeführt, nur bei der im Code angegeben url kommt der Fehler "HTTPError: HTTP Error 400: Bad Request":
Code: Alles auswählen
import cookielib
import urllib2
import urllib
def login():
cookies = cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies))
opener.addheaders =[('User-agent', ('Mozilla/5.0 (compatible; MSIE 6.0; ''Windows NT 5.2; .NET CLR 1.1.4322)'))]
values={'login':'ah1103.krause.ce','pass':'passw'}
data=urllib.urlencode(values)
res=opener.open('http://flb-herford.de/sp.html',data)
login()
kann mir jemand sagen woran der Fehler liegt? :K
ceddy
Re: urllib2 "HTTPError: HTTP Error 400: Bad Request"
Verfasst: Mittwoch 8. Mai 2013, 08:50
von av_jui
Hi
Ich weiß zwar nicht ob das nur ein Übertragungsfehler ist aber da
fehlt ein ' bei passw
mfg
Re: urllib2 "HTTPError: HTTP Error 400: Bad Request"
Verfasst: Mittwoch 8. Mai 2013, 08:53
von ceddy
Tschuldigung, habs verbessert, aber es lag auch nur daran dass ich das richtige Password natürlich gelöscht habe.

Re: urllib2 "HTTPError: HTTP Error 400: Bad Request"
Verfasst: Mittwoch 8. Mai 2013, 08:58
von BlackJack
@ceddy: Wo willst Du Dich denn da überhaupt anmelden? Interessant wäre es das Anmeldeformular mal im Quelltext betrachten zu können.
Re: urllib2 "HTTPError: HTTP Error 400: Bad Request"
Verfasst: Mittwoch 8. Mai 2013, 09:01
von ceddy
Das ist der online Stundenplan von meiner Schule.
Das Formular findet man unter:
http://flb-herford.de/stupla.html
Code: Alles auswählen
<form action="sp.html" method="post">
<div class="loginstupla">
<label for="user">Login</label>
<input type="text" name="login" id="ctrl_5" class="text" value="">
<label for="pass">Passwort</label>
<input type="password" name="pass" id="ctrl_6" class="text" value="">
<input type="checkbox" name="version" value="1" class="check">Plan für nächste Woche<br>
<input type="hidden" name="REQUEST_TOKEN" value="a74cbc48c35b4101fa4a522d6d35db9d">
<input type="submit" id="ctrl_6_submit" class="submit" value="Login">
</div>
</form>
Aber an sich sollte es ja nicht an den übertragenen Daten liegen, wenn die falsch sind sollte die Website diese ja einfach ignorieren
Re: urllib2 "HTTPError: HTTP Error 400: Bad Request"
Verfasst: Mittwoch 8. Mai 2013, 09:23
von mcdwerner
@ceddy das formular enthält ein "REQUEST_TOKEN" das wird vermutlich bei jedem request individuell generiert und wenn das bei der Anmeldung nicht dabei ist, wird der anmeldeversuch wahrscheinlich abgelehnt.
Re: urllib2 "HTTPError: HTTP Error 400: Bad Request"
Verfasst: Mittwoch 8. Mai 2013, 09:28
von ceddy
Nein, ich habe in einem anderen Versusch den request-token mit bottle Ausgelesn, das ändert auch nichts.

Re: urllib2 "HTTPError: HTTP Error 400: Bad Request"
Verfasst: Mittwoch 8. Mai 2013, 09:36
von ceddy
Code: Alles auswählen
import urllib
import httplib2
from bs4 import BeautifulSoup
http = httplib2.Http()
Get the request token
url = 'http://www.flb-herford.de/stupla.html'
headers = {'Content-type': 'application/x-www-form-urlencoded'}
response, content=http.request(url)
headers = {'Cookie': response['set-cookie']}
s=BeautifulSoup(content)
tag = s.find(attrs={"name":"REQUEST_TOKEN"})
data = {"login":"ah1103.krause.ce", "pass":"passw","REQUEST_TOKEN":tag['value']}
resp, content = http.request("http://flb-herford.de/sp.html", "POST", urllib.urlencode(data))
print content
Hier habe ich das ganze mit der httplib2 versucht und vorher den request-token ausgelesen, allerdings werden hier beim "POST" die Daten nicht übertragen. Mal davon abgesehen würde ich das ganze sowieso lieber mit der urllib2 machen, das diese ja in python enthalten ist.