1

JavaでJSoupWebスクレイパーを作成しようとしている企業ネットワークに接続していますが、接続できないようです。

テストするために、次のコードを実行すると、java.netConnectExceptionが発生します。接続が拒否されました。

    Socket socket = null;
    try {
        socket = new Socket("google.com", 80)
        System.out.println("it works!");
    } finally {            
        if (socket != null) try { socket.close(); } catch(IOException e) {}
    }

ちなみに、私のJSoupコードは次のようになっています。

    Connection con = Jsoup.connect("http://en.wikipedia.org/wiki/Main_Page");
    Document doc = con.get();

単独で実行すると、TimeOut例外が発生します(十分なタイムアウトを割り当てた後でも)。ネットワーク内で機能させるにはどうすればよいですか?

4

1 に答える 1

2

解決策を見つけました。単純にプロキシを見つけて、コードに設定する必要がありました。

// if you use https, set it here too
System.setProperty("http.proxyHost", "<proxyip>"); // set proxy server
System.setProperty("http.proxyPort", "<proxyport>"); // set proxy port

Document doc = Jsoup.connect("http://your.url.here").get(); // Jsoup now connects via proxy

また、ユーザー エージェントの設定が必要になる場合もあります。「リファラー」コードはそこに残しましたが、ほとんどの場合必要ではないと思います。アクセスしているWebサーバーがマシンを差別する場合に備えて、userAgentが構成されていることに注意してください。

doc = Jsoup.connect("https://www.facebook.com/")
  .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
  .referrer("http://www.google.com")
  .get();
于 2013-02-19T16:05:05.527 に答える