如何将Tor与Java结合使用
更新了我的问题 我正在用Java构建一个爬虫系统来在线比较价格。但是,我担心我的IP地址会被禁止。所以我打算使用代理来改变IP动态或使用一些工具来自动旋转IP 很多人说TOR是一个强大的IP轮换工具。然而,我不知道如何使用Tor以及如何将Tor集成到JavaWeb应用程序中 我在谷歌上搜索了一些例子,但仍然没有找到任何有用的东西如何将Tor与Java结合使用,java,autorotate,tor,Java,Autorotate,Tor,更新了我的问题 我正在用Java构建一个爬虫系统来在线比较价格。但是,我担心我的IP地址会被禁止。所以我打算使用代理来改变IP动态或使用一些工具来自动旋转IP 很多人说TOR是一个强大的IP轮换工具。然而,我不知道如何使用Tor以及如何将Tor集成到JavaWeb应用程序中 我在谷歌上搜索了一些例子,但仍然没有找到任何有用的东西 任何人都可以帮助我。您只需要让Java在Tor服务运行时,在使用URL(使用URLConnection)进行传出HTTP连接时,在localhost:8118(8118
任何人都可以帮助我。您只需要让Java在Tor服务运行时,在使用URL(使用
URLConnection
)进行传出HTTP连接时,在localhost:8118
(8118是默认的Tor端口)使用SOCKS4代理。有关如何在Java8中使用代理的信息,请参阅
编辑:您还可以直接使用或通过轻微修改(如果它的行为完全类似于正常的本机Tor服务),但它已经有一段时间没有更新了,因此可能与最新的Tor规范不兼容
HttpClient示例:
HttpHost proxy = new HttpHost("127.0.0.1", 8118, "http");
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
HttpHost target = new HttpHost("www.google.com", 80, "http");
HttpGet req = new HttpGet("/");
System.out.println("executing request to " + target + " via " + proxy);
HttpResponse rsp = httpclient.execute(target, req);
...
} finally {
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();
}
请注意,您必须为此运行Tor服务。可能的答案太多,或者好的答案对于此格式来说太长。请添加详细信息以缩小答案集或隔离一个可以在几段中回答的问题。您好@RGraham,我感谢您的评论。我已经更新了我的问题。你能帮我吗?为什么要结束这个问题?对我来说很有用。如果我的答案对你有帮助,请勾选我的答案作为最佳答案:)嗨@Chris Dennett,我可以将Tor与HttpClient(而不是URLConnection)一起使用吗?因为我想运行多个线程?当然,请参阅此问题/答案:我如何启动Tor服务?我刚刚找到了如何在Linux上安装Tor Browser()我尝试了Rachid,结果发现它不支持获取HTTP页面:
com.subgraph.rachid.toreException:返回未在com.subgraph.rachid.socks.SocksClientTask.sendHttpPage上实现的HTTP页面(SocksClientTask.java:112)
我知道这不是因为它一般不支持HTTP,而是它不公开HTTP代理,而是公开SOCKS代理?所以我仍然应该尝试通过socks代理转发apache httpclient