我正在尝试使用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()
Run Code Online (Sandbox Code Playgroud)
小智 6
我在运行tcpdump时测试了这段代码,所以它应该可以运行.
import socks
import ssl
s = socks.socksocket()
s.setproxy(socks.PROXY_TYPE_SOCKS5,"127.0.0.1",port=9050)
s.connect(('83.94.121.246', 443))
ss = ssl.wrap_socket(s)
print ss.send("hello")
ss.close()
Run Code Online (Sandbox Code Playgroud)
我没有查看ssl.py,但我想你必须在socks对象上调用connect而不是ssl对象.