Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    51

    scrivere in una ActionForm

    Salve, ho un problema al quale non so ovviare, devo accedere ad una pagina html alla quale si può accedere solamente riempiendo un ActionForm, in pratica devo loggarmi in un sito con delle credenziali che già ho. Ho pensato di andare a vedere quale è la action scatenata dal click sul tasto invio dei dati, capire così a quale server venissero inviati i dati con la richiesta, ho pensato di usare wireshark per analizzare il mio traffico con tale server per capire come fossero costruiti i pacchetti che contengono i dati di login e ricrearli io nel mio programma "preconfezionando" all'interno di essi i miei dati di login. Solo che nei pacchetti che analizzo non trovo traccia dei miei dati di login. A questo punto suppongo ci sia un altro modo per poter fare questa cosa, cioè l'equivalente di scrivere dentro una ActionForm, o magari sono io che sbaglio a farla, spero qualcuno possa aiutarmi. grazie.

    PS. Supponete che non ci sia alcun tipo di protezione, ma nel caso in cui ci fosse, cambierebbe qualcosa?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Di quale linguaggio stiamo parlando? Hai letto il Regolamento?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    51
    si ho letto, ma credo che il ragionamento possa applicarsi ad un qualunque linguaggio, poi nello specifico è java.... se deve essere spostato spostatelo, volevo una risposta sul metodo generico che credo potrà interessare anche qualcun altro in futuro, se non è possibile parliamo di java nella sezione adatta.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da 9600xt
    credo che il ragionamento possa applicarsi ad un qualunque linguaggio
    Non c'è alcun ragionamento: ogni linguaggio fornisce strumenti specifici per comunicare via HTTP con il Web, pertanto occorre specificarlo come riferimento.

    Sposto in Java, esortando a specificare qualche informazione in più, ad esempio uno stralcio di HTML della pagina con cui si dovrebbe colloquiare, il codice eventualmente già provato, gli errori ottenuti, le ricerche effettuate, ecc.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    51
    non posso più modificare il primo messaggio, quindi scrivo qui:

    Ho un programma che tramite una libreria, partendo da un URL mi trasforma la pagina in una rappresentazione ad oggetti che io posso poi usare come mi serve (ad esemprio estrarre informazioni). Fino a che si tratti di una pagina con un URL statico sempre uguale e di libero accesso, nessun problema, tutto funziona, io scrivo l'URL nel sorgente del mio programma e lui fa il suo lavoro, ma nel momento in cui l'URL è "nascosto" da una autenticazione necessaria per poterci arrivare io necessito prima di tutto di dover compilare questi 2 campi con nome utente e password per poter ricevere dal server l'autorizzazione a visualizzare la pagina che mi interessa insieme (eventualmente) all'indirizzo della pagina che intendo raggiungere tramite l'autenticazione.
    Supponiamo che io voglia loggarmi tramite questa pagina:
    codice:
    https://idp.studenti.polito.it/idp/x509mixed-login
    Bene... tutto qui, non ho altro da aggiungere, sulla rete non ho trovato nulla, sarà che non so bene come e cosa cercare, ho solo usato un poco la testa ed ho pensato come avrei potuto raggiungere l'obbiettivo, quel che ho fatto è scritto nel primo post (eg. wireshark), ovviamente non ho scritto nemmeno mezza riga di codice non sapendo proprio come fare.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da 9600xt
    ovviamente non ho scritto nemmeno mezza riga di codice non sapendo proprio come fare.
    La lettura di una generica pagina Web, che non necessita di login, puoi comunque iniziare a farla.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    forse ti può interessare questo: http://www.nerthase.com/blog/java-http-post-con-socket

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    51
    Originariamente inviato da alka
    La lettura di una generica pagina Web, che non necessita di login, puoi comunque iniziare a farla.
    Quella l'ho fatta, mi sono espresso male io, volevo dire che non ho scritto nemmeno una riga di codice riguardo alle pagine con login, per le pagine generiche è tutto fatto e funzionante!

    Vi metto un poco di codice visto che ne avete così bisogno :
    codice:
    Iterator<String> it = chanellsAdressesLst.iterator();
    		while (it.hasNext()) {
    			String str = it.next();
    			docsList.add(buildDocument(new URL(str)));	
    		}
    Qui scorro una lista di link alle pagine web che mi interessano, per ognuna dopo aver creato l'oggetto URL, creo l'oggetto pagina web e la aggiungo alla mia lista di documenti rappresentati ad oggetti.
    codice:
    	private void buildDatabase() {
    		
    		String channelName = null;
    		String channelPrograms = null;
    		Iterator<HTMLDocument> it = docsList.iterator();
    		while (it.hasNext()) {
    			HTMLDocument doc = it.next();
    			data = catturaData(doc);
    			channelName = catturaNomeCanale(doc);
    			channelPrograms = catturaProgrammi(doc);
    			Canale c = new Canale(channelName, channelPrograms, data);
    			channelsLst.add(c);
    		}		
    	}
    Qui invece scorro la lista dei miei documenti creata precedentemente e ne estraggo ciò che mi interessa.

    Vi assicuro che funziona, non voglio perder tempo su ciò che già ho fatto, il problema è come fare per le pagine che richiedono autenticazione, per piacere concentriamoci li!

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    51
    Originariamente inviato da Vindav
    forse ti può interessare questo: http://www.nerthase.com/blog/java-http-post-con-socket
    Forse si, adesso non ho il tempo di leggerlo con la dovuta attenzione, ti ringrazio molto, sei il primo che mi pare si sia avvicinato a centrare l'obbiettivo! Ancora grazie, appena posso leggo e vi faccio sapere!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    51
    ho finalmente potuto leggere e a quanto pare sembra proprio la strada giusta, ho anche preso il codice di sample alla fine della pagina, ho cambiato qualcosina per adattarlo alle mie esigenze ed ora sto provando a fare il login qui sul forum, ma non funziona, ecco il codice che sto usando

    codice:
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.URLEncoder;
    
    public class SocketPost {   
        public static void main (String args[]) throws Exception {
            String host         = "forum.html.it";
            int port            = 80;
            String form_action  = "member.php";
            
            String username     = "YOUR_USERNAME";
            String password     = "YOUR_PASSWORD";
            
            boolean result = login(host, port, form_action, username, password);
            if (result)
            	System.out.println("SUCCESS");
            else System.out.println("FAIL");
        }
    
        private static boolean login (String host, int port, String form_action, String username, String password) throws Exception {
            // Dati da inviare tramite POST
            // Composizione tipica:    username=TUOUSER&password=TUAPASSWORD
            String data =   URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8") + "&" + 
                            URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
            
            // Creo il Socket per la connessione all'host
            InetAddress addr = InetAddress.getByName(host);
            Socket socket = new Socket(addr, port);
    
            BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8"));
            
            wr.write("POST " + form_action + " HTTP/1.0\r\n");
            wr.write("Host: " + host + "\r\n");
            wr.write("Content-Length: " + data.length() + "\r\n");
            wr.write("\r\n");
    
            // Invio i dati tramite POST
            wr.write(data);
            wr.flush();     
            
            // Leggo la risposta dall'host
            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    
            // Solitamente, in caso di pagine di login, 
            // il codice di risposta per un login valido è 302
            if (br.readLine().equals("HTTP/1.1 302 Found")) return true;
            else return false;
            
            
        }
    }
    Credo di aver capito che oltre che i dati dell'host, della action e utente e password bisogna poi sapere come è fatta la composizione dei dati inviati al server, bene... e io come faccio a saperlo?
    Ci sono altri errori per cui potrebbe non funzionare?
    Credo proprio sia la composizione che va male, se analizzo la rete quando provo a far andare il programma catturo un pacchetto che tra le altre cose dice:
    codice:
    Bad Request. Your browser sent a request that this server could not understand

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.