2011-07-26 125 views
1

我使用代理與htmlunit,我的代理列表包含http和襪子的混合物,我不知道如果下一個選定的代理被傳遞到htmlunit是類型http或襪子,將htmlunit自動確定鍵入並使用適當的規則通過該代理連接?在HtmlUnit中設置代理

回答

1

我已經提出了一個使用代理混合的應用程序,但它是前一陣子。在該版本的HtmlUnit中,它需要明確告知代理是否是SOCKS,否則就認爲它是HTTP代理。我簡單地查看了更改日誌,並沒有發現任何信息表明它已經發生了變化,所以答案應該是否定的,如果您不告訴HtmlUnit代理是SOCKS,那麼它將假定代理是HTTP。

要檢查的代理是什麼類型的,可以使用類似:如果代碼失敗

SocketAddress addr = new InetSocketAddress("proxyAddress", port); 
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); //or Proxy.Type.SOCKS 
URL url = new URL("http://google.com"); 
URConnection conn = url.openConnection(proxy); 

(即拋出異常),則代理是最有可能死亡或襪子。 (無論如何,HtmlUnit會在第一種情況下拋出異常,或者如果您不確定代理是否存在,您可以再次使用Proxy.Type.SOCKS執行相同的測試。)

+0

你知道如何在使用htmlunit之前檢查代理類型嗎? – john

+0

我只知道試錯法;測試兩者。我會在答案上附上一個例子。 –

+0

太好了,謝謝。 – john

0

檢出Java Networking and Proxies

它討論了設置代理的多種策略。它還提供了通過代理選擇器向同一連接提供多路代理的選項。

0

另外兩個答案是關於如何在Java程序中一般使用代理,但與HtmlUnit有點不同。在Java進程上設置代理不會執行任何操作;相反,您希望模擬瀏覽器使用代理。

int myProxyPort=8080; 
WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_8, "myproxyhost.com", myProxyPort); 
0

此框架檢測代理類型,爲您和實例化一個的HtmlUnit Web客戶端與正確的襪子給你/ HTTP/HTTPS代理配置:維持其代理的時候https://github.com/subes/invesdwin-webproxy

本質上,它可以自動試用&錯誤做法清單給你。所以你不必擔心你自己的代碼。