Python-das urllib einfaches login-script
Ich versuche, ein Skript zum einloggen in mein "check-Karte" balance " service für meine Universität mit python. Im Grunde ist es ein web-Formular, wo wir füllen unsere PIN und PASS und es zeigt uns, wie viel $$$ auf der linken Seite ist unsere Karte (für Essen)...
Dies ist die Webseite: [url]http://www.wcu.edu/11407.asp[/url]
Dies ist die form, die ich bin, Füllung:
<FORM method=post action=https://itapp.wcu.edu/BanAuthRedirector/Default.aspx><INPUT value=https://cf.wcu.edu/busafrs/catcard/idsearch.cfm type=hidden name=wcuirs_uri>
<P><B>WCU ID Number<BR></B><INPUT maxLength=12 size=12 type=password name=id> </P>
<P><B>PIN<BR></B><INPUT maxLength=20 type=password name=PIN> </P>
<P></P>
<P><INPUT value="Request Access" type=submit name=submit> </P>
</FORM>
Wie sehen Sie die Felder, die ich ausfüllen muss sind:
<input maxlength="12" size="12" type="password" name="id">
<input maxlength="20" type="password" name="PIN">
dann muss ich die Taste drücken:
<input value="Request Access" type="submit" name="submit">
Wenn ich das in meinem browser, dies führt mich zur anderen Seite, wo es zeigt, mein Gleichgewicht und meine id in einfachen html...
Also versuchte ich zu schreiben, ein python-Skript, das den html-von dieser Seite (so konnte ich analysieren die Menge von Geld, das ich verlassen haben, und drucken Sie es auf dem Bildschirm)
Dies ist, was ich habe, so weit:
import urllib
import urllib2
import sys
import cookielib
import hashlib
cookieJar = cookielib.LWPCookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
opener.addheaders = [('User-agent', "Mozilla/5.0")]
username = "xxxxxxx"
password = "xxxxxxxx"
action = "https://itapp.wcu.edu/BanAuthRedirector/Default.aspx"
print hashlib.md5(hashlib.md5(password).hexdigest()).hexdigest()
#url = "http://www.wcu.edu/11407.asp"
url = "http://www.wcu.edu/11407.asp"
form = {"action" : action,
"id" : username,
"PIN" : password}
encodedForm = urllib.urlencode(form)
request = urllib2.Request(url, encodedForm)
page = opener.open(request)
contents = page.read()
f = open("mycatpage.txt", "w")
f.write(contents)
f.close()
Warum das nicht funktioniert???
Vielen Dank im Voraus
BEARBEITEN
Ich machte eine neue version des Skripts, aber es gibt mir eine Fehlermeldung:
Traceback (most recent call last):
File "checkbalance3.py", line 20, in <module>
open("mycatpage.html", 'w').write(opener.open(request))
File "/usr/lib/python2.7/urllib2.py", line 400, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 438, in error
return self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 372, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 521, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 500: Internal Server Error
Dies ist der code:
from urllib import urlopen, urlencode
import urllib2
myId = 'xxxxxxxx'
myPin = 'xxxxxxx'
data = {
'id':myId,
'PIN':myPin,
'submit':'Request Access',
'wcuirs_uri':'https://cf.wcu.edu/busafrs/catcard/idsearch.cfm'
}
opener = urllib2.build_opener()
opener.addheaders = [('User-agent','Mozilla/5.0')]
url = 'https://itapp.wcu.edu/BanAuthRedirector/Default.aspx'
request = urllib2.Request(url, urlencode(data))
open("mycatpage.html", 'w').write(opener.open(request))
Irgendwelche Ideen?
- verwenden Sie firebug und sehen, dass die post-Parameter sind: PIN,id,submit (- value :Zugang Beantragen), wcuirs_uri(value:cf.wcu.edu/busafrs/catcard/idsearch.cfm); also versuchen Sie Ihr
form
Werte Error 500: Internal Server Error
sagt dir, dass die server verursachte eine Ausnahme. So, der server kennt den Fehler und imo kann man nicht viel darüber.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich versucht, dieses (scheint zu arbeiten, zumindest keine Ausnahme):
action
Attributurl
anders ist als der login-Seite (itapp.wcu.edu/BanAuthRedirector/Default.aspx); ich bin immer runtime-exception-Seite (browser) alle Zeit, so kann ich nicht überprüfenaction
url. In diesem Fall haben wir bereits Informationen, so brauchen wir nicht zu Besuch/Aufruf der login-Seite