注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

理解http代理的内部因果  

2013-12-04 15:14:34|  分类: linux遂道技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
一.关于connet的理解
用CONNECT方法突破HTTP代理服务器的扩展名封锁
实现方式:python
现场之一:一个公司里的电脑是通过一台内部代理服务器上网的,为了节省带宽,对下载进行了限制。方法是过滤URL中的扩展名,如 'exe','rar','tar.gz'等,并且限制了连接时间,当连接时间超过2分钟就主动断开,如果发现公司的代理服务器没有限制CONNECT命令的话,一位作者就进行了如下的尝试,并取得成功.

建立独立CONNECT遂道上网:
         通过向代理服务器发送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等。直接用socket来实现。相对于C++,用python来操作socket简单优雅。
pget.py:
import socket
import sys
  评论这张
 
阅读(64)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017