首页 价格 教程中心 图形识别new

免费送1G流量

CN
HTTP代理协议分析和使用详解

HTTP代理的原理:

HTTP代理服务器会自动提取请求数据包的HTTP Request数据,并且把HTTP Response的数据转发给发送请求的客户端;HTTP代理服务器使用的端口通常是8080,如下图所示:

HTTP代理协议分析和使用详解.png

1、对于Web客户端来说,代理扮演的服务器角色,接收请求(Request),返回响应(Response)。

2、对于Web服务器来说,代理扮演的客户端角色,发送请求(Request),接收响应(Response)。


HTTP代理协议:

直接请求(不使用代理)->

GET / HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Host: www.what21.com
Connection: Keep-Alive
Cookie: CNZZDATA1252995935=579722882-1456319452-%7C1472176395;


代理请求(使用代理协议)->

GET http://www.what21.com/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Proxy-Connection: Keep-Alive
Host: www.what21.com
Cookie: CNZZDATA1252995935=579722882-1456319452-%7C1472176395;


Accept:请求报头域用于指定客户端接受哪些类型的信息。

Accept:text/html,表明客户端希望接受html文本。

Accept-Language请求报头域类似于Accept,但是它是用于指定一种自然语言。

User-Agent:请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。如果不使用User-Agent请求报头域,服务器端就无法得知客户端的属性信息。

上述协议头多了Proxy-Connection: Keep-Alive。

HTTP协议中Connection是用来对HTTP协议连接进行的说明,如果是多个说明,使用英文逗号分隔。Proxy代表了代理。


HTTP/1.1协议中共定义了8种方法(也叫“动作”)来以不同方式操作指定的资源:

1、OPTIONS方法:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

2、HEAD方法:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部份。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

3、GET方法:向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。参见安全方法

4、 POST方法:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

5、PUT方法:向指定资源位置上传其最新内容。

6、DELETE方法:请求服务器删除Request-URI所标识的资源。

7、TRACE方法:回显服务器收到的请求,主要用于测试或诊断。

8、CONNECT方法:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。

connect方法的通常就是把服务器作为跳板机,让服务器直接代理客户端访问,然后把数据原原本本的返回给客户端,connect方法的原理就是TCP直连。

connect方法请求协议:

CONNECT http://www.what21.com:80/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Proxy-Connection: Keep-Alive
Host: www.what21.com


Get、POST和Connect代理区别:

connect是在HTTP1.1协议上才新增的方法,用于支撑https加密。


HTTP协议抓包工具:

1、Wireshark:

地址:https://www.wireshark.org/

说明:一个网络封包分析软件,支持HTTP协议分析。

2、SmartSniff:

地址:http://www.nirsoft.net/utils/smsniff.html

说明:一个免费的数据包截获工具,可以用来研究各种代理与客户端之间是如何建立TCP链接,smartsniff捕获以太网数据包和第三层(IP)数据包,要求用户安装WinPcap Capture驱动。

3、HTTPLook

说明:HTTP协议嗅探器,能捕捉到本机与其它任何服务器的HTTP通讯协议。


HTTP代理功能上名称的区别:

1、全匿名代理,不改变客户端的request fields(请求信息),使服务器端看来就像有个真正的客户浏览器在访问。客户端的真实IP是隐藏起来的。 

2、普通匿名代理,能隐藏客户端的真实IP,但会更改客户端的request fields(请求信息),服务器端有可能会被认为使用了代理。 

3、透明代理(简单代理),改变客户端的request fields(请求信息),并会传送真实IP地址。


HTTP代理协议客户端配置和实现:

IE浏览器设置代理服务器:http://www.what21.com/sys/view/windows_windows-basis_1456896376175.html

Java实现HTTP代理客户端协议:http://www.what21.com/sys/view/java_java-network_1456896037636.html


HTTP代理的功能:

1、私网环境下,借助代理服务器上公网。

2、突破IP访问限制,例如,访问国外站点,当限制了IP时,可以使用代理访问。

3、提供访问效率,代理服务器会设置缓存,这样就节省了再次访问的成本。

4、隐藏真实IP,通过代理服务器隐藏自己机器的IP地址。