我正在尝试使用tor,socksipy和ssl来代理ssl连接。我的客户看起来像这样:
import socks, ssl
s = socks.socksocket()
s.setproxy(socks.PROXY_TYPE_SOCKS5,"127.0.0.1", 9050)
ssl_sock = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_TLSv1)
ssl_sock.connect(('127.0.0.1', 443))
服务器只接受连接并打印getpeername
。
对等名称始终为127.0.0.1。如果我给它一个无效的代理,它甚至无关紧要。客户不会抱怨,无论如何都会连接。
如何通过代理连接?
答案 0 :(得分:1)
我设法弄清楚了,所以我会留下答案,以备将来参考。
第一个问题是我尝试连接到127.0.0.1
。当请求被代理时,代理将尝试连接到127.0.0.1
,因此它会尝试连接到自己,而不是我。
我必须配置我的路由器将端口443上的请求转发到我的笔记本电脑,然后用我的路由器IP替换127.0.0.1
。
在那之后,我发现socksipy并没有与ssl发挥得很好。
在包装之前我必须在套接字上调用connect
,否则我会得到握手失败。代码变成了:
import socks, ssl
s = socks.socksocket()
s.setproxy(socks.PROXY_TYPE_SOCKS5,"127.0.0.1", 9050)
s.connect(('127.0.0.1', 443))
ssl_sock = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_TLSv1)
之后,一切正常。