ciao
sono praticamente un niubbo di python e sto tentando di scrivere uno script per autenticarmi in una pagina web e prelevare un file.
Ho trovato il modulo ClientForm che dovrebbe servire allo scopo.
http://wwwsearch.sourceforge.net/ClientForm/
il problema naturalmente è che il modulo non mi funziona.
Vi mostro prima parte del codice html dove sono presenti i parametri per il form e poi il codice python per loggarsi.
<form name="RepPre" action="/provisioning/ctrlprovis/" method="POST">
...
<input type="hidden" name="servizio" value="login">
INPUT type="hidden" name="main_errorLoginPage" value="/jsp/login/aaaaaa/login.jsp">
...
<td id="text"><input type="password" size="13" maxlength="20" name="main_userPassword" id="text">
</td>
....
<td><input type="hidden" name="Action" value="SetCookieSSO">
<input type="hidden" name="giornale" value="aaaaaa">
<input type="submit" name="invia" value="ENTRA" id="button">
e il seguente è il codice python:
>>> import ClientForm
>>> import urllib2
>>> import os
>>>
>>> url = urllib2.urlopen("http://blahblahsitosito/provisioning/jsp/login/aaaaaaa/login.jsp")
>>> lista = ClientForm.ParseResponse(url, backwards_compat=False)
>>> form = lista[0]
>>> form["main_uid"] = "mialogin"
>>> form["main_userPassword"] = "miapass"
>>> print form
<RepPre POST http://blahblahsitosito/provisioning/ctrlprovis/ application/x-www-form-urlencoded
<HiddenControl(servizio=login) (readonly)>
<HiddenControl(main_errorLoginPage=/jsp/login/aaaaaa/login.jsp) (readonly)>
<TextControl(main_uid=mialogin)>
<PasswordControl(main_userPassword=miapass)>
<HiddenControl(Action=SetCookieSSO) (readonly)>
<HiddenControl(giornale=iltirreno) (readonly)>
<SubmitControl(invia=ENTRA) (readonly)>>
>>> file=urllib2.urlopen(form.click()).read()
>>> f=open('/tmp/file.htm', 'w')
>>> f.write(file)
>>> f.close()
fine..
la cosa strana è che in file.htm non c'è la pagina di login... ma un'altra pagina web sempre ovviamente appartenente allo stesso sito.