HTTP代理协议梳理

HTTP代理协议

两种方式均在squid代理模式下抓取。

1.第一种,一般在直连服务端口时使用,比如指定80 或者8080 等非加密端口(如433)

抓包browser->squid:

GET http://xxx.cn/ 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; .NET4.0C; .NET4.0E; InfoPath.3)
Accept-Encoding: gzip, deflate
If-Modified-Since: Tue, 13 Jan 2015 13:49:51 GMT
Host: xxx.cn
Proxy-Connection: Keep-Alive

HTTP/1.0 304 Not Modified
Server: Tengine/1.3.0
Date: Thu, 14 Apr 2016 01:17:09 GMT
Last-Modified: Tue, 13 Jan 2015 13:49:51 GMT
X-Cache: MISS from localhost
X-Cache-Lookup: MISS from localhost:3128
Via: 1.0 localhost (squid/3.1.19)
Connection: keep-alive

 

squid->server

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; .NET4.0C; .NET4.0E; InfoPath.3)
Accept-Encoding: gzip, deflate
If-Modified-Since: Tue, 13 Jan 2015 13:49:51 GMT
Host: xxx.cn
Via: 1.1 localhost (squid/3.1.19)
X-Forwarded-For: 192.168.100.177
Cache-Control: max-age=259200
Connection: keep-alive

HTTP/1.1 304 Not Modified
Server: Tengine/1.3.0
Date: Wed, 20 Apr 2016 02:07:31 GMT
Last-Modified: Tue, 13 Jan 2015 13:49:51 GMT
Connection: keep-alive

 

GET请求中发现 GET http://xxx.cn/ HTTP/1.1 填写的是完整域名+URI  并且Head中的Connection 变成了Proxy-Connection,在此之外没有其他改变。 另squid增加了Via 和X-Forwarded-For的部分额外的头 。squid将消息修改为正常请求的HTTP并发送出去返回结果原封不动返回给browser。

总结:

1.GET或者POST 完成服务路径不在是相对uri

2.Connection变成链接Proxy-Connection

 

2.第二种,使用HTTP CONNECT 方法,比如链接443端口

CONNECT www.baidu.com:443 HTTP/1.1
Host: www.baidu.com:443
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36

HTTP/1.0 200 Connection established

...........!..^7..9..,.]....z...v.
....X... ^"............A....;9-....K0.......+./.......
...9.....3...5./.
.................
www.baidu.com.....#..
A
N9p.U...y........X..r.s..ha[.h%...96*.s.....8Y..UE.~:#..3.<@"..‘.S.|.T....,....Go.K..p....E....6......k.;Z;..k...h....y.^.h.*|y.J.9.W/r.......LV.....%.......G.hN......J([email protected]
.................................3t.............h2.spdy/3.1.http/1.1uP.........
...........d........................................................................................................`...\...5N...
....3.P.-..........8x.... ^"............A....;9-....K0...../...............http/1.1..........(
....9..| .Ku..y.*...Z.L/.#;..d.....9..^..........(........(....W1.M^%8%.......<zN....CG...

 

HTTP CONNECT方法是http提供的专门用与代理链接的方法。

browser 使用CONNECT方法 发送消息给代理服务器,

CONNECT www.baidu.com:443 HTTP/1.1
Host: www.baidu.com:443
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36

LRLF

代理服务器链接成功返回

HTTP/1.0 200 Connection established

LRLF

 

之后直接相当于tcp链接透传消息。

 

以上为HTTP代理的两种代理方式。

时间: 2024-07-31 09:47:20

HTTP代理协议梳理的相关文章

iOS 面试常见问题最全梳理

序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了.今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,加之,培训机构一火车地向用人单位输送iOS开发人员,打破了生态圈的动态平衡.矫情一下,言归正传,我奉献一下,为iOS应聘者梳理一下面试题,希望能助一臂之力! OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定.动态加载等).总体来讲,OC确实是一门不错的编程语言,

iOS面试必看,最全梳理

http://www.cocoachina.com/ios/20160323/15770.html 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了.今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,加之,培训机构一火车地向用人单位输送iOS开发人员,打破了生态圈的动态平衡.矫情一下,言归正传,我奉献一下,为iOS应聘者梳理一下面试题,希望能助一臂之力! OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特

iOS面试问题全面梳理 --持续更新

序言 目前,参加到iOS队伍的人是越来越多,形式不容乐观.因此,为iOS应聘者梳理一下面试题,希望能助一臂之力! OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定.动态加载等).总体来讲,OC确实是一门不错的编程语言, Objective-C具有相当多的动态特性,表现为三方面:动态类型(Dynamic typing).动态绑定(Dynamic binding)和动态加载(Dynamic l

iOS知识点全梳理-备用

感谢大神分享 文/Jack_lin(简书作者)原文链接:http://www.jianshu.com/p/5d2163640e26著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了.今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,加之,培训机构一火车地向用人单位输送iOS开发人员,打破了生态圈的动态平衡.矫情一下,言归正传,我奉献一下,为iOS应聘者梳理一下面试题,希望能助一臂之力! OC的理解与特性

Java I/O— 梳理各种“流”

背景 Java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入. -- 百度百科 Java.io中有很多类,我们如何清楚地知道什么时候该用什么类呢? 目标 本文的目标是梳理java.io中各个类的关系,了解各个类的应用场景. 概念 数据源,数据流,目的地.在看关于java io的相关代码时,每次都要问问自己此时这三者各指的是谁.而本文主要是说数据流的. 归类 按不同分类方法,将各种"

OC之代理协议的新概念

网摘) OBJC 中的 protocol 相当于 java 里的接口,delagate 就是接口的实现类(C中的回调类似 ): 数据源就是对象遵循了存储数据的协议,可以存储使用数据 协议表示了方法可以被任何类所实现.协议本身不是类.他们只是简单定义了一个其他对象可以实现的接口.当你的类实现了协议中的某个方法的时候也就是说你的类实现了那个协议. Objective-C的另一个扩展称为协议,它非常象Java中的接口.两者都是通过一个简单的方法声明列表发布一个接口,任何类都可以选择实现.协议中的方法通

iOS 知识点梳理

OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定.动态加载等).总体来讲,OC确实是一门不错的编程语言, Objective-C具有相当多的动态特性,表现为三方面:动态类型(Dynamic typing).动态绑定(Dynamic binding)和动态加载(Dynamic loading).动态——必须到运行时(run time)才会做的一些事情. 动态类型:即运行时再决定对象的类型,这

JavaScript内容梳理 示例之模态对话框 示例之全选和反选以及取消 示例之后台管理左侧菜单

1 <!DOCTYPE html> 2 <!--示例之模态对话框--> 3 <html lang="en"> 4 <head> 5 <meta charset="UTF-8"> 6 <title>Title</title> 7 <style> 8 .hide{ 9 display: none; 10 } 11 .c1{ 12 position: fixed; 13 lef

前端团队成长计划(一):基础知识梳理

一个月前我开始了前端团队的成长计划,主要主语两方面的考虑:校招应届生能快速进入工作的状态达到一个能支撑业务的技能水平,提前学习主流前端技术,为未来的业务代码重构做储备.5月是整个计划的第一个阶段,主要的任务是,梳理常规前端基础知识和开发技能. 5月的计划如下:(偏基础) 1.js和css的一些规范以及常规功能如何实现: 2.了解现有业务工程的开发,部署,上线流程以及原理,做到可交叉维护: 3.初步了解gulp,为下一阶段做准备. 4.了解PC开发中常见的问题以及IE浏览器的兼容方式(IE8+)