2017-06-07 34 views
0

任何人都知道我可以通過Java代碼發送NEWNYM信號到TOR嗎?發送NEWNYM到TOR與Java?

說我有這樣的:

 String adress = "http://some-adress"; 
     WebClient webClient = new WebClient(BrowserVersion.FIREFOX_52); 
     ProxyConfig proxyConfig = new ProxyConfig("127.0.0.1", 9150, true); 
     webClient.getOptions().setProxyConfig(proxyConfig); 

     webClient.getOptions().setJavaScriptEnabled(false); 
     webClient.getOptions().setUseInsecureSSL(true); 
     HtmlPage page = (HtmlPage)webClient.getPage(adress); 

,技術上我能做到這一點,以重新啓動應用程序,並得到一個新的身份:

 Runtime.getRuntime().exec("C:/Users/user/Desktop/Tor Browser/Browser/firefox.exe"); 

     Runtime.getRuntime().exec("TASKKILL /F /IM firefox.exe"); 

但一定要送NEWNYM方式信號,因爲以這種方式獲得與TOR的新身份相當混亂。

任何人都可以幫我嗎?

+0

我不知道TOR也很好的HtmlUnit不夠添加答案,但它看起來應該能夠製作[WebRequest](http://htmlunit.sourceforge.net/apidocs/com/gargoylesoftware/htmlunit/WebRequest.html),使用'setHTTPMethod'使其成爲NEWNYM(假設NEWNYM是HTTP動詞/方法而不是查詢參數),那麼s通過您的WebClient的WebConnection結束它 – Aaron

回答

0

HtmlUnit使用Apache HttpClient連接到服務器。

並據此answer,您可以通過直接調用做到這一點:

public static void torNewIP() throws Exception { 
    Socket socket = new Socket(); 
    socket.connect(new InetSocketAddress(TOR_IP, TOR_CONTROL_PORT)); 
    socket.getOutputStream().write(new String("SIGNAL NEWNYM\r\n").getBytes()); 
    socket.close(); 
} 

啓用後 'TOR_CONTROL_PORT'