查閱各大網路技術討論區,翻牆一定是人氣歷久不衰的熱門話題。翻牆是存取特定區域網路資源的常見手段,舉凡突破公司網管限制偷上臉書、或是讓封包潛逃出境瀏覽特定網站,是應用相當廣泛的一種跳板概念。
快速瀏覽:
談到跳板,大家的印象多是透過自由門之類的軟體來突破網管限制,拜訪本來受管制的網站,簡單的說就是偽造目的地,讓防火牆不知道你要去哪裡。其實從另一個角度看,跳板還有隱藏出發地的效果,比如翻到美國看Hulu、連到中國抓優酷等,是藉由變更身份來存取某些「地域限定」網站的好方法。
套用到真實世界的情境裡,這個動作就好像應付海關一樣,藉由偽造目的地及出發地來潛逃出境及順利入境。偽造目的地很簡單,變更身份也不困難,但要變成特定身份就得花點功夫。當然了,這裡的身份並不是指你在網路上公開的帳號、暱稱或是其它資訊,而是網際網路上用來識別對方的最基本資訊:IP位址。
我們常會見到討論區上出現「請問要怎麼更改電腦IP」之類的奇怪問題,其實只要有點基礎常識都知道,Mac Address可以隨意假造,公開的IP位址卻是指定不來的,因為網際網路位址是由一層又一層的網路服務供應商所分配,不可能下載了某個軟體就能自行修改,這時候就只能透過跳版來掩飾自己的真正故鄉。因此,該如何選擇合適的跳板才是問題重點。
VPN成本門檻高
在翻牆應用裡,透過VPN及代理伺服器(Proxy)來當跳板是最常見的2種作法。VPN原本的用意是拿來架設虛擬私人網路,在網際網路上的2個端點間建立通道來存取端點內的區網,只是因為它同時具備再從區網匣道連出的特性,所以就衍生了跳板這種副產品。
VPN的特色是快、安全性高、比Proxy更穩定可靠,同時也有一定的進入門檻。自己架VPN並不困難,但是要架在國外才有意義啊!這時候要不是得考驗人脈,就是得支付一定的月租費用。
針對跳版應用,網路上有不少VPN帳號供應商有提供類似服務,它的運作方式是這樣的:首先必需有帳號來連上VPN伺服器,進入伺服器後,本地端電腦的對外位址便會成為VPN伺服器的位址。此時VPN扮演的是通道的角色,除非特別設定路由,不然電腦對外的所有連線都會由這個通道進出,自然也就達到了連線的匿蹤效果。
由於是收費的服務,業者通常會準備不同國家的伺服器讓客戶選擇,要求不高的玩家大可使用免費版本,能偽裝的身份當然就比較少。VPN因為對頻寬水準要求高,伺服器大多集中在高速網路骨幹密集的國家,加上應用面偏於存取特定資源,地域性非常重,比如把VPN設在美國絕對比設在柬埔寨有意義。
▲以「strongvpn.com」的服務為例,依伺服器多寡及租用時間會有不同的價格方案。
Proxy站台選擇多
代理伺服器通常被用來當成資料的快取節點,白話一點就是讓本地端電腦在上網下載資料時不必跑太遠,是種同時能節省頻寬及時間的資料傳遞方式。它同時也可身兼防火牆,管控節點內的對外連線、以及保護電腦免於直接與外界接觸,後者也是讓它成為熱門跳板媒介的主要原因。
相較於VPN,代理伺服器在跳板應用上其實差別不大,最主要的優勢是站台非常多。也因為它的原始架設目的多是為了提升低速節點間的存取效率,在一般網路資源比較冷門的區域也能找到不少,套用筆者上一段的敘述,你能在柬埔寨找到非常多的「無料」代理伺服器站台,卻連想覓得需收費的VPN都不太可能。
然而,好找歸好找,代理伺服器在使用上並不如VPN來得單純。VPN只要連線建立後,通常不會有太大的破綻,代理伺服器卻會因連線類型的差異而產生不同的潛在陷阱。比如在部分玩家的認知裡,可能會以為代理伺服器只能用來轉送HTTP連線?事實上不只網頁可以翻牆,Telnet、FTP、甚至是IM通訊軟體都能透過它來繞路,只要不介意安全性的話,犧牲一點效能跟穩定性就能無所不達。
依照協議,代理伺服器可粗分為幾種類型,就本篇文章所重的主題而言,以下三樣是比較核心的應用基礎:
HTTP代理伺服器
最常見的代理伺服器類型,用來快取網頁內容及過濾網址存取,網路上能找到的代理伺服器多屬此類。
Socks代理伺服器
翻牆軟體常用的代理類型。因為我們不只會透過瀏覽器上網,可能還會開啟Skype、線上遊戲或使用其它不同網路協議的軟體,透過Socks代理,這些應用將會被一視同仁。
由於Socks代理傳送的內容只是很單純的資料封包,是透過OSI較底層、也就是第五層的會話層來傳送,速度也會比位於第七層的應用層協議(比如HTTP、FTP)快上不少。
Telnet代理伺服器
隨著SSH應用已經非常成熟,Telnet代理現在已經非常少見了,提出來只是因為有趣。早期的Hinet電子郵件支援透過Telnet操控,具體作法就是連上msx.hinet.net主機來操作郵件伺服器,對電子郵件協定熟悉的使用者甚至可以恣意更改發信地址、或是進行更過份的動作,後來便因安全性考量而取消了這個服務。
交叉應用穿透強
既然Socks代理那麼強,何必需要以其它協議為基礎的伺服器呢?當瀏覽網頁一定要透過區網內的HTTP代理伺服器時,光有Socks代理也沒用,而且這種情形還蠻常見的(比如受限於公司或學校內部的網路管制)。因為HTTP代理只認識HTTP協議,它不認識Socks代理送出的封包,自然無法處理。
解決的方法是經由特定軟體,再將封包轉成HTTP代理認識的格式,如此一來就能將經過HTTP包裝的某種封包再傳送出去給遠端的伺服器處理。一般代理程式都會內建或隱藏此功能,只是這種反其道而行的作法會讓速度不增反減,連得上就比連得快更重要了。
延伸閱讀:
觀點:從中國官方網路地圖反思,為什麼網路地圖自由使用、發揮公民力量很重要
Dropbox 同步前先幫你自動加密檔案,使用上很方便,重要資料不外洩
(後面還有:網頁用代理伺服器連線速成)
網頁用代理伺服器連線速成
雲端App盛行,瀏覽器已經可以處理90%以上的網路應用,如果單純地只是想透過代理伺服器來連上某些網頁、或是運行網頁型IM,作法會簡單的多。要做的就只是找到1個可用的代理位址,然後填入瀏覽器的設定裡即可。
要到哪裡找代理位址?代理伺服器一樣可以自架,甚至透過虛擬主機的PHP環境運行。只是這麼做風險有點大,架好後得提心吊膽地擔心位址某天被列入黑名單,虛擬主機商更是有可能主動禁止這種作法。
還好,有不少間諜網站會不斷地集可用的代理伺服器位址,甚至還能依國家及代理方式分類,多試幾個就能找到速度不錯的代理站台,你要做的就只是把位址填入瀏覽器或網路連線設定裡而已。
▲間諜網裡的代理列表頗有誠意,從壽命、速度到匿名方式一目瞭然,雖然也不一定準就是了。
匿名方式各不同
以一般間諜網頁能找到的站台來說,代理伺服器的類型依匿名性可分為3個等級,它們分別是:
Transparent
Transparent代表只是單純轉送快取資料,這也是代理伺服器最正規且原始的用途。它的匿名性就如字義一般:是透明的,本地端電腦的位址並不會經過屏敝,也就是說電腦連外的位址是多少、透過代理伺服器轉送後仍然相同。很明顯地,這種站台不適合用來當跳板。
Anonymous
從名字就能看出端倪。Anonymous是匿名性居中的代理方式,基本上以Anonymous代理的連線只會顯示代理伺服器的位址,達到本地端的匿名效果。
有趣的是,這3種匿名類型並不是代理伺服器的統一設定標準,只是封包轉送方式的排列組合差異而已。即使是Anonymous,也有可能因為代理端雞婆送出了多餘的標頭資訊而曝露了本地端位址。
確認的方式別無他法,連上一些位址追蹤網站檢查是最實在的,比如「www.whatismyip.com」。如果選擇的代理伺服器太誠實,那麼該網站會告訴使用者:你的位址跟代理位址同時都露餡囉!匿名效果同樣是零。
Elite/High Anonymous
比Anonymous更可靠的代理方式。這種伺服器的設置意圖非常明顯,所以理論上破綻較少,也不會讓目的端網站知道有代理層的存在,不過還是要經過測試就是了。
此層級的站台可以優先測試,只是要碰碰運氣。這種站台通常是不公開的,部分還得通過認證才能連入,而且就如前文所提,此類代理的設置目的通常十分明確,亂入的玩家更要小心資料外洩的風險。
▲部分代理伺服器仍會讓本地端主機的位址露餡,連使用的代理工具都能知道。
三分熱度就搬風
間諜網站的代理名單是哪來的?這些資源可信嗎?撇除有心機的不談,大部分代理站台都是無辜的,它們存在的目的未必是為了公開供人當跳版用,只是設置時不夠嚴謹而讓連入者有可趁之機。
除了Elite級站台,絕大多數代理伺服器的生命周期都不長,因為其中有不少是玩家試架的粗糙成品,有心長架的也不會讓你那麼簡單就連入。所以了,需要長期外連的使用者最好不時更換代理,不然過幾天原本的就過期了,何況過度超載相同的伺服器也太高調了點。
麻煩的不只如此,主流瀏覽器的代理伺服器設置通常不太乾脆,選項都藏在點2次滑鼠還找不到的地方是怎樣,加上代理名單裡的成員不一定每個都能用,光是指定代理、測試、更換代理的重覆流程就得花上不少時間。
山不轉路轉,還好Google Chrome可以直接從執行參數指定要使用的代理伺服器位址,如此一來我們就能用批次檔或指令碼組合來將過程半自動化,同時提高整體的作業速度。
先以Windows環境為例,打開記事本,依序鍵入以下幾行指令碼:
set WshShell=CreateObject(“Wscript.shell”)
這行是宣告,照打就對了。
WshShell.Run “””%Program Files%\Internet Explorer\iexplorer.exe””” & “HTTP://www.proxynova.com/proxy-server-list/country-us/?pxl=ea”,1,0
執行IE或你屬意的瀏覽器,然後連上間諜站台取得代理名單。這裡以www.proxynova.com為例,只要更換country-xx及pxl=e(lite)a(nonymous)就可以更換國家及匿名類型。
ProxyStr=inputbox(“Input proxy like xxx.xxx.xx.x:xx(xx) ”, “Run Proxy”)
跳出一個對話盒來輸入代理伺服器位址。
WshShell.Run """%Program Files%\Google\Chrome\Application\chrome.exe""" & " -proxy-server=" & ProxyStr & “HTTP://www.whatismyip.com”
將剛才輸入的代理伺服器位址帶入命令列參數中,並執行Google Chrome,直接連到特定網站檢查代理是否生效。
完成後存成RunProxy.vbs(好記為佳),以後點2下該圖示就會照著上述流程跑了。有進階編程能力的玩家可自行優化或做個圖形化介面,用下拉式選單指定國家或匿名方式,希聽尊便。
Mac版本則是:
do shell script "/Applications/Firefox.app/Contents/MacOS/Firefox " & "HTTP://www.proxynova.com/proxy-server-list/country-th/?pxl=ea &> /dev/null &"set ProxyStr to (display dialog "Enter proxy address xxx.xxx.xxx.xx:xxx" default answer "")do shell script "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome -proxy-server=" & text returned of ProxyStr & " HTTP://www.whatismyip.com"
敘述內容就不再解釋,用AppleScript工具編寫完後存成指令或應用程式執行即可。
更熱血的玩家可能想一不做二不休:為什麼不利用指令碼直接測試間諜網站裡的代理名單,再把可用成員指定給瀏覽器呢?筆者確實試過,不一定可行。由於這些間諜網站的收入來源是廣告,自然不可能讓你閉著眼睛取得代理資訊,網頁中的代理列表都是即時生成的,沒辦法直接透過html來抓取。
▲透過指令檔的幫忙,從找代理到指定代理的動線也會更為順暢。最後一步雖然代理露了餡,但本機位址是藏了起來,算是比較特別的現象。
PAC檔能代勞
有固定不變的代理伺服器可用的話,就不必那麼麻煩,反正大家電腦裡都有好幾套瀏覽器,選一套填入代理位址,把它當作代理專用的瀏覽器即可。如果真的只有1個瀏覽器能用,那麼套用PAC檔也是個折衷作法。
PAC的全名為「Proxy Auto Config」,是用來設定代理伺服器的自動組態檔。組態檔的核心內容主要決定不同網段,以及通訊協定該使用哪個代理伺服器,不過因為跟匿名性沒關係,有興趣的玩家可自行研究。
跨協定代理通四海
網頁代理的部分比較容易,只是它的應用通常有限。比如BBS、FTP等連線仍然是無法透過瀏覽器達成的,即使瀏覽器有內建這些外掛,它們走的仍然是自己的協定,這個時候就會需要專門的工具來代理。
進一步解釋代理伺服器的運作原理,它會將外層的封包打開,然後再把裡頭的內容傳送下一個伺服器。待下一個伺服器回傳訊息時,它就會再加上一層封包送回原本的發送端,發送端再還原協定,步驟其實並不複雜。
所以了,要實現代理必須有2個最基本的構成要素:本地發送端與遠端代理端,網頁代理的發送端可以是瀏覽器,其它應用就得靠代理程式來設定。同時由於本地發送端通常會身兼伺服器來導入要送給遠端代理的流量,所以直接稱其為本地代理端也不為過。
地代理端的主要任務有3個,一是尋找網路上可用的代理伺服器,二是在本機建立一個代理伺服器,最後則是建立一套本機應用程式外連時的規則。本地與遠端之間可以存在更多的伺服器來將資料一層一層的拆開再包起來,目的地只會知道最後一個伺服器的IP位址。
寫到這裡,筆者不自禁地哼起了楊宗緯的歌來。沒錯,最有名的代理應用「Tor」就是以洋蔥的概念發展成的,它的特性是尋找代理非常方便,前提是執行後,自己的電腦可能也會成為別人的代理端點之一,對安全性及流量來說無疑是一種傷害。
多合一代理端成風潮
本著善良使用人的原則,筆者還是簡介一下Tor的使用方式。它的功能是串連網路上的大量代理端點,絕對比自己一個一個手動找還快。Tor能夠指定最後一個代理該位於哪個國家,好像情報員總是得準備多本護照不斷轉機一樣,使用上的彈性絕對比專門翻防火長城的軟體高。
Proxy與VPN的連線路徑
雖然VPN與代理伺服器在跳板應用差異不大,但在運作時還是有本質上的分野。圖為同時組合VPN與代理伺服器的對外連線流程,可以看出兩者並非對等關係,而帶顏色的線條表示到達最後終點站時所披上的IP位址。
▲點圖看大圖
代理伺服器的資料處理流程
下圖為簡化過的代理伺服器資料轉送流程示意。圖中的Socks或HTTP可以套用到任何一種通訊協定上,最重要的是要找到可使用的遠端伺服器。
▲點圖看大圖
Tor本身只具備連結洋蔥網路的核心功能,新手可能無法搞懂它複雜的組態配置,還好官網上有不少傻瓜軟體包,我們只要下載「Vidalia」這個套件即可。Vidalia一執行便會自動連上Tor網路,並在到達最後端點後開啟專屬的Tor瀏覽器,如果你只是要用代理瀏覽網頁,透過Tor的成功率非常驚人,值得一用。
Tor是如何提供代理的?其實它是在本機建立伺服器,運行中的Tor會開啟1個埠口監聽要透過它傳送的流量,所以其它瀏覽器也可以在代理設定中填入該埠口,經由Tor來外連。能指定代理的軟體還有如MSN(可惜要掰掰了)、Skype等等,如果區網的防火牆沒有特別針對Tor做阻擋,那麼通過Tor就等於是通過了防火牆。
用Proxifier匯整流量
沒辦法指定代理的程式怎麼辦?其實很少,認真找還沒幾個。不管程式本身支不支援設定代理,同樣可以經由第三方軟體來導引連線,諸如FreeCap、WideCap及Proxifier等,都可以指定特定程式或協定來使用代理外連。它們屬於一個專門的工具分類「Proxifier」,可以導引電腦的部分或全部對外網路流量到遠端代理伺服器上。
在執行Proxifier前,請先確定Tor已經在運行、並且處於準備狀態,也就是連外網路佈建已經完成。順序逆行的話,可能會讓Tor去透過一個不存在的本機代理伺服器外連,當然怎樣都連不上。
另外,不管是用什麼方式代理,本來就已經建立的連線並不會因套用了代理而改變路徑或中斷,只有代理後建立的連線才會,所以大部分代理程式都能在開機時就自動執行,以免出現一國兩制。卸載後也是如此,代理程式關閉後最好要重開一次機,讓流量路徑恢復原狀。
BBS同樣能翻牆
大部分提供網路服務的軟體都能設代理,Telnet可能是少數例外。其實一些遠端撥號及登入軟體還是有提供的,比如「NetTerm」,設定值裡頭的防火牆選項就可以用來指定代理,套用後Telnet封包會經過包裝,最後再還原成BBS站看得懂的資訊。Putty這套SSH程式也有同樣效果,只是用它來上BBS會非常辛苦。
4個步驟設定匿名代理
Step1
執行Tor官網下載的Vidalia,程式會自動連上合適的代理伺服器,並開啟「Tor Browser,請利用它檢查代理的匿名性。
Step2
執行WideCap之後,再來新增一個Proxy,Protocal留預設的Socks v5,Chain的部分也指定一個名字。
Step3
新增一個Rule,Chain的部分選擇剛才建立的Proxy,其它地方都留預設值就好。
Step4
最後在View Applications裡直接拉入你要代理的應用程式圖示,記得要指定Rule名稱,Apply後就大功告成了。
Proxifier
- 下載網址:http://www.proxifier.com/
- 軟體功能:Proxifier
- 支援環境:Mac、Windows
Proxifier知名度非常高,因為它的功能原創性強、結構明確,有不少類似軟體都是模仿其介面而生,Proxifier也因此變成了在代理工具裡的一個專屬分類。
它的核心功能有3種:指定代理伺服器、建立規則、以及選擇要套用的應用程式,部分軟體可能會將後兩者綁在一起,其實只是介面的整合方式不同而已。
指定代理伺服器時,可以透過「Proxy Chain」來達到Tor的效果,如果電腦裡沒有先安裝Tor的話,一次找幾個代理伺服器放進Proxy Chain裡同樣能達到較高的匿名性,前提當然是這些伺服器本身都得正常運作才行。尷尬的是,有時透過Proxy Chain反而更容易讓目的地發現你使用了代理伺服器,所以效果不一定會更好。
規則的建立帶點路由性質,主要是讓Proxifier決定導引哪些軟體、或者目的地是哪些網址或埠口時才生效,預設值則是會處理電腦的所有對外流量。建立多條規則並同時套用可以讓代理的控管更精準,甚至導引不同的連線到不同的代理伺服器上。
Proxifier還有個附加價值:偵測透過代理伺服器連線的流量。如此一來就能實測出代理的真正速度,做為選擇伺服器或規則建立時的有效參考指標。
▲介面可清楚列出哪些應用程式正透過哪條規則及代理外連,是除了透過瀏覽器之外檢查代理是否生效的快速方法。
▲流量介面可比對上下傳速度,如果是要透過代理看電影,這裡可看出流量瓶頸。
ProxySwitcher
- 下載網址:http://www.proxyswitcher.com/
- 軟體功能:尋找代理、Proxifier
- 支援環境:Mac、Windows
Tor的方便之處,在於可以快速地找到合適的代理伺服器,不過使用者通常不會知道自己連到哪裡,需再進連線紀錄才看得到網路的進入及離開點。要指定國家也比較麻煩,每換一次就得手動更改組態檔,對某些常需要跳國瀏覽的玩家會不太方便。
ProxySwitcher本身也能尋找代理,因為這類軟體大多跟Socks伺服器業者有一定合作,用付費的方式來保證連線品質及軟體功能。免費版同樣能尋找代理伺服器,還能自動測試伺服器的穩定性,相較起來,本專題前頭所提的網頁測試法跟本是小兒科。
ProxySwitcher找到的伺服器會依匿名性分類,所以也能大幅縮短除錯時間。經過程式過濾完的Elite/Anonymous站台雖然不一定具備完美匿名性,至少在此分類以外的也不必再測試了。
因為找尋伺服器需要花上一段時間,最好在開機時就讓它自動執行。程式預設會找完上萬個不等的伺服器才罷休,然而這麼做是很浪費網路資源的,我們可以將其限制在只尋找100個站台就能有不錯的結果。如果有限定國家,效率當然會更好。
▲看到那麼多國旗,連筆者都興奮起來了。進行排序後就能從Responese Time數值低的伺服器開始測起,或是直接信任程式的推薦名單。
▲在系統圖示上按右鍵,列表裡會出現使用過的代理。以後在找新代理前,可以先來這裡試試它們還活著否。
Proxyhelper
- 下載網址:http://5socks.net/en_phelper.html
- 軟體功能:尋找代理、Proxifier
- 支援環境:Windows
Proxyhelper是5socks.net這間Socks服務供應商用來搭配自家生意的當家花旦。這是一套取得難度非常高的軟體,並且與其功能特色成正比。 Proxyhelper等於是前述幾套軟體的集大成之作。它的重點功能是:
- 透過圖示選單選擇特定區域的伺服器,精準至城市。這對地域綁定極為嚴格的網站特別受用。
- 指定要即時套用代理規則的應用程式,調整更彈性,應用程式不必再被自己的設定或Proxifier綁死。
- 隨時更改代理目標。Tor也可以做到這點,但Proxyhelper是直接提供伺服器列表讓你選擇,等於是按2下就能變成自己想要的身份。
光是以上3點,就有成為讓這套軟體收費的理由。Proxyhelper不開放下載,基本上要成為5socks的客戶才能取得,每個月還要付上10美元(折合新台幣約290元)的使用費用,不是專業級的玩家可能會打退堂鼓。
還好,這些功能可以靠不同的軟體們來組合,比如指定更詳細的代理規則、建立不只1個代理窗口、再由ProxySwitcher來管理外網伺服器等,同樣能夠實現快速代理切換,只要注意讓彼此之間不衝突就好。
▲直接幫你整理好各地的代理數量,點一下就連上。
▲提供選單來載入應用程式,卸載後設定值就失效,不必每次調整應用程式或Proxifier的設定。
Proxy、Cap系列軟體
以上3套是較具特色的代理程式,其餘如Freecap、Widecap、Sockscap、ProxyCap及Permeo等等則是功能簡化過的版本,除了名字長得很像,操作模式如出一輒。筆者自己的原則是免費的最好,有持續更新者為佳,若能跨平台更是首選。
就匿名性來看,Tor是不二選擇,畢竟一般玩家不會用到那麼多國家的代理站台,設定一次就能一勞永逸。ProxySwitcher則是得註冊才能直接瀏覽所有的匿名站台,所以無法一擊即中。在免費的前提下,沒有一套軟體是完美的,端看怎麼組合運用而已。
在筆者的測試裡,如果不是非要指定來源國家,Tor有極高的翻牆及匿名成功率。這不代表Tor沒有天敵,精明一點的網管仍然可以透過行為模式及更底層的動作偵測來阻擋Tor的運行。網管還有個最簡單的作法,就是搜尋內網是否有人建立代理伺服器(有運用本機代理程式就一定會建立),再一一調查擊破。
有興趣的玩家不妨可以上對岸搜尋「網警、VPN、Proxy」之類組合的關鍵字,相信對於代理的風險及結構堆疊上會有更進一步的認知。以後不管是要翻牆還是築牆,也都能駕輕就熟了。
▲ProxyCap的官方示範組態。不同的網段、應用程式、埠口都可以指定到不同的匣道上。它有Windows/Mac兩種版本。
(文=獲殼依毒間)
本文同步刊載於電腦王雜誌
歡迎加入電腦王雜誌粉絲團