tornado的aschttpclient,底层依赖pycurl,使用py2exe的时候,pycurl.pyd会导致程序闪退,解决方式,使用打过补丁的pycurl.pyd。
代理客户端的实现原理是什么?抓个包,其实很简单:socket连接代理ip,header头部中给定真实目标url即可,包体没有变化。
这是直接telnet代理服务器,url填百度的包,代理服务器会去取Host,再从新构造http请求,将请求返回给当前没close的套接字。
GET / HTTP/1.1
Host: www.baidu.com
Connection: close
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36
Referer: http://www.cnblogs.com/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8