通过代理连接 JSoup
Connection with JSoup via proxy
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
我有一个脚本可以通过代理登录网站。
我试图通过向特定用户添加假代理来检查它是否有效,问题是即使代理是假的它也会登录,所以它不应该登录或 post.
我使用上面的代码调用代理
JSoup 的连接实际上是基于java.net.HttpURLConnection
。这就是系统代理首先对 JSoup 有效的原因。
HttpURLConnection
的工作方式是使用 ProxySelector
对象,returns 给定 URI 的所有可能代理。
当 HttpURLConnection
尝试连接到 URL 时,它首先尝试连接到列表中的每个代理。如果与列表中代理的连接失败,它将尝试下一个,依此类推。但是如果 none 的代理是可达的,它默认直接连接。
如果您直接使用 HttpURLConnection
class,您可以使用 usingProxy()
方法,该方法在连接后会告诉您连接是否通过代理.但是由于您的 HttpURLConnection
被包装在 org.jsoup.Connection
对象中,您无法使用此方法。
总结一下:
- 当你给它一个假的代理时,它不会拒绝连接。它将直接连接,无需代理。
- 使用
Jsoup.connect()
方法,您无法确定它是否通过了代理。注意,即使你使用了真正的代理,但恰好暂时无法访问,也会直接连接。
如果连接只有通过代理才能正常工作对您很重要,您应该使用不同的 class 进行连接(您可以使用 HttpURLConnection
或 Apache HttpCore
或任何适合你的东西),并在确保连接通过代理后,从该连接获取 InputStream
,并使用 Jsoup.parse()
解析 HTML.
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
我有一个脚本可以通过代理登录网站。 我试图通过向特定用户添加假代理来检查它是否有效,问题是即使代理是假的它也会登录,所以它不应该登录或 post.
我使用上面的代码调用代理
JSoup 的连接实际上是基于java.net.HttpURLConnection
。这就是系统代理首先对 JSoup 有效的原因。
HttpURLConnection
的工作方式是使用 ProxySelector
对象,returns 给定 URI 的所有可能代理。
当 HttpURLConnection
尝试连接到 URL 时,它首先尝试连接到列表中的每个代理。如果与列表中代理的连接失败,它将尝试下一个,依此类推。但是如果 none 的代理是可达的,它默认直接连接。
如果您直接使用 HttpURLConnection
class,您可以使用 usingProxy()
方法,该方法在连接后会告诉您连接是否通过代理.但是由于您的 HttpURLConnection
被包装在 org.jsoup.Connection
对象中,您无法使用此方法。
总结一下:
- 当你给它一个假的代理时,它不会拒绝连接。它将直接连接,无需代理。
- 使用
Jsoup.connect()
方法,您无法确定它是否通过了代理。注意,即使你使用了真正的代理,但恰好暂时无法访问,也会直接连接。
如果连接只有通过代理才能正常工作对您很重要,您应该使用不同的 class 进行连接(您可以使用 HttpURLConnection
或 Apache HttpCore
或任何适合你的东西),并在确保连接通过代理后,从该连接获取 InputStream
,并使用 Jsoup.parse()
解析 HTML.