一种基于HTTP协议的高隐匿网络代理方法及系统技术方案

技术编号:21121062 阅读:18 留言:0更新日期:2019-05-16 10:42
本发明专利技术提供一种基于HTTP协议的高隐匿网络代理方法及系统,设计并实现一套提升代理效率和隐匿性的代理通信方案,解决现有代理应用中的并发能力弱、流量易被识别等问题。通过隧道技术实现基于应用层协议的数据隐匿传输,以提高代理流量的隐蔽性。同时对负载数据进行拆分,隐匿原始数据的特征,达到抗流量分析的目的。通过异步传输框架保证代理系统在高并发访问下的通信质量,提升用户的使用体验。

A High Hidden Network Agent Method and System Based on HTTP Protocol

【技术实现步骤摘要】
一种基于HTTP协议的高隐匿网络代理方法及系统
本专利技术属于计算机信息
,具体涉及一种基于HTTP协议的高隐匿网络代理方法及系统。
技术介绍
代理(Proxy)是网络信息的中转站,它解决了网络结构造成的访问限制、上网速度易受带宽影响、信息安全难以保障等诸多问题。一般被用于访问控制、数据缓存、保护用户隐私安全等场景。从产品角度来说,市面上的代理可以分为个人定制型的VPN服务以及提供大批量代理节点的网站。VPN通过在公用网络上建立专用网络进行加密通信,为个人用户提供更快的上网速度,并隐藏真实IP。代理服务提供商(如云代理、蚂蚁代理等)通过搜集大量可用的代理节点,公布在其网站上供有工业需求的用户(如数据采集、行为隐匿)进行使用。从技术层面来说,代理可以根据其所工作的网络协议层次进行分类,主要包括应用层代理和SOCKS代理。其中,典型的应用层(如HTTP代理)代理应用,如Squid、Varnish等,工作流程可以分为以下三个步骤:(1)开放端口接收用户请求;(2)判断缓存是否命中,解析并转发用户基于特定协议的请求;(3)缓存服务器响应资源再返还给用户,其主要工作方向为提升协议兼容性和缓存性能。SOCKS代理作为应用层和传输层之间一种特殊的代理,因其可以转发几乎所有应用层流量的特点被广泛应用于全局代理。以最出名的Shadowsocks为例,其工作流程为:(1)客户端向代理服务器发送目标IP和端口;(2)代理服务器与目标服务器建立连接;(3)接收来自客户端的加密消息并解密转发给目标服务器,对返回的响应进行加密。其具有保证用户隐私安全、抵御流量监测的功能。与应用层代理只能转发特定协议的流量相比,SOCKS代理可转发几乎所有应用层的流量,且不关心是何种协议,在连接建立后只负责盲转发。从技术上说,普通代理在缓存性能和兼容性方面已经达到一定的水平,但在并发和安全性能方面仍有所欠缺。如Squid等应用层代理没有提供可扩展的安全模块,无法对经过代理转发的消息进行安全防护;而以Shadowsocks为代表的代理协议仅对消息主体进行加密和解密,没有提供完整的安全通信方案。且加密作为常见的保密手段,易被防火墙识别特征码,难以抵御流量检测。综上,两者都缺乏一种解决代理传输过程安全性问题的完整方案。从服务来看,市面上大多数代理服务提供商的代理来源不定,这些未知的代理服务可能存在以下问题:1.不稳定。通过探测得到的代理节点虽然数量丰富,但存活时间不定,短则数分钟,长则数天,这给需长时间使用代理的活动(如数据采集)带来了困难。2.效率低下。代理网站只负责简单地罗列可用的代理信息,而没有对代理的有效性进行检验,导致用户需要耗费额外的时间测试代理是否可用。3.带来安全隐患。在使用代理的过程中,用户数据会不可避免地通过代理节点进行传输。在节点来源未知的情况下,用户隐私安全将无法保证。
技术实现思路
本专利技术目的在于提供一种基于HTTP协议的高隐匿网络代理方法及系统,设计并实现一套提升代理效率和隐匿性的代理通信方案,解决现有代理应用中的并发能力弱、流量易被识别等问题。通过隧道技术实现基于应用层协议的数据隐匿传输,以提高代理流量的隐蔽性。同时对负载数据进行拆分,隐匿原始数据的特征,达到抗流量分析的目的。通过异步传输框架保证代理系统在高并发访问下的通信质量,提升用户的使用体验。为实现上述目的,本专利技术采用如下技术方案:一种基于HTTP协议的高隐匿网络代理方法,包括以下步骤:通过一隧道代理客户端监听用户的请求,当用户发送HTTP请求时,接收用户请求的原始数据;对原始数据进行混淆处理,去除字节数特征和关键字特征,将用于还原数据的信息以键值对的方式放入HTTP请求的头部信息中;将经过上述混淆处理的数据封装成HTTP数据包,发送给一隧道代理服务端;隧道代理服务端对收到的HTTP数据包进行解封装,读取HTTP头部中含有的可用于还原数据的信息;根据HTTP头部中含有的可用于还原数据的信息进行数据还原,将还原的数据发送给目标服务器;隧道代理服务器从目标服务器获取被访问数据,对被访问数据进行混淆处理,去除字节数特征和关键字特征,将用于还原数据的信息以键值对的方式放入HTTP请求的头部信息中;将经过上述混淆处理的数据封装成HTTP数据包,发送给一隧道代理客户端;隧道代理客户端对收到的HTTP数据包进行解封装,读取HTTP头部中含有的可用于还原数据的信息;根据HTTP头部中含有的可用于还原数据的信息进行数据还原,将还原的数据发送给用户。进一步地,用户发送的HTTP请求包括GET、POST、PUT、CONNECT。进一步地,与用户建立TCP连接,创建一个唯一的UUID来标示此连接。进一步地,混淆处理包括以下步骤:对用户发送的原始数据进行按位异或,隐藏数据中的关键字;通过已经协商好的种子值,利用random伪随机数发生器函数生成两个随机数n和x,生成n个长度为x的随机字符串;将经过异或的数据分为n段,在每一段的末尾添加上述生成的随机字符串,保证数据的字节数特征被混淆;将分组数据按照随机生成的数组的顺序打乱;把还原原始数据所必须的参数n、x,以及数组打乱后的顺序储存。进一步地,数据的解封装包括以下步骤:根据包头中提取的数字n、x,将服务器返回的加密数据分割为n段;去除每一段的最后x个字符,将剩下的字符按位异或;按照原来的顺序还原数组,并拼接字符串。进一步地,封装数据前,检测用户请求属于HTTP还是HTTPS,将待封装的数据作为GET或者POST请求的负载。进一步地,隧道代理客户端向隧道代理服务端发送HTTP请求时,使用基于Python的异步通信Twisted框架中的函数,当一个请求发送完毕后,向主线程注册一个回调函数,当有数据返回时才会被触发,且该连接在TIMEOUT后会自动断开;当隧道代理客户端与隧道代理服务端建立连接以后,在HTTP请求支持长连接模式下,设置连接状态为“keep-alive”,以减少重新建立TCP连接的开销。进一步地,隧道代理客户端向隧道代理服务端发送HTTPS请求时,当HTTPS同时发送多条请求时,隧道代理服务端建立多个不同的连接,将UUID作为不同连接的标示。进一步地,隧道代理服务端在80端口对隧道代理客户端进行异步监听,当接收到一个请求时,回调函数则被触发,与隧道代理客户端建立起一个连接,根据请求是GET还是POST,判断是HTTP请求还是HTTPS请求。进一步地,隧道代理服务端通过Squid代理服务器转发给目标服务器。一种基于HTTP协议的高隐匿网络代理系统,包括隧道代理客户端和隧道代理服务端;该隧道代理客户端包括监听用户请求模块、数据处理模块、发送HTTP请求模块;该监听用户请求模块用于开放一个或多个端口为用户提供TCP连接,以接收所有用户请求的原始数据用户可配置IP和端口号连接至代理客户端,浏览器会自动将数据发送给服务器。该数据处理模块用于对原始数据进行混淆处理,去除用户请求的字节数特征(如对某个网站的请求字节数保持固定)与关键字特征(如HTTP协议中的头部字段),再根据隧道协议封装成HTTP数据包;该发送HTTP请求模块用于将得到的HTTP数据包采用异步的方式发出,在收到响应前不会阻塞主线程;当收到用户需要的资源时,还原被隧道代理服本文档来自技高网
...

【技术保护点】
1.一种基于HTTP协议的高隐匿网络代理方法,包括以下步骤:通过一隧道代理客户端监听用户的请求,当用户发送HTTP请求时,接收用户请求的原始数据;对原始数据进行混淆处理,去除字节数特征和关键字特征,将用于还原数据的信息以键值对的方式放入HTTP请求的头部信息中;将经过上述混淆处理的数据封装成HTTP数据包,发送给一隧道代理服务端;隧道代理服务端对收到的HTTP数据包进行解封装,读取HTTP头部中含有的可用于还原数据的信息;根据HTTP头部中含有的可用于还原数据的信息进行数据还原,将还原的数据发送给目标服务器;隧道代理服务器从目标服务器获取被访问数据,对被访问数据进行混淆处理,去除字节数特征和关键字特征,将用于还原数据的信息以键值对的方式放入HTTP请求的头部信息中;将经过上述混淆处理的数据封装成HTTP数据包,发送给一隧道代理客户端;隧道代理客户端对收到的HTTP数据包进行解封装,读取HTTP头部中含有的可用于还原数据的信息;根据HTTP头部中含有的可用于还原数据的信息进行数据还原,将还原的数据发送给用户。

【技术特征摘要】
2019.01.02 CN 20191000120921.一种基于HTTP协议的高隐匿网络代理方法,包括以下步骤:通过一隧道代理客户端监听用户的请求,当用户发送HTTP请求时,接收用户请求的原始数据;对原始数据进行混淆处理,去除字节数特征和关键字特征,将用于还原数据的信息以键值对的方式放入HTTP请求的头部信息中;将经过上述混淆处理的数据封装成HTTP数据包,发送给一隧道代理服务端;隧道代理服务端对收到的HTTP数据包进行解封装,读取HTTP头部中含有的可用于还原数据的信息;根据HTTP头部中含有的可用于还原数据的信息进行数据还原,将还原的数据发送给目标服务器;隧道代理服务器从目标服务器获取被访问数据,对被访问数据进行混淆处理,去除字节数特征和关键字特征,将用于还原数据的信息以键值对的方式放入HTTP请求的头部信息中;将经过上述混淆处理的数据封装成HTTP数据包,发送给一隧道代理客户端;隧道代理客户端对收到的HTTP数据包进行解封装,读取HTTP头部中含有的可用于还原数据的信息;根据HTTP头部中含有的可用于还原数据的信息进行数据还原,将还原的数据发送给用户。2.如权利要求1所述的方法,其特征在于,用户发送的HTTP请求包括GET、POST、PUT、CONNECT。3.如权利要求1所述的方法,其特征在于,与用户建立TCP连接,创建一个唯一的UUID来标示此连接。4.如权利要求1所述的方法,其特征在于,混淆处理包括以下步骤:对用户发送的原始数据进行按位异或,隐藏数据中的关键字;通过已经协商好的种子值,利用random伪随机数发生器函数生成两个随机数n和x,生成n个长度为x的随机字符串;将经过异或的数据分为n段,在每一段的末尾添加上述生成的随机字符串,保证数据的字节数特征被混淆;将分组数据按照随机生成的数组的顺序打乱;把还原原始数据所必须的参数n、x以及数组打乱后的顺序储存。5.如权利要求4所述的方法,其特征在于,数据的解封装包括以下步骤:根据包头中提取的数字n、x,将服务器返回的加密数据分割为n段;去除每一段的最后x个字符,将剩下的字符按位异或;按照原来的顺序还原数组,并拼接字符串。6.如权利要求1所述的方法,其特征在于,隧道代理客户端向隧道代理服务端发送HTTP请求时,使用基于Python的异步通信Twisted框架中的函数,当一个请求发送完毕后,向主线...

【专利技术属性】
技术研发人员:彭怀梁龙思怡戴琼覃海湄
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1