使用 Java 发送 Tor NEWNYM 请求
Send Tor NEWNYM request using Java
我的应用程序成功使用了 Tor,但我想发送 NEWNYM 请求以获取新身份。我可以终止并重新启动进程,或者可能使用 shell 脚本,但我更愿意使用原生 Java.
有一个 Python solution,但我不太确定如何将它映射到 Java 连接类型。我想它与我的 Tor HTTP 代码非常相似,但我对 Java 连接类型不够熟悉,无法实现它。
// My starter code.
public static String torNewIP() throws Exception {
Proxy proxy = new Proxy(Proxy.Type.HTTP,
new InetSocketAddress(TOR_IP, TOR_CONTROL_PORT));
// This is how I open a web page using Tor, but the control
// port is probably not HTTP.
// HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
// connection.connect();
// Something like connection.send("NEWNYM");
}
仔细检查以确保 Tor 运行 带有选项 ControlPort [TOR_CONTROL_PORT]
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();
}
不完全确定原因,但可能需要一些时间才能按预期运行 - 也许是 10 分钟的 IP 轮换。抱歉,我无法提供更好的细节,但它对我有用。
我的应用程序成功使用了 Tor,但我想发送 NEWNYM 请求以获取新身份。我可以终止并重新启动进程,或者可能使用 shell 脚本,但我更愿意使用原生 Java.
有一个 Python solution,但我不太确定如何将它映射到 Java 连接类型。我想它与我的 Tor HTTP 代码非常相似,但我对 Java 连接类型不够熟悉,无法实现它。
// My starter code.
public static String torNewIP() throws Exception {
Proxy proxy = new Proxy(Proxy.Type.HTTP,
new InetSocketAddress(TOR_IP, TOR_CONTROL_PORT));
// This is how I open a web page using Tor, but the control
// port is probably not HTTP.
// HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
// connection.connect();
// Something like connection.send("NEWNYM");
}
仔细检查以确保 Tor 运行 带有选项 ControlPort [TOR_CONTROL_PORT]
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();
}
不完全确定原因,但可能需要一些时间才能按预期运行 - 也许是 10 分钟的 IP 轮换。抱歉,我无法提供更好的细节,但它对我有用。