Java:使用TOR作为代理

时间:2016-07-07 00:15:03

标签: java proxy tor

我试图在我的Java应用程序中使用TOR作为代理。这是我用于测试的基本代码:

SocketAddress sockAddr = new InetSocketAddress("localhost",9050);
        Proxy proxy = new Proxy(Proxy.Type.SOCKS,sockAddr);
        URL url = new URL("https://check.torproject.org/");
        //URL url = new URL("https://api.ipify.org/");
        url.openConnection(proxy);
        InputStream in = url.openStream();
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        byte[] stuff = new byte[1024];
        int readBytes = 0;
        while((readBytes = in.read(stuff))>0) {
            bout.write(stuff,0,readBytes);
        }
        byte[] result = bout.toByteArray();
        System.out.print(new String(result));

结果字符串是 -

<!doctype html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>

  Sorry. You are not using Tor.
</title>
<link rel="icon" type="image/x-icon" href="/torcheck/img/tor-off.png" />

(删除其余部分,因为它不相关)。 Tor服务正在我的电脑上运行

tcp        0      0 localhost:9050          *:*                     LISTEN 

出了什么问题?

**** **** UPDATE

好吧,所以我通过对代码进行微小改动来实现它。

InputStream in = url.openConnection(proxy).getInputStream();

代码在调用openConnection(Proxy)的URL对象上调用openStream(),而不是在打开连接后调用getInputStream()。 这肯定是有效的,因为TOR状态页面现在告诉我我已连接,IP地址页面给了我一个不属于我自己的地址,我甚至可以从洋葱页面读取数据。

但是,我不明白为什么之前没有工作。 Aren这两个代码完全相同吗?

0 个答案:

没有答案