Http代理前后的不同之处
winsock实现HTTP代理提交HTTP请求的方法有两种
1、直接请求
2、先连通远程服务器后就相普通提交请求一样提交HTTP请求
说一下第一种方法:
先说一下我们普通的提交HTTP请求的过程:
直接连接远程服务器后,当连接成功时向服务器提交HTTP头,注意看看大概的格式
GET / HTTP/1.1
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: www.baidu.com
Connection: Keep-Alive
再看看使用代理的连接方法
先连接代理服务器(IP地址、端口),然后向代理服务器提交这样的HTTP头
GET http://www.baidu.com/ HTTP/1.0
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: www.baidu.com
Proxy-Connection: Keep-Alive
区别就这么一点,
1、连接的不是目标服务器的IP地址和端口而是代理服务器IP地址和端口
2、提交的不是相对的地址而是绝对的HTTP地址
3、Connection: Keep-Alive 和 Proxy-Connection: Keep-Alive 的 区别
再说说第二种方法:
其实这种方法很强大,他除了可以实现HTTP协议的代理,还可以实现其他TCP/IP协议的处理。
如:POP2、SMTP、FTP等等
先看看理论把,其实就是客户端连接代理服务器后,让代理服务器去连接远程服务器,当代理服务器连接好远程服务器
成功后,会返回连接结果给客户端,这时客户端判断结果,如果连接成功了就直接发送正常的数据给代理,代理收到数据
后立刻转发给服务器,其实就是个中转站。就是开始连接的时候不同,后面所有的通讯可以照常操作
客户端先连接代理服务器,然后向代理服务器提交请求,告诉他要连接到哪:
CONNECT www.baidu.com:80 HTTP/1.1
Accept: */*
Content-Type: text/html
Proxy-Connection: Keep-Alive
Content-length: 0
这时,如果代理服务器连接成功会返回这样一段信息(客户端收到的信息,注意,不要这个时候断开连接哟,呵呵)
HTTP/1.0 200 Connection established
Proxy-agent: CCProxy 6.4.2 '这里是代理程序的名称,看你的是什么代理软件
这时你就可以发出正常的请求了
GET / HTTP/1.1
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: www.baidu.com
Connection: Keep-Alive
然后就可以收到远程服务器发过来的网页信息了
如何判断返回的消息接收完了呢?有时候消息会分成几段来返回
这个要看协议的,如果是HTTP协议,可以有两种方式判断。
1、通过Content-length的值判断要接收的数据大小,数据够了就断开连接,注意,HTTP头的数据大小不算。
2、在HTTP换上Connection: Close,由服务器发送完服务器自动断开,不用你去判断什么时候该断开
你就管收数据,收到 Close事件时断开连接就可以了。
Http代理前后的不同之处相关推荐
- 流媒体数据代理----Anychat
"用户流媒体数据代理功能",使用该功能可以实现指定用户将其它用户的流媒体数据(音频.视频)做为自己的数据,转发给请求指定用户相关数据的用户. 应用场景:将指定用户(P)设置为其它用 ...
- 用另一种方式来讲解代理模式~
说起代理模式,我算是对他三进三出了,文章至少写的有两篇了,但是我再去看的时候,总感觉不太容易理解,今天来一个我自己的真实案例,通过暑假实习找房子的经历来进行讲解代理模式. 静态代理 代理模式的话,大致 ...
- HCIA—代理ARP (路由式代理ARP+vlan内代理ARP+vlan间代理ARP) [理论+实验验证]
衷心感谢三位大佬的博客 ! ! ! ! 这篇博客主要是为了记录笔记方便查看而整理, 主要内容整理来源: (58条消息) 代理ARP实验_在下小黄的博客-CSDN博客_arp代理实验 (58条消息) 代 ...
- 使用SSH做SOCKS代理
From: http://qiaodahai.com/ssh-socks-proxy.html 本文介绍如何使用SSH做SOCKS代理,通过Firefox浏览器上网. 首先,必须要有一个SSH账号. ...
- devServer和dev的区别,及vue代理接口的使用
基本思路: 使用proxyTable就是代理服务接口. 备注dev 是 Vue CLI 2.x 的配置,Vue CLI 3.x 开始使用: 使用: 相当于获取对应的(正则匹配的)接口,然后重新代理到指 ...
- java代理模式-原来你是这样的代理
这几天在看一些框架源码时看到了一个很奇妙的设计模式,有种熟悉个感觉,一时想不出是什么模式,后面经过了解才知道是动态代理,就这样带着好奇心学习了这个模式,更深入了解代理会发现不仅有静态和动态,还有很多其 ...
- 【python爬虫】在scrapy中利用代理IP(爬取BOSS直聘网)
同学们好,我又滚回来更新了,这一次我们要爬取的目标是BOSS直聘,BOSS直聘可以说是反爬虫一个很好的例子了,主要在于如果你访问他的次数过多,他就会出现验证码,要求你通过验证才能继续看,这样还算可以, ...
- Filter过滤器和动态代理处理机制和案例(Filter过滤器和动态代理结合)
关注公众号:"奇叔码技术" 回复:"java面试题大全"或者"java面试题" 即可免费领取资料 Filter过滤器和动态代理处理机制和案例 ...
- 独家 | 使用机器学习对非结构化数据加速查询-第2部分(具有统计保证的近似选择查询)...
作者:Daniel Kang, Edward Gan, Peter Bailis, Tatsunori Hashimoto, and Matei Zaharia 翻译:殷之涵 校对:方星轩 本文约28 ...
最新文章
- Poisson Surface Reconstruction
- “口罩厂”霍尼韦尔搞出的量子计算机,刚刚获得了Nature认可
- 不是计算机专业学python能找到工作吗-非计算机行业为什么要转行学习Python编程...
- 系统测试分类和测试常用方法
- JS解析格式化Json插件,Json和XML互相转换插件
- MFC:ID命名和数字约定
- 【Vue2.0】—数据代理(一)
- InstallShield 2012 Spring新功能试用(6): InstallScript工程支持64位组件(Components)...
- Silicio for Mac(迷你播放器)免费版
- tp3.2 判断请求类型
- 关于郑州大学校园网锐捷客户端禁止热点分享,禁止多网卡的解决办法
- leecode:707. 设计链表
- Linux常用命令 shell脚本for QA-数据脱敏版2
- Excel教程(8) - 财务函数
- 【独行秀才】macOS Big Sur 11.5 Beta 1(20G5023d)原版镜像
- c语言能让键盘失灵怎么办,电脑键盘个别字母失灵的三种解决方法
- ffmpeg利用滤镜合并四个视频,左一右三
- python Note II
- 10 个神奇的网站,助力带薪摸鱼
- vue echarts 实现地图大气泡图