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
Run Code Online (Sandbox Code Playgroud)
我有一个脚本将通过代理登录到一个网站.我试图通过向特定用户添加假代理来检查它是否有效,问题是它即使代理是假的也会登录,因此它不应该登录或发布.
我使用上面的代码来调用代理
JSoup的连接实际上是基于java.net.HttpURLConnection.这就是为什么系统代理首先对JSoup有效的原因.
方法HttpURLConnection是使用一个ProxySelector对象,它返回给定URI的所有可能的代理.
当HttpURLConnection试图连接到URL,它首先尝试连接到每个列表中的代理.如果列表中与代理的连接失败,则会尝试下一个,依此类推.但是,如果没有任何代理可以访问,则默认为直接连接.
如果您HttpURLConnection直接使用该类,则可以使用该usingProxy()方法,该方法在连接后告诉您连接是否通过代理.但由于您HttpURLConnection被包裹在一个org.jsoup.Connection对象中,因此您无法使用此方法.
总结一下:
Jsoup.connect()方法,您无法确定它是否通过代理.请注意,即使您使用真实代理,但它恰好暂时无法访问,连接也将是直接连接.如果对你来说重要的是连接将无法工作,除非它通过代理,你应该使用另一个类来连接(你可以使用HttpURLConnection或Apache HttpCore或任何适合你的工作),并确保连接通过代理,InputStream从该连接获取,并用于Jsoup.parse()解析HTML.