由浅入深写代理(5)-socks5-代理

既然 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 服务器了