Python,实现基于套接字的应用程序的代理支持(非urllib2)
我有点困惑:我写了一个简单的聊天客户端程序(纯Python,用的是套接字),现在想加上代理支持(http/s和socks),但我对怎么做有点迷糊。我猜想在套接字层面上,连接应该是先连到代理服务器,然后在这个时候,头信息里应该包含一个CONNECT请求和目标IP(也就是聊天服务器的地址),还有认证信息(如果代理需要的话)。不过后面的部分我就不太明白了。后续的连接是怎么处理的,特别是读写数据这些...
有没有关于在Python中实现基于套接字(tcp)编程的代理支持的指南?
谢谢
3 个回答
0
你可以看看 stunnel。
Stunnel 可以帮助你为那些不支持 SSL 的服务和协议(比如 POP、IMAP、LDAP 等)提供安全保护。它通过自己来加密数据,这样就不需要对这些服务的代码进行任何修改。
2
其实很简单——当你发送这个HTTP请求:CONNECT example.com:1234 HTTP/1.0\r\nHost: example.com:1234\r\n<additional headers incl. authentication>\r\n\r\n
之后,服务器会回复你:HTTP/1.0 200 Connection established\r\n\r\n
。然后(在这个双行结束后),你就可以像直接和example.com的1234端口通信一样进行交流,而不需要通过代理(我理解你已经完成了客户端和服务器之间的通信部分)。
3
你可以试试像 SocksiPy 这样的工具,它会帮你处理所有的协议细节,让你可以像平常一样通过一个SOCKS代理进行连接。