Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    6

    estrarre una pagina web che usa javascript

    salve,
    sto scrivendo un programmino in java che deve estrarre il codice HTML dal un URL.
    L'URL in questione è
    Link

    ecco il codice incriminato:

    URLConnection connection;
    HttpURLConnection httpConnection;
    URL url = new URL(...);
    connection = url.openConnection();
    httpConnection = (HttpURLConnection) connection;
    input=httpConnection.getInputStream();
    br = new BufferedReader(new InputStreamReader(input, "iso-8859-1"));

    while( (strTemp = br.readLine()) != null) {
    strTotale += strTemp + "\n";
    }

    questo è una parte del messaggio che mi viene visualizzato da questo codice java:
    Per poter continuare, lo scripting deve essere attivato.
    A tale scopo apporta alcune semplici modifiche alle impostazioni del browser.

    ora,come faccio ad attivare lo scripting?
    ho provato da inserire comandi del genere
    httpConnection.setRequestProperty("Accept", "application/x-javascript");
    ma non sono riuscito a trovare una soluzione.

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: estrarre una pagina web che usa javascript

    Originariamente inviato da tdepace
    ora,come faccio ad attivare lo scripting?
    ho provato da inserire comandi del genere
    httpConnection.setRequestProperty("Accept", "application/x-javascript");
    No, così non funziona (e non avrebbe nemmeno molto senso). E purtroppo è più complicato di quanto credi.

    Il problema è che la pagina che scarichi utilizza Javascript affinché il browser imposti un cookie in modo che indichi che Javascript è attivo (altrimenti la riga Javascript che imposta il cookie non l'avrebbe eseguita!). Poi carica una nuova pagina.

    Nella pagina che scarichi c'è questo pezzo di codice:
    codice:
    <SCRIPT TYPE="text/javascript">
    <!--
    	var d, u, s;
    	d = new Date();
    	s="";
    	u = "/pub/agent.dll?qscr=cmsh&subm= ......blablabla......;
    
    
    
    	document.cookie = "jscript=1; path=/; domain=.expedia.it;";
    
    	window.location.replace(u);
    //-->
    </SCRIPT>
    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
    Jan 2008
    Messaggi
    6
    ho provato ad usare quel link che mi dici tu ma purtroppo non funziona,mi ridà la stessa pagina (senza il link stavolta...)

    qual'era l'altra soluzione più complicata?

    Grazie!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da tdepace
    ho provato ad usare quel link che mi dici tu ma purtroppo non funziona,mi ridà la stessa pagina (senza il link stavolta...)
    Perché come ho detto ci sono i cookie da tenere in considerazione.
    La prima pagina che scarichi presuppone che sia il browser ad impostare un certo cookie per dire alla successiva pagina caricata "guarda che Javascript è attivo".

    Quindi dovresti "mimare" tu questo comportamento. Puoi impostare tu da Java un cookie nella request e caricare direttamente la pagina successiva. Per inviare dei cookie devi impostare nella request l'header Cookie.

    conn.setRequestProperty ("Cookie", ".......blabla......");
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    6
    ho provato questa riga connection.setRequestProperty("Cookie", cookie);
    String cookie=new String("jscript=1; path=/; domain=.expedia.it;");

    cambiando il contenuto della stringa,lasciando solo jscript o solo domani e via dicendo, non funziona...


  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da tdepace
    ho provato questa riga connection.setRequestProperty("Cookie", cookie);
    String cookie=new String("jscript=1; path=/; domain=.expedia.it;");

    cambiando il contenuto della stringa,lasciando solo jscript o solo domani e via dicendo, non funziona...
    Chiaramente prima devi comporre la stringa, poi devi passarla a setRequestProperty(). E comunque devi farlo prima di fare la getInputStream().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    6
    si,lo facevo prima del getinput.
    che intendi per comporre la stringa?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da tdepace
    che intendi per comporre la stringa?
    No, nel senso che nel post sopra hai fatto prima la setRequestProperty() poi dopo hai definito la stringa del cookie. A meno che tu abbia sbagliato a postare, ovviamente va fatto il contrario.
    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
    Jan 2008
    Messaggi
    6
    certo,naturalmente ho fatto il contrario,ho semplicemente incollato male il codice... in tutti i casi continua a nn funzionare

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da tdepace
    certo,naturalmente ho fatto il contrario,ho semplicemente incollato male il codice... in tutti i casi continua a nn funzionare
    In effetti ho verificato meglio la response fornita dalla prima pagina. Il server invia al client 4 cookie tramite l'header Set-Cookie.

    In sostanza vuol dire che devi prima fare la request alla prima pagina, ricevere i cookie prelevandoli usando i metodi getHeaderXXX() (vedi la documentazione), modificare quel cookie che indica lo stato di Javascript, quindi fare la request alla seconda pagina inviando gli header dei cookie con addRequestProperty() (perché devi inviare più header con lo stesso nome "Cookie").

    È noioso ... lo so.
    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.