|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2005
Messaggi: 62
|
[JAVA] Accedere a pagina web con login HTTP POST
Ciao a tutti
E' il primo messaggio che invio in questo forum spero possiate aiutarmi, il mio problema è quello di accedere tramite codice java al sito http://www.garzantilinguistica.it/it/login e recuperare dal dizionario italiano alcune definizioni. Vi posto il codice della form di accesso contenuto nella pagina. codice: Codice:
<div id="login_box"> <form action="/it/session" method="post"><div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="0j1a7EPSCoz43rMyWIy9lmNztD+v+uHs7Z+B9zdivs8=" /></div> <div class="block_element"><label for="e-mail">E-mail</label> <input id="login" name="login" type="text" /></div> <div class="block_element"><label for="password">Password</label> <input id="password" name="password" type="password" /></div> <div><label for="remember_me">Ricordati di me</label> <input id="remember_me" name="remember_me" type="checkbox" value="1" /></div> <div><input id="login_submit" name="commit" type="submit" value="Entra" /></div> </form> </div> Logicamente ho già username e password validi, quindi il mio problema è solo quello di accedere al dizionario e ricercare alcune definizioni di parole nel dizionario. Avrei bisogno di un metodo per loggarmi alla pagina e mantenere l'autenticazione durante tutta l'esecuzione del programma. Ho recuperato la richiesta HTTP che il browser invia al sito spero possa servirvi: codice: Codice:
POST /it/session HTTP/1.1 Host: www.garzantilinguistica.it User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB6 (.NET CLR 3.5.30729) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.garzantilinguistica.it/it/session/new Cookie: __utma=244184339.2071497955.1272035102.1272707541.1272715240.3; __utmz=244184339.1272707541.2.2.utmcsr=it.answers.yahoo.com|utmccn=(referral)|utmcmd=referral|utmcct=/question/index; __utmc=244184339; _garzanti2009_session=BAh7CToOcmV0dXJuX3RvIhYvaXQvZGl6aW9uYXJpby9pdDoPc2Vzc2lvbl9pZCIlYjNlNjMwZjk3OGI2NWZkNzA5NWUyNDIwMTM5OWRhMDM6EF9jc3JmX3Rva2VuIjE1dHdzN2xhTHVWOEwvTlg0Ry9GTVVwWVhTTjdvWE9iQzVPN0RtcHBTdnhjPSIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7AA%3D%3D--17e53142888ec55c0dfc166b5f326d8d7f3630ac; __utmb=244184339.3.10.1272715240 Content-Type: application/x-www-form-urlencoded Content-Length: 139 authenticity_token=5tws7laLuV8L%2FNX4G%2FFMUpYXSN7oXObC5O7DmppSvxc%3D&login=xxxxxx%40gmail.com&password=xxxxxx&remember_me=1&commit=Entra HTTP/1.1 302 Found Date: Sat, 01 May 2010 12:03:00 GMT Server: Apache/2.2.3 (Red Hat) X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.2.4 X-Runtime: 27 Cache-Control: no-cache Set-Cookie: auth_token=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT Set-Cookie: auth_token=bbc915773b8ac9fee502d3ff495e890e678f83cd; path=/; expires=Sun, 01-Aug-2010 12:03:00 GMT Set-Cookie: _garzanti2009_session=BAh7CzoOcmV0dXJuX3RvIhYvaXQvZGl6aW9uYXJpby9pdDoMdXNlcl9pZGkDRHUPOhBsYXN0X2FjY2Vzc1U6IEFjdGl2ZVN1cHBvcnQ6OlRpbWVXaXRoWm9uZVsISXU6CVRpbWUNKpAbgAAAUO0GOh9AbWFyc2hhbF93aXRoX3V0Y19jb2VyY2lvblQiCFVUQ0AJOg9zZXNzaW9uX2lkIiViM2U2MzBmOTc4YjY1ZmQ3MDk1ZTI0MjAxMzk5ZGEwMyIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7ADoQX2NzcmZfdG9rZW4iMTV0d3M3bGFMdVY4TC9OWDRHL0ZNVXBZWFNON29YT2JDNU83RG1wcFN2eGM9--aead6cd43273b2bc82caef2be05660b55efdeec3; path=/; HttpOnly Location: http://www.garzantilinguistica.it/ Status: 302 Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 105 Keep-Alive: timeout=2, max=100 Connection: Keep-Alive Content-Type: text/html; charset=utf-8 Spero qualcuno possa aiutarmi. PS: questo programma non verrà usato per nessun fine illegale, mi serve per la mia tesi in elaborazione del linguaggio naturale. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Frosinone
Messaggi: 576
|
Ciao, la soluzione al tuo problema credo che sia simile a molte altre situazioni di login. In particolare devi fare attenzione ad un paio di cose:
TU -> SITO Quando effettui il login, devi tenere traccia del contenuto della richiesta POST che il browser effettua al sito. Questa richiesta dovrai farla tale e quale nel tuo programma. SITO -> TU Quando il sito ti risponde alla richiesta POST del login, aggiungerà nella risposta HTML alcuni cookie. Devi tenere traccia di questi coockies per le prossime richieste. TU -> SITO Quando, dopo esserti loggato, effettui un'azione nel sito, osserva la richiesta HTTP che il browser manda al sito, e soprattutto quali cookie allega alla richiesta (sicuramente un cookie che identifica la sessione). Io ho fatto un semplice programmino in Java che effettua il login presso un sito, o perlomeno, verifica se i dati del login sono corretti. Te dovrai ampliare questo programma, tenendo traccia dei vari cookie che vengono scambiati tra TE e il SITO. Spero che questa breve panoramica sia utile per aiutarti nella realizzazione del progetto. Se comunque durante lo sviluppo hai qualche problema, puoi tranquillamente chiedere consigli. A presto
__________________
Ho conluso positivamente con backstage_fds, casacup, ceolo, CharliEK, ddaniele, devilred, DexTer82, diba, EasyD, fedevi, fuckaldo, Gica78R, Ippo 2001, jimmy41, jolly90aa , Jonny1600, kamoscio, Knukcles, k3vin, Lunar Wolf, marcopino1982, Mecoita, Mokurai77, pelatoscatenato, sadap, subaugusta, zakkos e ^VaMpIr0^ Find me on www.nerthase.com |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Sep 2005
Messaggi: 62
|
Grazie mille per l'aiuto
ho risolto il problema impostando il cookie nella URLConnection che ho ricavato quando il mio browser ha richiesto la connessione al server autenticandomi con login e password. Anche se è una soluzione piuttosto "grezza" nel mio caso è perfetta perchè una volta ricavate le definizioni il codice scritto verrà cestinato.. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:06.



















