【问题标题】:How to use Tor combine with Java [closed]如何将 Tor 与 Java 结合使用 [关闭]
【发布时间】:2015-04-15 15:00:31
【问题描述】:

更新了我的问题

我正在用 Java 构建一个爬虫系统来在线比较价格。但是,我担心我的IP地址会被禁止。所以我打算使用代理来改变IP动态或者使用一些工具来自动旋转IP。

很多人说TOR是一个强大的IP轮换工具。但是,我不知道如何使用 Tor 以及如何将 Tor 集成到 Java Web 应用程序中?

我在 Google 上搜索过示例,但仍然找不到任何有用的内容。

任何人都可以帮助我。

【问题讨论】:

  • 可能的答案太多,或者对于这种格式来说,好的答案太长了。请添加详细信息以缩小答案范围或隔离可以在几段中回答的问题。
  • 嗨@RGraham,感谢您的评论。我已经更新了我的问题。你能帮我吗?
  • 为什么要结束这个问题?对我有用。

标签: java autorotate tor


【解决方案1】:

当 Java 使用 URL(使用 URLConnection)进行传出 HTTP 连接时,您只需让 Java 使用 SOCKS4 代理 localhost:8118(8118 是默认 Tor 端口),而 Tor 服务在跑。请参阅 here 了解如何在 Java 8 中使用代理。

编辑:还有this pure Java Tor library,您可以直接或通过小修改(如果它完全像普通的本地 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 服务。

【讨论】:

  • 如果对您有帮助,请勾选我的答案作为最佳答案:)
  • 嗨@Chris Dennett,我可以将 Tor 与 HttpClient(而不是 URLConnection)一起使用,因为我想运行多个线程吗?
  • 如何启动 Tor 服务?我刚刚找到如何在 Linux 上安装 Tor 浏览器 (torproject.org/projects/torbrowser.html.en)
  • 我试过 Orchid,发现 它不支持获取 HTTP 页面com.subgraph.orchid.TorException: Returning HTTP page not implemented at com.subgraph.orchid.socks.SocksClientTask.sendHttpPage(SocksClientTask.java:112) 我明白这不是因为它一般不支持 HTTP,但它不暴露 HTTP 代理而是 SOCKS 代理?所以我还是应该尝试通过 socks 代理转发 apache httpclient
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 2021-05-07
  • 2021-05-31
  • 2013-11-30
相关资源
最近更新 更多