1.背景

平时我们需要访问onion后缀的网站,需要通过Tor(The Onion Router,洋葱路由器)。一般来说安装Tor Broswer就可以满足需要。但是项目我要做的是通过程序来获取onion网站里面的内容。Tor官网推荐使用的是Stem来操作Tor,但是Stem是python的库,我却对Java较为熟悉。于是就想用Tor+Privoxy搭建网络,然后在Java中使用上述的代理网络获取onion网站的数据。
一开始因为走错路(最开始在ubuntu下配置,发现都无法成功,原因未明,足足弄了一天=.=),后来转到Window下配置,发现很顺利!所以记录一下配置过程。

2.环境搭建

2.1 Tor

去Tor官网下载最新版本(https://www.torproject.org/download/download  ),如果上面的地址访问不了(被墙,你懂的),可以使用这个地址https://tor.eff.org/download/download.html.en  。下载后直接使用默认选项进行安装,这里安装目录为:C:\tor-win32-0.2.7.6。安装完后, 启动 C:\tor-win32-0.2.7.6\Tor\tor.exe

注意:
目前Tor需要VPN才能正常使用,所以启动tor.exe前先连接VPN,否则无法使用Tor网络。

2.2 Privoxy

Window平台下直接从官网下载安装包(http://www.silvester.org.uk/privoxy/Windows/3.0.23/ ),这里的安装目录为:C:\Program Files (x86)\Privoxy,安装好后打开目录下的config.txt,添加如下配置项:
forward-socks5 / localhost:9050 .
如下图所示:

其中9050是Tor默认监听端口,如果你修改了这里也得跟着修改。

此时重启Privoxy即可。这里需要注意的是,Privoxy默认使用的是8118端口。

3.使用Tor网络

3.1 在Firefox中使用

Firefox--选项--高级--网络--连接,然后点击“设置”,进入代理设置界面。


填写如下信息即可


保存后,不出意外就可以访问onion网络了。onion网站可以再这里找到:http://thehiddenwiki.org/
上一张效果图


3.2 在程序中使用

跟Firefox中同样的原理,想要在Java中使用Tor,简单的就是使用代理(之前试过Orchid,silvertunnel_ng这类框架,都没有起作用,后来就没有继续尝试,转用Privoxy,如果有朋友有可行的方案,望分享)。
直接上代码:
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
/**
 * 使用tor代理下载onion网页
 * @author nerve
 */
public class TorHttpClient {
    public static void main(String[] args) {
        // 创建HttpClientBuilder  
        HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();  
        // HttpClient  
        CloseableHttpClient closeableHttpClient = httpClientBuilder.build();  
        // 依次是代理地址,代理端口号,协议类型  
        HttpHost proxy = new HttpHost("127.0.0.1", 8118, "http");  
        RequestConfig config = RequestConfig.custom().setProxy(proxy).build();  
  
        // 请求地址  
        HttpGet httpPost = new HttpGet("http://mobil7rab6nuf7vx.onion/");  
        
        httpPost.setConfig(config);  
        try {  
            CloseableHttpResponse response = closeableHttpClient.execute(httpPost);
            HttpEntity httpEntity = response.getEntity();  
            System.out.println("response code="+response.getStatusLine().getStatusCode());
            if (httpEntity != null) {  
                // 打印响应内容  
                System.out.println("response content: \n"  
                        + EntityUtils.toString(httpEntity, "UTF-8"));  
            }  
            // 释放资源  
            closeableHttpClient.close();  
        } catch (Exception e) {  
            e.printStackTrace();  
        } 
    }

}  


引用的Jar包:

OK。


【Window】Tor(洋葱头路由)+Privoxy 网络实践(附带Java实例代码)的更多相关文章

  1. neutron网络实践

    一.虚拟机获取 ip: 用 namspace 隔离 DHCP 服务 Neutron 通过 dnsmasq 提供 DHCP 服务,而 dnsmasq 通过 Linux Network Namespace ...

  2. 洪强宁:宜信PaaS平台基于Calico的容器网络实践

    洪强宁:宜信PaaS平台基于Calico的容器网络实践   本文内容来自由七牛云主办的ECUG Con,独家授权InfoQ整理完成 容器云面临的网络挑战 在传统的IDC的架构里面网络是很重要的事情,在 ...

  3. docker 网络实践

    #docker 网络模式 环境 centos7. , Docker version -ce docker自带网络类型 bridge,host,none,container,overlay,macvla ...

  4. docker网络实践

    docker网络.md #docker 网络模式 环境 centos7.4 , Docker version 17.12.0-ce docker自带网络类型 bridge,host,none,cont ...

  5. 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

    2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...

  6. 20145215《网络对抗》Exp4 恶意代码分析

    20145215<网络对抗>Exp4 恶意代码分析 基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用 ...

  7. 20155326《网络攻防》Exp4 恶意代码分析

    20155326<网络攻防>Exp4 恶意代码分析 基础问题回答: 1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...

  8. 20145236《网络攻防》Exp4 恶意代码分析

    20145236<网络攻防>Exp4 恶意代码分析 一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些 ...

  9. 20155217《网络对抗》Exp04 恶意代码分析

    20155217<网络对抗>Exp04 恶意代码分析 实践内容 使用schtasks指令监控系统运行 使用sysmon工具监控系统运行 使用virscan分析恶意软件 使用systrace ...

随机推荐

  1. Android 上的代码阅读器 CoderBrowserHD 修改支持 go 语言代码

    我在Android上的代码阅读器用的是 https://github.com/zerob13/CoderBrowserHD 改造的版本,改造后的版本我放在 https://github.com/ghj ...

  2. spring项目中使用weblogic的连接池

    1.首先在weblogic控制台中配置好一个数据源 我这里建立的数据源的名称叫 jdbc/app1,JNDI名称也叫 jdbc/app1 2.在spring中配置数据源的时候,做如下配置: <b ...

  3. Altium designer 原理图库快速创建

    Altium designer 原理图库快速创建,原来都没发现用这个功能,最近查了一下很好用,就是通过Excel编写管脚名称再直接导入就可以了,很方便的. 1.首先在Excel创建填好对应管脚名称. ...

  4. java使用jacob将office转pdf

    1.此处代码是把office文档转换成pdf的工具类,在BS架构的产品中,我们可以使用基于JS的pdf插件显示pdf文档,但是前提IE需要按照adobe的pdf软件,对于非IE不用安装.2.可以基于f ...

  5. The Ninth Hunan Collegiate Programming Contest (2013) Problem J

    Problem J Joking with Fermat's Last Theorem Fermat's Last Theorem: no three positive integers a, b, ...

  6. bootstrap风格的multiselect插件——类似邮箱收件人样式

    在开发颗粒云邮箱的过程中,遇到了一个前端的问题,就是邮箱收件人的那个multiselect的input输入框.不仅能够多选,还要能够支持ajax搜索,把联系人搜索出来.就是类似下面的这个东西: 网上找 ...

  7. Android开发-API指南-Android简介

    Introduction to Android 英文原文:http://developer.android.com/intl/zh-cn/guide/index.html 采集日期:2014-4-16 ...

  8. 没有终结点在侦听可以接受消息的*这通常是由于不正确的地址或者 SOAP操作导致的

    引发原因:项目启动时,前端调用  wcf地址,引用的地址访问无法在 IIS Express找到导致该错误 解决方法,找出前端的web.config 查看引用的项目是什么地址开头,如   localho ...

  9. Select的深入应用(1)

    在子句中使用列的位置: 使用select语句创建新表: 在子句中使用列的别名: 注意,你的 ANSI SQL 不允许你在一个WHERE子句中引用一个别名.这是因为在WHERE代码被执行时,列值还可能没 ...

  10. PL/SQL 导入excel表格到oracle数据表

    通过使用PL/SQL 批量查询取数时,将excel中的每一列数据复制黏贴进新建的中间表,黏贴时会有贴歪的情况,也就是某些列会从第二第三行开始插入整列,导致数据乱掉,然后好像又不支持批量删除整列数据,所 ...