轉載自:http://www.bzfshop.net/article/201.html
最近在廣州批發市場附近住,出租屋只能安裝長城寬帶(壟斷,不允許 電信、聯通進來),沒得選擇(當然,可以選擇不上網)。
用了幾天發現上網速度極差,上淘寶之類經常出現您的登陸異常,或者訪問出錯之類,有時候連 Baidu 都打不開。做了一番網絡檢查和分析,長城寬帶實在是太無恥了,居然同時做 DNS 劫持 和 HTTP 劫持。還好我是做技術的,這種把戲難不倒我,下面是記錄怎么突破 長城寬帶 的這些劫持,實現正常上網的方法。
1. DNS 劫持
什么是 DNS 劫持?
就是,比如你訪問 www.baidu.com ,它的DNS給你解析到一個它自己的 IP 211.162.61.236 ,這個 IP 地址給你彈出一個廣告,然后給你 iframe 輸出 百度,於是不管你上什么網站都嘩啦啦的出來一片廣告。更甚至,它把地址解析到一個有問題的IP上面,你就徹底上不了這個網站了。
DNS 劫持 處理起來也容易,我用的是一個普通路由器,在路由器里面設置一下就可以了,如下圖:
登陸你的路由器(xxx-Link 的設置都差不多), 網絡參數 —>WAN 口設置 —> 高級設置 手動設置DNS服務器,設為 114.114.114.114 就可以了。
在這里可以去百度一些公共的dns服務器去設置
2. HTTP 劫持
我操長城寬帶xxxxx(由於政策原因,部分內容不予以顯示),這是我第一次見過居然做 http 劫持的運營商(好吧,我之前只用過 電信、聯通的寬帶)。
什么是 HTTP 劫持?
就是,比如你訪問 www.baidu.com , DNS 解析是正確的指向了 Baidu 的 IP 地址,但是你訪問的時候會發現收到一個Redirect跳轉,然后讓你去了另外一個服務器,這個服務器提供了百度頁面給你。
為什么要這么做呢?
中國上網骨干線路基本上都是電信、聯通,像長城寬帶這種公司,他們也是租用電信、聯通的線路,然后再把這些線路 “二次銷售” 給你。比如它從 電信租了個 100MB 的線路,然后來你們小區,給你們每家安裝一個 10MB 的寬帶,總共安裝了 200 家。 看出問題來了嗎? 10MB x 200 家 = 2000 MB 寬帶,但是它們其實只買了 100MB 的電信寬帶, 看出問題來了吧,你們的所謂 10MB 其實是縮水打折版的。
如果帶寬差了這么多,這樣訪問豈不是很慢?是的,很慢,非常慢。於是它們就要想法子了啊,不然網速太慢你們來朝他要退款怎么辦呢。法子很簡單,它們 自己搭建一個 “緩存服務器”,這 200 家人, 你會上百度、隔壁也會上百度, 你會到新浪去看新聞,隔壁也會到新浪去看新聞, 於是 只要第一個人訪問 百度,它把頁面保存到這個緩存服務器上, 當第二個人也訪問百度的時候,它壓根不去訪問百度,而是讓你去訪問緩存服務器,這樣 “第二個感覺網絡好快啊”, 因為他壓根訪問的就不是百度,而是緩存。
- 搭建一個緩存服務器,用戶只要訪問過的網站都保存下來
- 所有用戶上網,一律 劫持HTTP 訪問,讓用戶訪問緩存服務器,而不是真實的網站
- 第一個用戶訪問 Baidu,被劫持到 緩存服務器, 緩存服務器抓取百度頁面,返回給這個用戶,同時服務器自身也保存一份
- 第二個用戶訪問 Baidu,被劫持到 緩存服務器,緩存服務器直接返回 緩存的百度頁面就可以了
- 第三個用戶訪問 Baidu, ………….
從上面的方法你可以看到,他 100MB 帶寬就可以為你們 200 家服務了,因為你們壓根沒上網,而是訪問它的緩存。而我遇到的情況更糟糕,他們的緩存服務器緩存沒做好,緩存了不該緩存的東西,同時狀態更新也不正確,結 果就是 上淘寶 動不動就 “登陸非法” “狀態非法” “服務器出錯” … 我操xxxxx(由於政策原因,部分內容不予以顯示)
我們做電商的,淘寶訪問不正常等於殺了我們, 得想轍!
我用 Firefox + HttpFox 監控網絡訪問請求,發現只有 http 會被劫持,其它比如vpn, ssh, qq … 都不會被劫持,看來長城寬帶的技術也是小白級別的,還好。
解決方法 ——– 翻牆
因為長城寬帶只對 http 訪問做劫持,所以解決方法也容易,就是我們上午在長城快帶這段別走 http 協議,使用 VPN 或者 SSH 通道出去,這樣由於是加密數據,長城寬帶沒法解析加密數據,也就沒法劫持我們了。還好我們做電商的,有自己的服務器,所有也就有自己的 SSH 賬號,用 SSH 通道最容易。
之前的網絡訪問:
你的電腦 http 請求 —— 長城寬帶 劫持 —-> 長城寬帶的緩存服務器 —–> www.baidu.com
解決之后的網絡訪問:
你的電腦 http 請求 —— MyEnTunnel SSH 加密通道 — 長城寬帶 無法劫持 —–> 你的 SSH 服務器 —-> www.baidu.com
注意:使用本文方法前提是,你有一個自己的 SSH 服務器(Linux 服務器),或者最起碼有一個可以用的 SSH 賬號,否則下面走不下去。
1. 下載 MyEnTunnel
下載地址自己 Google / Baidu,我就不貼了
2. 安裝,配置 MyEnTunnel ,如下圖配置
3. 連接 SSH ,看到下面的消息表明你的 SSH 通道建立成功了。如果不成功,請檢查你的 SSH 配置是否正確(用戶名密碼對不對,端口設置對不對)
4. SSH 通道建立之后,等於有了一個可以使用的 Socket v5 代理,現在你需要做的是讓你的瀏覽器使用這個代理
Firefox 可以使用 Fox Proxy 插件, Chrome 可以使用 Proxy SwitchySharp 插件, 這些自己安裝就行。
下面是 Firefox 使用 Fox Proxy 的配置,給這個配置取名叫 “SSH” 下面的啟用里面就會有 “SSH” 可以選擇:
5. 啟用 Fox Proxy ,注意:上面給這個配置取名 “SSH” , 所以才有這個 SSH 選項
有了這些配置,現在打開你的瀏覽器,訪問 ip138,看看 IP 地址是不是已經變成 SSH 服務器的地址了?
到此為止,你成功實現了 “翻X牆”,長城寬帶 也無法劫持你的 HTTP 請求了,而你可以順暢的使用真正的帶寬, 而不是長城寬帶的那個問題多多的緩存服務器了