【发布时间】:2020-10-09 23:17:19
【问题描述】:
我正在尝试通过套接字 python 连接到 https 代理。
首先我想说我可以在没有代理的情况下很好地做到这一点,所以我知道我的代码在没有代理的情况下也可以工作,但我需要代理。我也确信我的 CONNECT 请求有效,因为之后我收到“200 连接已建立”。
这意味着我的 ssl 部分已关闭,特别是在我的代码的 wrap_socket 函数/部分中。我试过不使用 ssl(不认为它会起作用,但我只是想我可以尝试)它给我发送了一个奇怪的十六进制响应,在搜索它时,我发现这是因为“格式错误的 http 请求”。这对我来说没有意义,所以我一直尝试使用不同版本的 ssl,包括 tlsv1,最后我尝试了 sslv3。这显然在我的计算机和其他计算机上搞砸了,因为我得到了 s = wrap_socket(s, ssl_version=ssl.PROTOCOL_SSLv3) AttributeError: 模块 'ssl' 没有属性 'PROTOCOL_SSLv3'””” 错误。
在此之前,我尝试不指定 ssl 版本,但我得到了“错误的版本”。所以,在所有这些测试之后,我无法弄清楚要使用哪个 ssl 版本以及为什么,我也无法确认 sslv3 是否有效,因为我收到了上面所说的错误。我确信我的 proxy-request-glow 有效,但我也可能在那个领域犯了错误。
我的问题是我在这里做错了什么?特别是 ssl 部分。
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try: s.connect((proxy.split(":")[0], int(proxy.split(":")[1]))) #connect to proxy
except:
self.proxy_errors+=1
return
s.send("CONNECT site.com:443 HTTP/1.1\r\nHost: site.com\r\n\r\n".encode())
#s = wrap_socket(s)
【问题讨论】:
标签: python python-3.x sockets ssl httprequest