CN109756501B - 一种基于http协议的高隐匿网络代理方法及系统 - Google Patents

一种基于http协议的高隐匿网络代理方法及系统 Download PDF

Info

Publication number
CN109756501B
CN109756501B CN201910032097.7A CN201910032097A CN109756501B CN 109756501 B CN109756501 B CN 109756501B CN 201910032097 A CN201910032097 A CN 201910032097A CN 109756501 B CN109756501 B CN 109756501B
Authority
CN
China
Prior art keywords
data
http
request
proxy
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910032097.7A
Other languages
English (en)
Other versions
CN109756501A (zh
Inventor
彭怀梁
龙思怡
戴琼
覃海湄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Publication of CN109756501A publication Critical patent/CN109756501A/zh
Application granted granted Critical
Publication of CN109756501B publication Critical patent/CN109756501B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

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

Description

一种基于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数据包采用异步的方式发出,在收到响应前不会阻塞主线程;当收到用户需要的资源时,还原被隧道代理服务端混淆过的数据,并返还给用户;
该隧道代理服务端包括HTTP服务器模块、数据处理模块、代理转发模块;
该HTTP服务器模块用于接收隧道代理客户端发来的HTTP请求,并开放80端口供客户端连接,在成功接收数据后,隧道代理服务端不会立刻返回响应,而是将数据交给数据处理模块并等待操作完成;若有可以返回的资源就以200OK的状态码返回响应,否则返回404状态码;
该数据处理模块用于将数据从HTTP请求包的负载中取出,并根据请求头中的序列数组还原数据原本的顺序;根据协商好的种子值生成与客户端混淆时相同的两个随机数x和n,并据此去掉添加的随机字符串,得出真实数据,交给代理转发模块。由代理返回的数据可通过与客户端数据处理模块相同的步骤进行混淆。
该代理转发模块用于采用Squid作为缓存和转发的媒介,以此为基础实现普通代理的基础功能,包括缓存命中判断、协议解析等功能。用户请求被解析后首先会在缓存中进行搜索,若缓存中存在该资源,则直接返回给用户,否则需要请求目标服务器并取得资源响应。
现有技术的代理通过转发用户流量和数据缓存提升用户的上网体验,而本发明通过隧道技术改变代理架构、采用数据拆分与混淆技术对数据实现二次保护、使用异步通信框架保证代理性能,实现了一种增强现有代理安全性能的保密通信方案。
本发明在架构上由隧道代理客户端和隧道代理服务端两个部分组成,两者运行不同的代理程序,并部署在两台服务器上。其中,隧道代理客户端可被部署于互联网中的任意一台机器上,服务端需部署在客户端能够访问到的机器,两者的位置取决于具体的应用场景。在这两者之间将通过代理程序构建一条应用层隧道,保证两端间传输的数据能够抵御抗流量识别。用户可通过IP和端口号连接隧道代理客户端,数据经过代理程序的处理后被异步转发给隧道代理服务端,服务端重组并还原原始信息后通过代理模块转发给目标服务器,并完成普通代理的功能。
本发明可以以模块的形式与现有代理软件结合,灵活地为代理通信过程提供额外的安全保障。通过隧道协议封装原始数据包,隐藏真实数据的协议特征码,达到隐匿用户会话过程的目的。采用数据拆分与混淆的方法来保证信息内容与长度的随机性,无法通过特殊字段或长度识别出经过混淆的数据。相较于容易被防火墙提取特征码的加密手段,混淆处理的速度更快,更难被具有流量识别和行为检测的防火墙拦截。选择异步通信隧道模型为用户提供相比同步通信更加稳定快速的代理服务。本发明解决了经过代理转发的流量存在被提取隐私信息的问题,增强抵御流量识别的能力。混淆运算相对于加密运算而言,减小了运行代理程序的机器的计算量和占用率,使得服务器可以承载更多用户的并发访问。通过映射不同的端口可以在一台电脑上部署多台代理,更灵活、成本更低廉。配置方便、简洁,为用户提供了稳定、安全、高效的代理服务。适用于数据采集、行为隐匿、网络加速等多种应用场景。
附图说明
图1是一种基于HTTP协议的高隐匿网络代理系统工作流程图。
图2是混淆算法流程图。
图3是客户端时序流程图。
图4是服务端时序流程图。
图5是代理运行截图。
图6是Wireshark着色规则图。
图7是HTTP隧道流量测试图。
图8是防火墙规则图。
图9是开启防火墙下的浏览器访问结果图(左:未开启防火墙访问HTTPS网站,中:开启防火墙访问HTTPS网站,右:开启防火墙访问HTTP网站)。
图10是开启代理与防火墙的浏览器访问结果图。
图11是原始数据长度和封装数据的长度对比图。
图12是关闭代理时的传输速度图。
图13是开启代理时的传输速度图。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
本实施例提供一种基于HTTP协议的高隐匿网络代理系统,如图1所示。一个完整的HTTP请求转发过程需要用户、隧道代理客户端、隧道代理服务端和目标服务器四者共同参与才能完成。整个过程可以分为两个部分,用户向目标服务器发送HTTP请求和服务器返回资源响应的过程。具体说明如下:
(1)隧道代理客户端在对应的端口监听,每当用户向互联网中的服务器发送HTTP请求(GET、POST、PUT或者CONNECT等)时,就会与用户建立起一个TCP连接。连接建立后,客户端会创建一个唯一的UUID,用于标示此连接。之后的数据传输都会基于对应的连接进行。
(2)客户端每次接收到HTTP请求后,会对原始数据进行混淆,包括分组,分组后的每一段数据都会被加上随机生成的冗余字符串,然后进行打乱。而用于还原数据的信息将会以键值对的方式放入HTTP请求的头部信息中被发送给服务端。
数据混淆与还原是客户端和服务端公共的功能模块。该模块的目标是去除经过加密或是未经过加密的用户流量的字节数特征(如对某个网站的请求字节数保持固定)与关键字特征(如HTTP协议中的头部字段),同时保证某段数据的上下文无关性。
混淆算法流程如图2所示:
1)对用户发送的原始数据进行按位异或,隐藏数据中的关键字。
2)通过在代理程序运行前已经协商好的种子值,利用random伪随机数发生器函数生成两个随机数n和x。然后生成n个长度为x的随机字符串。将经过异或的数据分为n段,在每一段的末尾添加上一步生成的随机字符串,保证数据的字节数特征被混淆。
3)将分组数据按照随机生成的数组的顺序打乱,保证数据即使被截获,也无法根据密文还原出原本数据。
4)最后把还原原始数据所必须的参数,以及数组打乱后的顺序储存,交给封装模块。
(3)隧道代理客户端在封装经过处理的数据前,会根据真实数据检测用户请求属于HTTP还是HTTPS,然后将其作为GET或者POST请求的负载。除此之外,上一步产生的信息也会被作为头部的一部分交给HTTP发送模块。
隧道协议封装:
隧道技术是指通过隧道协议封装真实数据包并路由的方法。考虑到HTTP协议作为使用最广泛的应用层协议,在拥有较高带宽的同时易于隐藏数据,因此本发明的隧道协议选取了HTTP协议。首先新建一个HTTP请求数据包,将请求URL改为隧道代理服务端的IP地址与端口号,并在HTTP头部字段中加上key为"Random-List",值为乱序数组原本顺序的键值对。然后判断该请求为HTTP请求或HTTPS请求,若为HTTP请求,设置隧道代理客户端的请求方式为GET,若为HTTPS请求,设置方式为POST。需要区分两类请求的原因是HTTPS请求需要使用CONNECT方法与目标服务器建立连接。最后将混淆后的数据放入请求负载中,交给发送模块。
(4)客户端发送HTTP请求时相当于普通的HTTP客户端。它使用了Twisted框架中的函数,每当请求发送完毕后,向主线程注册一个回调函数,只有当有数据返回时才会被触发,且该连接在TIMEOUT后会自动断开。当客户端与服务端建立连接以后,设置连接状态为“keep-alive”,可以减少重新建立TCP连接的开销。但只有HTTP请求支持长连接模式,即一次TCP连接可支持多个请求响应,但同时最多只能存在一个请求。而HTTPS存在同时发送多条请求的情况,此时服务端会建立多个不同的连接,此时就需要UUID作为URL的一部分来帮助服务器划分。
(5)隧道代理服务端异步监听在80端口,每当接收到一个请求时,回调函数就会被触发,与客户端建立起一个连接。并根据请求是GET还是POST判断为哪种类型,然后交给不同的对象处理。HTTP请求从用户到目标服务器都是一一对应的连接,但HTTPS请求在从客户端发往服务端的过程中可能会分成数个POST请求。此时需要一个全局的变量来储存UUID与其对应的连接,才能保证数据传输不会出错。
(6)数据解封装的模块取出HTTP数据包中的有效负载,并且读取HTTP头部中有用的信息。
(7)数据还原。根据上一步提取的信息,程序会根据算法还原出原始数据。并交给代理转发模块。
(8)代理转发模块采用了Squid作为主要组成部分,由于Squid发展历史悠久,对于HTTP/HTTPS协议的支持达到很高的程度。且其性能相较于其他代理软件也处于行业前列,被不少大型企业用于专业缓存服务器。此模块会将上一步得到的原始请求数据交由Squid转发给真正的目标服务器,Squid接收到响应后再返回给HTTP隧道代理服务端。
监听请求和发送请求均基于Python的异步通信框架Twisted实现。本发明设计的系统主要使用了Twisted的网络编程部分,
本发明所设计系统的客户端时序流程如图3所示。首先由主函数向reactor事件管理器中注册一个监听事件,每当用户发起新的HTTP连接时,程序会创建一个Protocol对象来处理和数据传输有关的操作,如连接建立、数据接收、连接断开等等。当TCP三次握手完成后,Protocol对象的connectionMade回调函数被触发,并创建一个Agent对象,设置此TCP连接为长连接,然后由该对象负责与隧道代理服务端建立连接。之后每当用户通过该连接发送数据时,都将触发dataReceived回调函数,通过是否有“CONNECT”字段判断该请求为HTTP或是HTTPS,若为HTTP请求,则设置请求方法为GET,然后将数据进行混淆处理,再作为该请求的负载发送出去。若为HTTPS请求,需要将标志位置1,然后以POST请求的格式发送。发送操作会生成一个deferred对象,当该请求得到返回数据后deferred对象会调用成功或失败的回调函数,把数据返回给用户。需要注意的是,由于HTTPS协议的特性,转交数据的过程对数据包接收顺序的要求没有HTTP严格,属于盲转发类型。
隧道代理服务端功能模块与客户端基本相同,但增加了代理模块。选择使用已开源的Squid代理作为代理转发模块,在Squid原有代码的基础上进行二次开发,增加了多IP自动部署、代理资源调度等功能。
如图4,程序首先会向reactor中注册监听函数,每当客户端请求连接时,创建一个HTTPServerProtocol对象处理数据。而该对象在连接成功建立后,会向Squid模块监听的3128端口发起连接,并新建一个ClientProtocol对象来处理此连接的数据传输。此时,由于HTTPServerProtocol只能处理服务端与客户端的传输,ClientProtocol只能处理服务端与代理模块的传输,但实际上由前者接收到的数据需要通过后者才能转发出去,反过来也是如此。因此,需要在新建ClientProtocol对象时互相把对方作为参数保存起来。之后每当服务端接收到客户端消息时,处理后调用ClientProtocol的write函数发送给代理模块,而接收到代理的返回信息时调用HTTPServerProtocol的write函数写回给客户端。
对本发明的系统进入如下测试:
1.测试环境
本文的测试环境由两台服务器组成,服务器A部署隧道代理客户端,服务器B部署隧道代理服务端。服务器详细参数如表1所示。
表1服务器参数
Figure GDA0002407843760000081
流量测试的软件为Wireshark,用户本机将浏览器的HTTP和HTTPS代理均设置为192.168.140.190:8765即可进行测试。
功能测试
代理最主要的功能在于能够稳定的转发用户的请求,并把响应转交给用户。针对本文所设计的系统的特点,首先应能实现普通代理所具有的全部功能,其次必须保证在隧道代理客户端与服务端之间传输的均为HTTP流量,保证封装内容的隐蔽性,并且能够穿透防火墙对固定端口和协议的限制。同时,混淆模块对数据处理之后,应能隐藏数据的关键字和字节数特征。
(1)代理转发功能。图5所示的为运行隧道代理客户端和服务端以后,用户使用代理访问某网站的结果。可见该代理具备市面上大多数代理软件具有的基本功能,能够满足普通用户的使用需求。
(2)HTTP隧道流量测试。如图6所示,Wireshark对所有能够过滤的协议类型都用不同的颜色进行标记。其中HTTP流量的着色规则为绿色,即所有满足数据包格式为http或http2协议以及TCP端口号为80的数据包均为HTTP流量,同时这也是普通防火墙区分HTTP流量的方式。
启动代理之后,用Wireshark抓取隧道代理客户端和服务端之间的流量,并设置过滤器规则筛选出所有IP地址包括192.168.140.219的流量。图7为实验结果,从右边的缩略栏中可以看出,全部流量均为HTTP流量。由此可以证明该隧道已成功建立,且符合系统设计的要求。
(3)防火墙穿透测试。首先对防火墙的规则进行设置,如图8所示。
在192.168.140.219的隧道代理服务端架设squid服务,用户机器设置代理端口为192.168.140.219:3128可正常访问(如图9左)。当用户开启pf防火墙之后,访问非80端口的流量全部被丢弃(如图9中、右)。
实验证明,当防火墙被开启以后,访问请求受限,用户将会无法正常收到响应。比如限制了80端口的访问,那么基于443端口的HTTPS请求数据包就会被丢弃。与此相对,图10为开启隧道代理以后的访问结果,由于所有的流量都通过80端口转发,不会被防火墙拦截。
(4)数据处理模块测试。数据混淆模块解决的核心问题是保证随机性,以去除某段会话具有的数据特征。如图11所示,左为抓取浏览器发送的原始数据长度,根据相同的ID与右侧对比,数据包的长度被随机改变了。且根据下方Data区域所示,数据包的内容被隐藏起来,无法侦测到原本数据的格式和内容。
3.并发性能测试
对比关闭代理(见图12)和开启代理(见图13)时的传输速率,可以发现开启代理时的延迟差不多是关闭代理时的一倍。但由于这个速率是毫秒级别的,所以并不会影响用户的实际使用。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

Claims (10)

1.一种基于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框架中的函数,当一个请求发送完毕后,向主线程注册一个回调函数,当有数据返回时才会被触发,且隧道代理客户端与隧道代理服务端的连接在TIMEOUT后会自动断开;当隧道代理客户端与隧道代理服务端建立连接以后,在HTTP请求支持长连接模式下,设置连接状态为“keep-alive”,以减少重新建立TCP连接的开销。
7.如权利要求1所述的方法,其特征在于,隧道代理客户端向隧道代理服务端发送HTTPS请求时,当HTTPS同时发送多条请求时,隧道代理服务端建立多个不同的连接,将UUID作为不同连接的标示。
8.如权利要求1所述的方法,其特征在于,封装数据前,检测用户请求属于HTTP还是HTTPS,将待封装的数据作为GET或者POST请求的负载;
隧道代理服务端在80端口对隧道代理客户端进行异步监听,当接收到一个请求时,回调函数则被触发,与隧道代理客户端建立起一个连接,根据请求是GET还是POST,判断是HTTP请求还是HTTPS请求。
9.如权利要求1所述的方法,其特征在于,隧道代理服务端通过Squid代理服务器转发给目标服务器。
10.一种基于HTTP协议的高隐匿网络代理系统,包括隧道代理客户端和隧道代理服务端;
该隧道代理客户端包括监听用户请求模块、数据处理模块、发送HTTP请求模块;
该监听用户请求模块用于开放一个或多个端口为用户提供TCP连接,以接收所有用户请求的原始数据用户可配置IP和端口号连接至代理客户端;
该数据处理模块用于对原始数据进行混淆处理,去除用户请求的字节数特征与关键字特征,再根据隧道协议封装成HTTP数据包;
该发送HTTP请求模块用于将得到的HTTP数据包采用异步的方式发出,在收到响应前不会阻塞主线程;当收到用户需要的资源时,还原被隧道代理服务端混淆过的数据,并返还给用户;
该隧道代理服务端包括HTTP服务器模块、数据处理模块、代理转发模块;
该HTTP服务器模块用于接收隧道代理客户端发来的HTTP请求,将成功接收到的数据发给数据处理模块并等待操作完成,根据是否有可返回资源来返回不同状态码的响应;
该数据处理模块用于将数据从HTTP请求包的负载中取出,并根据请求头中的序列数组还原数据原本的顺序,生成与隧道代理客户端混淆时相同的两个随机数x和n,并据此去掉添加的随机字符串,得出真实数据并交给代理转发模块,将代理转发模块返回的数据进行混淆处理;
该代理转发模块用于采用Squid作为缓存和转发的媒介,将用户请求解析后先在缓存中进行搜索,若缓存中存在该资源,则直接返回给用户,否则请求目标服务器并取得资源响应。
CN201910032097.7A 2019-01-02 2019-01-14 一种基于http协议的高隐匿网络代理方法及系统 Active CN109756501B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910001209 2019-01-02
CN2019100012092 2019-01-02

Publications (2)

Publication Number Publication Date
CN109756501A CN109756501A (zh) 2019-05-14
CN109756501B true CN109756501B (zh) 2020-05-22

Family

ID=66405696

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910032097.7A Active CN109756501B (zh) 2019-01-02 2019-01-14 一种基于http协议的高隐匿网络代理方法及系统

Country Status (1)

Country Link
CN (1) CN109756501B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110233774B (zh) * 2019-05-28 2020-12-29 华中科技大学 一种Socks代理服务器的探测方法、分布式探测方法和系统
CN111835728B (zh) * 2020-06-15 2023-09-01 广州海颐信息安全技术有限公司 隐匿特权访问真实网络和协议的方法及装置
CN111818166B (zh) * 2020-07-09 2022-12-09 杭州隐捷适生物科技有限公司 采用http协议代理数据库协议的通信中间件的实现方法
CN112214333B (zh) * 2020-09-23 2023-08-22 安徽深迪科技有限公司 一种应用基于http协议的网页与本地应用通信协议的方法
CN112468599B (zh) * 2021-01-25 2021-05-11 广州大学 基于互联网文件存储服务的匿名通信方法、系统及设备
CN113282893A (zh) * 2021-04-27 2021-08-20 南方电网数字电网研究院有限公司 源代码加固方法、装置、计算机设备和存储介质
CN113965338B (zh) * 2021-08-24 2024-01-23 国网北京市电力公司 内网穿透方法
CN114157713B (zh) * 2021-10-09 2023-06-16 北京邮电大学 一种捕获隐藏服务流量的方法和系统
CN114244556B (zh) * 2021-11-05 2023-11-10 北京天融信网络安全技术有限公司 一种协议代理方法及装置
CN114268499B (zh) * 2021-12-23 2024-03-12 北京天融信网络安全技术有限公司 数据传输方法、装置、系统、设备和存储介质
CN114866279B (zh) * 2022-03-24 2023-07-25 中国科学院信息工程研究所 基于http请求有效负载的漏洞攻击流量检测方法和系统
CN117896178B (zh) * 2024-03-14 2024-05-28 北京长亭科技有限公司 一种基于加密协议伪装的隐蔽通信方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103944992B (zh) * 2014-04-25 2017-04-26 厦门享游网络科技有限公司 一种在ios上加速http的方法
CN105491169A (zh) * 2016-01-26 2016-04-13 苏州蜗牛数字科技股份有限公司 一种数据代理方法与系统
CN107528811A (zh) * 2016-06-21 2017-12-29 中兴通讯股份有限公司 请求的响应方法及装置
CN106657277B (zh) * 2016-11-24 2020-06-12 上海携程商务有限公司 Http代理服务方法及服务器和系统
CN108833487B (zh) * 2018-05-23 2021-05-04 南京大学 一种tcp传输协议代理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Tor 匿名通信流量在线识别方法;何高峰 等;《软件学报》;20140331;全文 *
基于云流量混淆的Tor匿名通信识别方法;何永忠 等;《工程科学与技术》;20170331;第49卷(第2期);全文 *

Also Published As

Publication number Publication date
CN109756501A (zh) 2019-05-14

Similar Documents

Publication Publication Date Title
CN109756501B (zh) 一种基于http协议的高隐匿网络代理方法及系统
US10637839B2 (en) Systems and methods for protecting communications between nodes
US20220407948A1 (en) Load Balancing and Session Persistence in Packet Networks
US9100370B2 (en) Strong SSL proxy authentication with forced SSL renegotiation against a target server
US10419398B2 (en) Method and apparatus for resource locator identifier rewrite
EP2850770B1 (en) Transport layer security traffic control using service name identification
CA2935435C (en) Secure network communication
US10020941B2 (en) Virtual encryption patching using multiple transport layer security implementations
CN106209838B (zh) Ssl vpn的ip接入方法及装置
US12028378B2 (en) Secure communication session resumption in a service function chain preliminary class
Ellard et al. Rebound: Decoy routing on asymmetric routes via error messages
CN107104929A (zh) 防御网络攻击的方法、装置和系统
Wang et al. MSYM: A multichannel communication system for android devices
CN113938474B (zh) 一种虚拟机访问方法、装置、电子设备和存储介质
CN114268499B (zh) 数据传输方法、装置、系统、设备和存储介质
Frolov Practical Countermeasures against Network Censorship
CN113965338A (zh) 内网穿透方法
CN116647598A (zh) 一种跨网数据交换方法、装置、系统、服务器及存储介质
CN115242552A (zh) 基于ipsec的报文转发方法及装置
Birkeland Software Defined Data Flow Isolation by Virtualization and Cryptographic Key Distribution
JP2001103096A (ja) ネットワークの構築方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant