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
我有一个脚本会通过代理登录网站。 我试图通过向特定用户添加假代理来检查它是否有效,问题是它即使代理是假的也会登录,因此它不应该登录或发布。
我使用上面的代码来调用代理
答案 0 :(得分:6)
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。