1. 程式人生 > >HTTP Tunnel使用的幾種使用(經典)

HTTP Tunnel使用的幾種使用(經典)

公司的網路該封的都封了, 今天看到有這麼個軟體, 雖然沒有用過, 覺得不一定哪天就用了, 所以收藏到這裡.

基本概念不多解釋了,直入主題。GNU HTTP Tunnel (http://www.nocrew.org/software/httptunnel.html)是一個開源的http-tunnel專案,包括了tunnel server(hts命令)和tunnel client(htc命令),有(x)nix和windows版本。我們就用它來建立自己的tunnel。
1。靜態tunnel。
        http-tunnel是一個完全透明的通道,直接將你的連線forward給目標服務埠,因此當你連線tunnel的本地偵聽埠時,就相當於直接連線到目標服務埠。例如你要建立一條可以訪問外部POP3伺服器的隧道,可以建立如下連線:

                    htc  ------------> http proxy ------------------------> hts ------------------------------> POP3 serve
        (localhost:8888)             (proxyhost:3128)       (tunnelserver:80)                           (pop3server:110)
在你自己的機器上執行htc,外部充當tunnel server的機器上的80埠執行hts,htc將資料打包成http請求,通過proxy連線到hts,hts解包後將連線forward給POP3伺服器。命令如下:
      在tunnel server機器上:
            hts --forward-port pop3server:110 80       
            (將pop3server替換成實際的IP)
      在本地機器上:
            htc --forward-port 8888 --proxy proxyhost:3128 tunnelserver:80 
            (將proxyhost和tunnelserver替換成實際的IP)

      通過這樣的配置,你可以用Outlook或Foxmail連線本機的8888埠,就相當於直接連線到POP3伺服器了。

2。動態的tunnel。
        上面建立了一條可以訪問POP3服務的隧道,但缺點是隻能訪問某一個指定的POP3伺服器,要訪問其他的伺服器還得按同樣的方法再建立一條隧道,很不方 便。既然hts可以將連線forward給POP3伺服器,那讓它forward給一個SOCKS5服務,不是就可以實現動態的tunnel,可以連線任 意服務了嗎?yeah!沒錯!我們建立這樣的連線:

                    htc  ------------> http proxy ------------------------> hts ------------------------------> SOCKS5 serve
        (localhost:8888)             (proxyhost:3128)       (tunnelserver:80)                           (socks5server:1080)

命令就不說了,照第一點改一下就行。這樣就相當於在localhost:8888運行了一個SOCKS5服務,設定一下你的網路程式(Outlook,NetAnt,FlashGet,QQ......),讓他們通過SOCK5訪問網路,就OK了。

3。利用http proxy的CONNECT支援。
        大多數http proxy支援CONNECT命令,但一般只支援CONNECT到外部伺服器的443(https)埠。這是為了允許訪問外部的https服務。由於 porxy對於CONNECT的連線是直接轉發,不做任何分析處理或快取,所以利用CONNECT可以獲得比較快的速度。
        由於hts和htc不支援CONNECT連線,我們可以使用另一個專門支援CONNECT的程式DesProxy 
http://desproxy.sourceforge.net
來建立一個tunnel。由於使用CONNECT建立了直接的TCP連線,不需要將資料按http格式打包和解包,所以連tunnel server也不需要了,只需要在你原來執行hts機器上執行一個SOCKS5就行了,連線如下:

              desproxy  -------------> http proxy ----------------------> SOCKS5 server
         (localhost:8888)           (proxyhost:3128)                    (tunnelserver:443)

        desproxy命令的用法:
             desproxy remote_host remote_port proxy_host proxy_port local_port
       在這裡remot_host,remote_port就是tunnelserver:443,proxy_host,proxy_port是porxyhost:3128,local_port就是8888。

        注意必須把SOCKS5執行在443埠,如果執行在其他埠的話,CONNECT請求會被http proxy拒絕。同樣,我們在localhost:8888得到了一個可以訪問外部的SOCK5服務。

4。最簡單,最安全而且快速的方式:利用SSH + CONNECT。
       實際上SSH提供了SOCKS5的功能,利用ssh客戶端或PuTTY可以在本地建立一個SOCKS5服務,而且PuTTY也直接支援http proxy,最大的好處是ssh的資料連線是加密的,保證了資料的安全。使用ssh的連線如下:
         PuTTY(或plink) ------------> http  proxy  ---------------------> ssh server
      (localhost:8888)                 (proxyhost:3128)                     (tunnelserver:443->22)
     首先我們要讓ssh server在443埠偵聽,ssh預設埠是22,我們可以修改ssh的配置,或用iptables將443埠重定向到22埠,服務端的配置就 OK了。然後在PuTTY建立一個new session,填上ssh伺服器的ip和port;在"Connection->Proxy"頁,填上http proxy的ip和port;在"SSH -> Tunnels"頁,"Source port"填本地的埠,在這裡我們用8888",Destination"選"Dynamic",按"Add"將這個forward port加上,就OK了。配置完成後,用PuTTY登陸上ssh,用netstat -an可以看到PuTTY已經在localhost:8888偵聽了,這是一個SOCKS5服務,下面改怎麼用,就不用我羅嗦了吧:-)。另外在 "SSH"頁,可以根據要求選擇"Protocol options"。儲存session後,也可以用命令列的plink命令來利用這個session:
       plink -load session_name           (session_name就是session儲存的名稱)
登陸後效果也一樣。

相關推薦

HTTP Tunnel使用的使用經典

公司的網路該封的都封了, 今天看到有這麼個軟體, 雖然沒有用過, 覺得不一定哪天就用了, 所以收藏到這裡.基本概念不多解釋了,直入主題。GNU HTTP Tunnel (http://www.nocrew.org/software/httptunnel.html)是一個開源的http-tunnel專案,包括了

前端面試題二十五http請求方法用途?

刪除 資源 會有 位置 應用層 trac 但是 激發 .get 1.GET方法發送一個請求來取得服務器上某一資源2.POST方法向URL指定的資源提交數據或附加新的數據3.PUT方法跟POST方法很像,也是向服務器提交數據,但是,他們之間有不同,put指定了資源在服務器上所

SSH免登陸ESXI讓操作更便捷安全常用工具

esxi vmware ssh工具 免登陸 授權訪問通常在企業環境中,管理員很少去機房在物理機面前進行操作,大部分管理員喜歡遠程管理主機,這樣既方便又高效。在windows上我們使用遠程桌面,在Linux上則使用SSH來連接。ESXi就是一個以Linux為核心改寫的操作系統,因此ESXi中也保留了SSH

HTTP代理原理以及HTTP隧道技術經典

                通過HTTP協議與代理伺服器建立連線,協議信令中包含要連線到的遠端主機的IP和埠號,如果有需要身份驗證的話還需要加上授權資訊,伺服器收到信令後首先進行身份驗證,通過後便與遠端主機建立連線,連線成功之後會返回給客戶端200,表示驗證通過,就這麼簡單,下面是具體的信令格式:CONN

Winform遍歷視窗的所有控制元件方式實現

C#遍歷窗體所有控制元件或某型別所有控制元件 //遍歷窗體所有控制元件, foreach (Control control in this.Controls) { //遍歷後的操作... control.Enabled = false; } 遍歷某個panel的所有控制元件

序列式容器List之初始化及其不支援隨機訪問形式

#include <list> #include <iostream> #include <algorithm> using namespace std; voi

CO-PRIME初探 莫比烏斯NYOJ1066經典gcda,b=1

put size 兩個 test hat ott == clas otto CO-PRIME 時間限制:1000 ms | 內存限制:65535 KB 難度:3 描寫敘述 This problem is so easy! Can you solve it

使用Jmeter進行http接口測試轉載

監聽 默認值 htm 實時 ins 一起 get clas dex 前言:   本文主要針對http接口進行測試,使用Jmeter工具實現。   Jmter工具設計之初是用於做性能測試的,它在實現對各種接口的調用方面已經做的比較成熟,因此,本次直接使用Jmeter工具來完成

HTTP模塊理解

在服務器 服務 客戶端 問題 抽象 mar 應用 pre node.js 這是我在寫,用express+ajax+swig來做一個簡單的應用的時候,遇到的問題。還是不太理解http模塊。 後來在網上看到雲棲社區的一篇《Node.js之HTTP請求與響應》,這裏做簡單的總結。

POJ3728The merchant (倍增)LCADP經典||並查集壓縮路徑?

城市 contain 分析 之間 pat rst .com span 題解 There are N cities in a country, and there is one and only one simple path between each pair of c

http協議進階代理

http協議 pan 設備 廣告 自動 中間 new 邏輯 反向 web代理服務器是網絡的中間實體,位於客戶端和服務器之間,扮演“中間人”的角色,作用是在各端點之間來回傳送報文。 其原理是:客戶端向代理服務器發送請求報文,代理服務器正確的處理請求和連接,然後返回響應;同時代

經典TCP粘包分析

分配 網絡通訊 有一種 解析 全部 簡單 進程 影響 大小 一 .兩個簡單概念長連接與短連接:1.長連接 Client方與Server方先建立通訊連接,連接建立後不斷開, 然後再進行報文發送和接收。 2.短連接 Client方與Server每進行一次報文收發

Jmeter源碼之HTTP Request Sampler分析

Jmeter界面: 數據:{HTTPsampler.Arguments == {"loginProtectStatus": $ {loginProtectStatus},"password": "${movepassword}"}(),TestEle

SpringMvc4.2.5 零配置出現 No mapping found for HTTP request with URI

內容 log4j2 ces intern over utf-8 sin name spring配置 原文地址:SpringMvc4.2.5 零配置出現 No mapping found for HTTP request with URI 采用 spring 零配置,參

hdu 2126 Buy the souvenirs 【輸出方案數】【01背包】經典

continue with election i++ targe ref https contest col 題目鏈接:https://vjudge.net/contest/103424#problem/K 題目大意: 給n個物品,和m塊錢,輸出能夠購買最多物品的個數和購買

Poj - 3254 Corn Fields 【狀壓DP】經典

初始化 include str 結果 沖突 += poj ota scanf 題目鏈接:https://vjudge.net/contest/224636#problem/G 轉載於:https://blog.csdn.net/harrypoirot/article/det

hdu 2167 方格取數 【狀壓dp】經典

取出 fff ack 分析 題目 經典 gets bsp ets <題目鏈接> 題目大意: 給出一些數字組成的n*n階矩陣,這些數字都在[10,99]內,並且這個矩陣的 3<=n<=15,從這個矩陣中隨機取出一些數字,在取完某個數字後,該數字周圍8

HTTP協議學習筆記

代碼 是什麽 就會 無法 並不是 同時 mailto 特征 現實 HTTP協議學習筆記(一) 1.HTTP協議用於客戶端和服務端之間的通信 客戶端:請求訪問文本或圖像等資源的一端服務端:提供資源響應的一端 在兩臺計算機之間使用HTTP協議通信時,在一條通信線路上

HTTP協議學習筆記

HTTP協議學習筆記(三) 1.狀態碼告知從伺服器端返回的請求結果 狀態碼的職責是當客戶端向服務端向服務端傳送請求時,描述返回的請求結果。藉助狀態碼,使用者可以知道服務端是正常處理了請求,還是出現了錯誤。 狀態碼由3位數字和原因短語組成。如200 OK 狀態碼的類別:    

HTTP協議學習筆記

 HTTP協議學習筆記(二)   1.HTTP報文 HTTP報文:用於HTTP協議互動的資訊。請求報文:請求端(客戶端)的HTTP報文叫做請求報文。響應報文:響應端(服務端)的HTTP報文叫做響應報文。 HTTP報文大致可分為報文首部和報文主體兩塊。兩者最初由空行(CR+LF)來劃