2017-06-07 13 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'