5

JSoupを使用して、ステージングサーバー上にあるいくつかのページをスクレイプしようとしています。ブラウザでステージングサーバーのページを表示するには、VPNに接続する必要があります。

VPNに接続していますが、JSoupを使用してページをスクレイプしようとすると、タイムアウトが発生します。プログラムでVPN接続を使用するにはどうすればよいですか。それとも、私が考えていない何かがここにありますか?

注:プログラムの別の部分でもHttpClientを使用しています。JSoupとHttpClientの両方がVPN/プロキシを使用するように、プログラムが初期化されたらVPN/プロキシに接続するようにプログラムを設定する方法はありますか。

ありがとう

4

3 に答える 3

9

プロキシのJavaプロパティを設定できます。

// 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サイトを文字列にダウンロードして、解析します。

final URL website = new URL("http://your.url.here"); // The website you want to connect

// -- Setup connection through proxy
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("<proxyserver>", 1234)); // set proxy server and port
HttpURLConnection httpUrlConnetion = (HttpURLConnection) website.openConnection(proxy);
httpUrlConnetion.connect();

// -- Download the website into a buffer
BufferedReader br = new BufferedReader(new InputStreamReader(httpUrlConnetion.getInputStream()));
StringBuilder buffer = new StringBuilder();
String str;

while( (str = br.readLine()) != null )
{
    buffer.append(str);
}

// -- Parse the buffer with Jsoup
Document doc = Jsoup.parse(buffer.toString());

HttpClientこのソリューションにも使用できます。

于 2013-02-05T19:47:53.263 に答える
6

バージョン1.9以降、接続で設定できます:https ://jsoup.org/apidocs/org/jsoup/Connection.html#proxy-java.net.Proxy-

JSoup.connect("http://your.url.here").proxy("<proxy-host>", <proxy-port>).get();
于 2016-09-07T10:28:00.513 に答える
3

プロキシにユーザー名/パスワード認証が必要な場合にolloに追加します。

final String authUser = <username>;
final String authPassword = <password>;
Authenticator.setDefault(
   new Authenticator() {
      public PasswordAuthentication getPasswordAuthentication() {
         return new PasswordAuthentication(
               authUser, authPassword.toCharArray());
      }
   }
);

System.setProperty("http.proxyHost", <yourproxyhost>);
System.setProperty("http.proxyPort", <yourproxyport>);
System.setProperty("http.proxyUser", authUser);
System.setProperty("http.proxyPassword", authPassword);

Document doc = Jsoup.connect("http://your.url.here").get();
于 2013-12-27T06:44:47.810 に答える