Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    34

    [Java] Eseguire Login con HTTP Request

    Salve a tutti voi programmatori..
    Ho un problema: Da poco che mi sto cimentando nella parte web di java giusto per studio personale..


    Mi sono posto un problema quello di effettuare un semplice login in un sito qualunque.. Questo verrà fatto credo tramite una POST. Prendo come esempio facebook.
    Ho a conoscenza username e password e l'intento è quello di chiamare questa URL: "http://www.facebook.com/login.php?login_attempt=1" passando nella richiesta http post i dati.


    Di seguito il codice che ho fatto:


    codice:
    public class Login {
        private String email = "username";
        private String password = "password";
    
    
        public void connetti() throws IOException{
            URL url2=new URL("http://www.facebook.com/login.php?login_attempt=1");
            HttpURLConnection connection = (HttpURLConnection) url2.openConnection();
            HttpURLConnection.setFollowRedirects(true);
            connection.setDoOutput(true); 
            connection.setRequestMethod("POST");        
    
    
            String parameters = "email="+email+"&pass="+password+"\r\n";
            DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); 
            wr.writeBytes(parameters); 
            wr.flush(); 
            wr.close();   
            int responseCode = connection.getResponseCode();   
            System.out.println(responseCode); 
    
    
    
    
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();
            int cont = 0;
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
                response.append("\n");
                cont++;
            }
            in.close();
            System.out.println(response.toString());
            System.out.println(cont + " righe scritte");
            
            connection.disconnect();
    }


    Ora vi pongo alcuni questiti:


    1) Come faccio a sapere, e dove lo vado a verificare quali sono i parametri di input che una data POST request vuole??


    2) Come mi comporto per i protocolli https? vale lo stesso ragionamento?


    3) Nella riga "String parameters = "email="+email+"&pass="+password+"\r\n";"
    ho aggiunto \n\r perchè l'ho visto nei vari esempi googleando. è giusto? e a cosa serve?

    4) So che ci sono sicuramente delle mancanze in questo codice quindi datemi delle dritte in generale


    Alla fine dei conti il codice non mi funziona... ho bisogno di alcune delucidazioni.. In pratica quando eseguo con l'URL in protocollo https ho responseCode = 200 il che mi dice che è andato a buon fine, ma se vado a leggere l'output, mi da esattamente lo stesso codice html della pagina in entrata. Mentre se eseguo in http mi da errore 301 e non stampa l'output ovviamente.




    Ora lascio la parola a voi sperando di essere stato il piu chiaro possibile... Vi saluto e vi ringrazio in anticipo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da tuturo Visualizza il messaggio
    Mi sono posto un problema quello di effettuare un semplice login in un sito qualunque..
    1) Come faccio a sapere, e dove lo vado a verificare quali sono i parametri di input che una data POST request vuole??
    Se si tratta di autenticazione tramite un form specifico in una pagina web, purtroppo le cose possono essere complicate da una serie di fattori.
    Innanzitutto bisogna conoscere quali sono i nomi dei parametri da passare alla request, di norma in POST in questo scenario per l'autenticazione.

    Poi ci sono tutta una serie di cose da valutare:
    - se la pagina usa dei "truschini" tramite codice Javascript per offuscare / criptare le credenziali prima che vengano inviate al server.
    - se effettivamente viene fatta una request POST che carica una nuova intera pagina oppure se l'autenticazione sfrutta solo una chiamata AJAX.
    - se è necessario passare alla request un ID di sessione o più in generale dei "cookie" (cioè se è necessario prima fare una GET alla pagina che contiene il form per ottenere questi dati).
    - se si ha ragione di pensare che il server vada a controllare il "referrer" della request.
    - se in mezzo a queste richieste ci sono anche delle "redirect" coinvolte.

    Tutte o comunque molte di queste cose le scopri analizzando il sorgente HTML della pagina e sfruttando i developer tools dei browser moderni (es. Web Developer extension e Firebug extension per Firefox), analizzando anche il traffico a livello di networking del browser e ispezionando header/body delle request e response scambiate.

    E in genere più le cose si fanno complicate (es. principalmente gestione dei cookie) e meno le classi XyzURLConnection sono utili e pratiche da usare. In tal caso meglio usare librerie specifiche che fanno da HTTP "client".
    Ultima modifica di andbin; 10-04-2014 a 09:29
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    34
    Allora dato che sono un vero nabbo con HTML (mai usato) mi aiutate a capire come analizzare il codice sorgente?

    Ad esempio con chrome quale tool utilizzare e cosa andare a vedere di preciso?

    C'è qualche guida per tutto questo?

    Considera che quello che conosco (solo teoricamente sono le chiamate GET e POST.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    34
    Up please

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Il punto, scusa se lo dico, è che con le premesse che hai fatto prima la tua strada è parecchio in salita .....
    Comunque in Chrome puoi fare tasto destro mouse sulla pagina -> "Visualizza sorgente pagina" e poi ci sono i developer tools: menù Chrome -> "Strumenti" -> "Strumenti per sviluppatori".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    34
    Innanzi tutto grazie per la risposta.. So perfettamente che la strada è in salita d'altronde se voglio fare questo per prfessione le salite saranno tante.

    Quello che chiedo è se esiste un tool che ti dica esattamente quale riquest http viene fatta per una data richiesta. Ad esempio se logo su eBay, questo tool mi dice che è stato fatto un post con questi parametri. Esiste?

    Inoltre ho sistemato il codice di cui sopra inserendo controlli sul redirect... Ora non da piu errore 301 ma si comporta sempre con un 200 ma andando a stampare l'html risultante trovo esattamente la pagina iniziale.. Aiutatemi a capire il motivo di quest'ultimo fatto perfavore

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Io usavo un plugin per Firefox, Tamper Data mi pare si chiamasse. Intercetta le richieste (POST/GET) e ti fa vedere cosa viene passato. Poi sta a te intepretare questi dati.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da tuturo Visualizza il messaggio
    Quello che chiedo è se esiste un tool che ti dica esattamente quale riquest http viene fatta per una data richiesta.
    Ripeto: i Developer tools di Chrome ("Strumenti per sviluppatori"). Apri quella finestra dei tools e vai nella scheda "Network" e poi in Chrome carica un sito es. www.google.com e .... vedi le request/response.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    34
    Grazie ragazzi, oggi pom vedo di applicare questi suggerimenti vi faró sapere anche se credo che alcuni siti oscurano qualcosa che rendono non applicabile il metodo standard del post.. Bo forse mi sbaglio

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da tuturo Visualizza il messaggio
    anche se credo che alcuni siti oscurano qualcosa che rendono non applicabile il metodo standard del post..
    Che vuol dire?! I possibili fattori che possono generalmente complicare li ho spiegati all'inizio (può darsi ce ne sia qualcun'altro che mi sfugge ora).
    E se il browser fa una qualsiasi request tu comunque, in vari modi, puoi sempre tracciarla (se non con tools nel browser, anche con sniffer di rete a livello di sistema).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.