Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Java Web Browser tramite proxy e javascript

    Salve a tutti!
    Devo fare un web browser in java che permetta all'utente di andare in rete passando attraverso uno (o forse più) proxy. Allora ho cercato in internet trovando web browser già pronti e ho aggiunto le seguenti righe per passare attraverso un proxy:

    System.getProperties().put( "proxySet", "true" );
    System.getProperties().put( "proxyHost", "123.123.123.123" );
    System.getProperties().put( "proxyPort", "8080" );


    Ho verificato su un sito che l'indirizzo fosse davvero quello del proxy e non quello del pc ed infatti così è.
    Il problema è che se vado in siti contenenti javascript o con flash, il browser avvisa che il sito necessita di javascript o flash e non mi permette di accedere al sito vero e proprio.


    La domanda quindi è: come faccio a visualizzare questi tipi d contenuti?

    Vi posto il codice del browser, tanto è breve:
    codice:
    import javax.swing.text.*;
    import javax.swing.*;
    import java.io.*;
    import java.awt.*;
    
    public class SimpleWebBrowser {
    
      public static void main(String[] args) {
        
        //Enable the properties used for proxy support
        System.getProperties().put( "proxySet", "true" );
        System.getProperties().put( "proxyHost", "123.123.123.123" );
        System.getProperties().put( "proxyPort", "8080" );
    
        // get the first URL
        String initialPage = "http://www.repubblica.it/";
        if (args.length > 0) initialPage = args[0];       
        
        // set up the editor pane
        JEditorPane jep = new JEditorPane();
        jep.setEditable(false);
        jep.addHyperlinkListener(new LinkFollower(jep));
        
        try {
          jep.setPage(initialPage);      
        }
        catch (IOException e) {
          System.err.println("Usage: java SimpleWebBrowser url"); 
          System.err.println(e);
          System.exit(-1);
        }
          
        // set up the window
        JScrollPane scrollPane = new JScrollPane(jep);     
        JFrame f = new JFrame("Simple Web Browser");
        f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        f.getContentPane().add(scrollPane);
        f.setSize(512, 342);
        f.show();
      }
    }
    La classe LinkFollower:
    codice:
    import javax.swing.*;
    import javax.swing.event.*;
     
    public class LinkFollower implements HyperlinkListener {
      private JEditorPane pane;
    
      public LinkFollower(JEditorPane pane) {
        this.pane = pane;
      }
    
      public void hyperlinkUpdate(HyperlinkEvent evt) {
        if (evt.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
          try {
            pane.setPage(evt.getURL());        
          }
          catch (Exception e) {        
          } 
        }
      }
    }

  2. #2
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    JEditorPane interpreta solo html 3.2 e un po di css quindi niente javascript e flash a meno che non ti crei un tuo componente che lo fa ma sarebbe dura
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  3. #3
    Ok, grazie della risposta e aggiungo altro: siccome presentivo questa cosa, ho cercato un web browser in SWT ed ho trovato alcuni browser. Ho provato a fargli visualizzare qualche pagina e sia javascript che flash funzionano. Il problema qui è passargli le istruzioni per il proxy. Cioè, le istruzioni che usavo sopra per impostare l'indirizzo e il port del proxy non funzionano con il caso dell' SWT browser.

    Come faccio quindi? Non ci credo che non esiste un browser con le peculiarità che mi interessano :P

    Posto anche qui il codice:

    codice:
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.browser.Browser;
    import org.eclipse.swt.browser.ProgressEvent;
    import org.eclipse.swt.browser.ProgressListener;
    import org.eclipse.swt.browser.TitleEvent;
    import org.eclipse.swt.browser.TitleListener;
    import org.eclipse.swt.layout.FillLayout;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
    
    public class Snippet159 {
    	
      public static void main(String[] args) {
        
        final String newTitle = "New Value for Title";
        Display display = new Display();
        final Shell shell = new Shell(display);
        shell.setLayout(new FillLayout());
        final Browser browser = new Browser(shell, SWT.NONE);
        browser.addTitleListener(new TitleListener() {
          public void changed(TitleEvent event) {
            System.out.println("TitleEvent: " + event.title);
            shell.setText(event.title);
          }
        });
        browser.addProgressListener(new ProgressListener() {
          public void changed(ProgressEvent event) {
          }
    
          public void completed(ProgressEvent event) {
            /*
             * Set HTML title tag using JavaScript and DOM when page has
             * been loaded
             */
            boolean result = browser.execute("document.title='" + newTitle
                + "'");
            if (!result) {
              /*
               * Script may fail or may not be supported on certain
               * platforms.
               */
              System.out.println("Script was not executed.");
            }
          }
        });
        /* Load an HTML document */
        
        browser.setUrl("http://www.google.com");
        shell.open();
        while (!shell.isDisposed()) {
          if (!display.readAndDispatch())
            display.sleep();
        }
        display.dispose();
      }
    }

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.