代理无法通过SSL连接工作

时间:2014-08-07 19:09:42

标签: python python-2.7 ssl tor socks

我正在尝试使用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。如果我给它一个无效的代理,它甚至无关紧要。客户不会抱怨,无论如何都会连接。

如何通过代理连接?

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)

之后,一切正常。