簡易http Proxy搭建

簡易http Proxy搭建

proxy代理翻牆

admin5天前91瀏覽0評論

最近學校的網路超級的不爽,原來上下行都能達到幾十M的網速被生生的限制為下行3M,上行0.3M不說而且屏蔽了很多網站,使用的手段相當的齷齪,直接在出口路由上將網站直接指向了127.0.0.1,十分的鬱悶。我的迅雷會員算是廢了,無法在線看視頻了,WTF。

還好最近申請到了Windows Azure的試用名額,除了開著Boinc做WCG任務獲取點XRP就是在閑著,就想著用這伺服器搭建個http proxy脫離學校的魔掌,使用正常的網路。但是普通的http proxy無法訪問那些「不存在」的網站,因此需要該http proxy自動的處理正常網站和被封鎖網站之間的關係。基本的思路是做個路由表使得正常的網站走國內網路,「不存在」網站走國外的代理。

Advertisements

基本需求

硬體

國外vps一台(Digitalocean)

國內vps一台(Windows Azure)

上述兩台伺服器使用的都是ubuntu 12.04.3 LTS

軟體

shadowsocks

obfsproxy

privoxy

squid3

步驟

shadowsocks和obfsproxy

在國外vps上運行shadowsocks和obfsproxy,shadowsocks提供socks代理服務,obfsproxy負責將流量進行混淆,使得代理更加的安全,不使用obfsproxy也可以。這兩個軟體的安裝配置都比較簡單,在各自的官方網站上都有詳細的介紹。這樣國外的vps上的工作已經做完了,重點在於國內vps上的配置。

Advertisements

國內vps上同樣也要先安裝shadowsocks和obfsproxy,不同的是國外安裝的都是伺服器版本,國內安裝的都是客戶端版本不要搞混淆了。配置好后國內的vps上就有了一個可以用的socks代理,通過這個代理可以訪問自由世界的互聯網,沒有偉大的GFW的干擾了。但是很多的服務不支持socks代理,http代理支持的範圍比較廣泛,幸好socks代理轉化為http代理還是比較容易的,使用privoxy就可以了。

安裝privoxy

  1. $ sudo apt-get install privoxy

privoxy的配置比較簡單,只需要指定socks代理的埠和轉化出來的http代理的埠就好,配置文件為/etc/pvivoxy/config,下面是簡單的例子:

  1. # /etc/privoxy/config

  2. user-manual /usr/share/doc/privoxy/user-manual

  3. confdir /etc/privoxy

  4. logdir /var/log/privoxy

  5. actionsfile match-all.action

  6. actionsfile default.action

  7. #actionsfile block.action

  8. filterfile default.filter

  9. #filterfile user.filter

  10. logfile logfile

  11. forward-socks5 / 127.0.0.1:1234 . #socks代理的埠1234

  12. listen-address *:5678 #轉化的http代理埠5678

  13. toggle 1

  14. enable-remote-toggle 1

  15. enable-remote-http-toggle 0

  16. enable-edit-actions 0

  17. enforce-blocks 0

  18. buffer-limit 5120

  19. #connection-sharing 0

  20. forwarded-connect-retries 3

  21. accept-intercepted-requests 0

  22. allow-cgi-request-crunching 0

  23. activity-animation 1

  24. split-large-forms 0

  25. keep-alive-timeout 0

  26. socket-timeout 120

  27. handle-as-empty-doc-returns-ok 1

privoxy安裝好后我們就有了一個http代理,這個代理可以自由的訪問所有的網路,所有的請求都會轉到國外的vps上執行然後將執行的結果回傳,所有的流量都要在國外轉一圈,這樣訪問國內的網站是很慢的,而且有些國內網站屏蔽了國內ip,這樣的網路體驗並不好。下一步驟就該squid大顯身手的時候了,squid是一個代理和緩存伺服器,可以指定規則使得不同的網路請求走不同的路徑,還有緩存加速的功能,可以加速網路的訪問,squid的安裝比較簡單。

安裝squid

  1. $ sudo apt-get install squid

squid的配置文件位於/etc/squid3/squid.conf,下面是我使用的配置,稍後我會簡單的介紹下:

  1. #代理伺服器的監聽埠

  2. http_port 9999

  3. ##########################

  4. cache_peer localhost parent 5678 0 no-query

  5. # 默認走shadowsocks, 國內ip走國內

  6. acl chinaip dst "/etc/squid3/chinaip"

  7. always_direct allow chinaip

  8. acl ALL src all

  9. never_direct allow ALL

  10. ##########################

  11. #內存緩衝區的大小

  12. cache_mem 2048 MB

  13. #設置硬碟緩衝區最大4096MB,16個一級目錄,256個二級目錄。

  14. cache_dir ufs /var/spool/squid 4096 16 256

  15. #設置訪問日誌文件

  16. cache_access_log /var/log/squid3/access.log

  17. #設置緩存日誌文件

  18. cache_log /var/log/squid3/cache.log

  19. #設置網頁緩存日誌文件

  20. cache_store_log /var/log/squid3/store.log

  21. #定義允許名稱為all的http請求。

  22. http_access allow all

squid支持父代理,而且指定了父代理后默認的全部流量都從父代理走,由於GFW的威力日益強大,為了一勞永逸,配置中使用了比較暴力的手段,找出了所有的中國ip,將ip段放在/etc/squid3/chinaip這個文件中,使國內ip直連,國外ip都通過shadowsocks代理。雖然會使得有些未被牆掉的網站訪問變慢,但是照著GFW這樣瘋狂的勢頭這個方案還是比較行得通的,不用蛋疼的手動添加被牆的網站了。

/etc/squid3/chinaip中的條目都是形如192.168.1.0/24或者192.168.1.0/255.255.255.0,每行一個網段,squid同時支持這兩種網路的寫法。獲取國內的ip地址可以訪問該網站,下載后的文件一般需要使用sed、awd等工具修改成滿足squid需求的格式。這樣就得到了一個全能的http proxy,國內國外網站隨意遨遊了。

相關文章

  • nginx 反向代理 google

  • HTTP/HTTPS自動加密反向代理方案

  • goagent教程詳細版

  • 透明代理、匿名代理、混淆代理、高匿代理有什麼區別

  • 使用Digital Ocean和shadowsocks來科學上網

  • Nginx配置proxy_pass轉發的/路徑問題

Advertisements

你可能會喜歡