由淺入深寫代理(5)-socks5-代理

既然 socks5 是協議,所以客戶端也必須有 socks5 的實現才能和服務端連接。這裡面我就用現成的開源庫 [PySocks](Anorov/PySocks) 來演示下。

pySocks 有兩種方式來實現,一種是直接的 s = socks.socksocket() 創建一個新的 socket 對象,還有一種是 Monkeypatching,算是 python 的黑魔法。

我們用第一種方法試下

首先把代理伺服器開起來

python3 socks5_server.py

然後運行如下代碼

import socksns = socks.socksocket() # Same API as socket.socket in the standard libns.set_proxy(socks.SOCKS5, "localhost", 8888)nns.connect(("Sina Visitor System", 80))ns.sendall("GET / HTTP/1.1 /r/n/r/n")nprint s.recv(4096)n

返回值如下

由於沒有設置 http 正確的 header,所以 weibo 伺服器返回了 400

當然你可以直接用 chrome 的 代理插件設置如下

可以看到所有的請求都經過 socks5 伺服器了

推薦閱讀:

socket內存佔用疑問?
圖解SDN:軟體定義網路導論篇
酷站推薦 - yunshan.net - 雲杉網路 | Pure Play SDN | 軟體定義網路
為什麼澳洲的網路又貴又慢?還沒有國內方便
外國大學的網路是否也會卡?

TAG:Python | 计算机网络 | socks代理 |