我正在尝试将 SocksIPy 与 ssl 模块(来自 stdlib)一起使用来获取站点的远程证书,但 SocksIPy 不会使用 ssl。
下面的代码将连接到 check.torproject.org 并声明我们没有使用 Tor(意味着 SocksIPy 不工作)(坏)。
不确定 SocksIPy 是否是最好的解决方案,但我无法找到任何其他方法来代理原始套接字(或让 pycurl/urllib2 使用 SOCKS 代理并提供 SSL 证书!)。
澄清一下,我的问题是套接字没有被代理。我想用我选择的代理来获得 ssl 证书,但这没有发生。
现在看来,我可以拥有代理或 SSL,但不能同时拥有。帮助!
import socks
import ssl
s = socks.socksocket()
s.setproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
ss = ssl.wrap_socket(s)
ss.connect(('check.torproject.org', 443))
ss.write("""GET / HTTP/1.0\r
Host: check.torproject.org\r\n\r\n""")
# print ss.getpeercert()
print ss.read(), ss.read(), ss.read()
ss.close()