1. 程式人生 > >【Window】Tor(洋蔥頭路由)+Privoxy 網路實踐(附帶Java例項程式碼)

【Window】Tor(洋蔥頭路由)+Privoxy 網路實踐(附帶Java例項程式碼)

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需要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--選項--高階--網路--連線,然後點選“設定”,進入代理設定介面。

填寫如下資訊即可
上一張效果圖

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。

相關推薦

WindowTor洋蔥路由+Privoxy 網路實踐附帶Java例項程式碼

1.背景 平時我們需要訪問onion字尾的網站,需要通過Tor(The Onion Router,洋蔥路由器)。一般來說安裝Tor Broswer就可以滿足需要。但是專案我要做的是通過程式來獲取onion網站裡面的內容。Tor官網推薦使用的是Stem來操作Tor,但是Ste

Spring使用Spring和AMQP發送接收消息

com load 設定 支持 消息發送 結果 alt 來看 接下來 講AMQP之前,先講下傳統的JMS的消息模型,JMS中主要有三個參與者:消息的生產者、消費者、傳遞消息的通道(隊列或者主題),兩種消息模型如下:通道是隊列: 通道是隊列: 通道是主題: 在JMS中,雖然

使用git將項目上傳到github最簡單方法

名稱 posit gitignore nor this strong 共享 window mas 原文地址:http://www.cnblogs.com/cxk1995/p/5800196.html 首先你需要一個github賬號,所有還沒有的話先去註冊吧! https:/

IDEA設置類註釋和方法註釋

註釋 rep col 9.png return parameter lis size ron idea和eclipse的註釋還是有一些差別的。 類頭註釋:   打開file->setting->Editor->Filr and Code Temp

MySQL通過Binary Log簡單實現數據回滾

pre mage 用途 top IT cal 時間 excel var 一、前言 對,沒錯,我又水了好一陣子,深刻反思寄幾。前段時間,工作項目上出於對excel等批量操作可能出現誤操作的問題,要求提供一個能夠根據操作批次進行數據回滾的能力。在開發的過程中接觸到了MySQL的

轉載Vue 2.x 實戰之後臺管理系統開發

null element asc 其他 就會 ans 目錄 asi all 2. 常見需求 01. 父子組件通信 a. 父 -> 子(父組件傳遞數據給子組件) 使用 props,具體查看文檔 - 使用 Prop 傳遞數據(cn.vuejs.org/v2/guide

EF 獲取類的屬性並排除特定屬性getType().GetProperties()

tom 獲取 ive IE arch type ray 參考 overflow 當獲取一個類型(class)的所有屬性時,想排除指定屬性,該如何操作? 比如:EF中一個實體類型UserEntity,通過反射獲取這個類的屬性時,想排除這個為映射的字段ID 使用以下方法即可!

windowWindows10下為PHP安裝redis擴展

5.1 windows10 span round pre pdb 安裝redis擴展 mile bin 操作: 步驟1:D:\wamp\bin\apache\apache2.4.9\bin/php.ini中添加 ; php_redis extension=php_igb

LOJ#2046. 「CQOI2016」路由

end || ++ out max using etc template 查詢 題解 題面太長無法閱讀系列…… 這裏說的選擇改變指的是在下面區間裏碰上了一個更長的可匹配的地址,如果可匹配但是匹配長度沒有當前的值大,那麽不算改變 我們建一個可持久化的trie,查詢的時候先在前

微信小程序實現微信支付功能可用

arr 必須 enc red use sam func 結束 單表 原博: https://blog.csdn.net/fredrik/article/details/79697963 微信小程序實現微信支付功能 直接把裏面的參數替換成你的就

題解[牛客網NOIP賽前集訓營-提高組第五場]A.同餘方程 位運算

#include<cstdio> #include<algorithm> using namespace std; typedef long long ll; const ll mod=998244353; ll m,l1,l2,r1,r2; ll

題解[牛客網NOIP賽前集訓營-提高組第四場]C.滅蟲 線性DP+堆優化

題目連結 #include<cstdio> #include<algorithm> #include<queue> using namespace std; const int N=3e3+10; struct node{ int

題解[牛客網NOIP賽前集訓營-提高組第四場]B.區間 亂搞

題目連結 #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; const int MAXN=1e7+10; ll a[MAXN]; int

題解[牛客網NOIP賽前集訓營-提高組第四場]A.動態點分治 模擬

題目連結 #include<cstdio> typedef long long ll; int t,find; ll l,r,k,x; int main() { //freopen("in.txt","r",stdin); scanf("%d",&a

題解[牛客網NOIP賽前集訓營-提高組第三場]C.急開鎖 博弈論+打表

題目連結 #include<cstdio> typedef long long ll; int t,k,l,r; ll len,f[4000010]; int main() { //freopen("in.txt","r",stdin); scanf("

題解[牛客網NOIP賽前集訓營-提高組第三場]B.公平競賽 bfs

題目連結 #include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespace std; inline int rea

題解[牛客網NOIP賽前集訓營-提高組第三場]A.管道維修 數學期望

題目連結 #include<cstdio> #include<algorithm> #include<cmath> using namespace std; typedef long long ll; #define re regist

題解[牛客網NOIP賽前集訓營-提高組第二場]C.集合劃分 狀壓DP

題目連結 看了題解後還是沒寫對,只能去看Komachi大佬咋寫的了。 #include<cstdio> #include<cstring> const int N=18,MX=(1<<18)+5; int n,m,k,ban[N]

題解[牛客網NOIP賽前集訓營-提高組第二場]B.分糖果 單調棧優化線性DP+容斥原理

題目連結 #include<cstdio> #define re register typedef long long ll; const int N=1e6+10; const int INF=0x3f3f3f3f; const int mod=1e9

題解[牛客網NOIP賽前集訓營-提高組第二場]A.方差 字首和

題目連結 我們把方差公式進行化簡。記 s u m