通过向代理服务器发送CONNECT命令,可以让代理服务器和目标主机的目标端口建立一个连接,这样本机和目标主机就有了一个通道。从此以后向代理服务器发送命令就等于向目标主机发送命令。这和一般的GET方式不同,完全不受过滤机制的影响。先来看看两种方式的不同之处,
GET方式:
socket.connect('HTTP代理服务器IP',HTTP代理服务器端口)
socket.send('GET http://XXX.XXX.XXX/XXX.EXE HTTP/1.1\r\n
HOST: XXX.XXX.XXX\r\n\r\n')
CONNECT方式:
socket.connect('HTTP代理服务器IP',HTTP代理服务器端口)
socket.send('CONNECT XXX.XXX.XXX:80 HTTP/1.1\r\n\r\n')
socket.recv(1024)
socket.send('GET /XXX.EXE HTTP/1.1\r\n
HOST: XXX.XXX.XXX\r\n\r\n')
就是这么简单,下面就用python来完成编码。python有很多对http协议的封装库,如urllib2,httplib等。但我不知urllib2如何设置connect方式的代理,懒得去研究了。所以直接用socket来实现。相对于C++,用python来操作socket是如此的简单优雅。
pget.py:......
【阅读全文】


一次偶然的机会打开中宏保险的网站(




