python - 代理无法通过 SSL 连接工作

标签 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。如果我给它一个无效的代理甚至都没有关系。客户端不会提示,无论如何它都会连接。

如何让它通过代理连接?

最佳答案

我设法弄明白了,所以我会把答案留在这里以供将来引用。

第一个问题是我尝试连接到 127.0.0.1。当请求被代理时,代理会尝试连接到 127.0.0.1,因此它会尝试连接到它自己,而不是我。 我必须将我的路由器配置为将端口 443 上的请求转发到我的笔记本电脑,然后我将 127.0.0.1 替换为我的路由器 IP。

在那之后,我发现 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)

在那之后,一切正常。

关于python - 代理无法通过 SSL 连接工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57505292/

相关文章:

android - Python 与 Android 通信?

tomcat - 由于 "The filename, directory name, or volume label syntax is incorrect",Spring 引导无法在 tomcat 7 上加载 keystore 类型 JKS

google-app-engine - 具有自定义域的云存储上的 SSL

java - keystore 加载

python - 在 Python 中创建假数据

python - 如何使用脚本重新创建 IPython 的 '--pylab' 选项的效果?

python - 基维 : line color in canvas won't update

Python:为 1's, -1' 组创建内存高效的矩阵,并通过 scipy 最小二乘法优化 0

python - 在 Odoo 8 ORM api 中,如何使用 search() 以相反的顺序获取结果?

Python 2.7 getfullargspec 等效项