既然 socks5 是协议,所以客户端也必须有 socks5 的实现才能和服务端连接。这里面我就用现成的开源库 [PySocks]( ) 来演示下。
pySocks 有两种方式来实现,一种是直接的 s = socks.socksocket() 创建一个新的 socket 对象,还有一种是 Monkeypatching,算是 python 的黑魔法。
我们用第一种方法试下
首先把代理服务器开起来
python3 socks5_server.py
然后运行如下代码
import socks s = socks.socksocket() # Same API as socket.socket in the standard lib s.set_proxy(socks.SOCKS5, "localhost", 8888) s.connect(("Sina Visitor System", 80)) s.sendall("GET / HTTP/1.1 /r/n/r/n") print s.recv(4096)返回值如下
由于没有设置 http 正确的 header,所以 weibo 服务器返回了 400
当然你可以直接用 chrome 的 代理插件设置如下
可以看到所有的请求都经过 socks5 服务器了