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-AliveProxy-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代理前后的不同之处相关推荐

  1. 流媒体数据代理----Anychat

    "用户流媒体数据代理功能",使用该功能可以实现指定用户将其它用户的流媒体数据(音频.视频)做为自己的数据,转发给请求指定用户相关数据的用户. 应用场景:将指定用户(P)设置为其它用 ...

  2. 用另一种方式来讲解代理模式~

    说起代理模式,我算是对他三进三出了,文章至少写的有两篇了,但是我再去看的时候,总感觉不太容易理解,今天来一个我自己的真实案例,通过暑假实习找房子的经历来进行讲解代理模式. 静态代理 代理模式的话,大致 ...

  3. HCIA—代理ARP (路由式代理ARP+vlan内代理ARP+vlan间代理ARP) [理论+实验验证]

    衷心感谢三位大佬的博客 ! ! ! ! 这篇博客主要是为了记录笔记方便查看而整理, 主要内容整理来源: (58条消息) 代理ARP实验_在下小黄的博客-CSDN博客_arp代理实验 (58条消息) 代 ...

  4. 使用SSH做SOCKS代理

    From: http://qiaodahai.com/ssh-socks-proxy.html 本文介绍如何使用SSH做SOCKS代理,通过Firefox浏览器上网. 首先,必须要有一个SSH账号. ...

  5. devServer和dev的区别,及vue代理接口的使用

    基本思路: 使用proxyTable就是代理服务接口. 备注dev 是 Vue CLI 2.x 的配置,Vue CLI 3.x 开始使用: 使用: 相当于获取对应的(正则匹配的)接口,然后重新代理到指 ...

  6. java代理模式-原来你是这样的代理

    这几天在看一些框架源码时看到了一个很奇妙的设计模式,有种熟悉个感觉,一时想不出是什么模式,后面经过了解才知道是动态代理,就这样带着好奇心学习了这个模式,更深入了解代理会发现不仅有静态和动态,还有很多其 ...

  7. 【python爬虫】在scrapy中利用代理IP(爬取BOSS直聘网)

    同学们好,我又滚回来更新了,这一次我们要爬取的目标是BOSS直聘,BOSS直聘可以说是反爬虫一个很好的例子了,主要在于如果你访问他的次数过多,他就会出现验证码,要求你通过验证才能继续看,这样还算可以, ...

  8. Filter过滤器和动态代理处理机制和案例(Filter过滤器和动态代理结合)

    关注公众号:"奇叔码技术" 回复:"java面试题大全"或者"java面试题" 即可免费领取资料 Filter过滤器和动态代理处理机制和案例 ...

  9. 独家 | 使用机器学习对非结构化数据加速查询-第2部分(具有统计保证的近似选择查询)...

    作者:Daniel Kang, Edward Gan, Peter Bailis, Tatsunori Hashimoto, and Matei Zaharia 翻译:殷之涵 校对:方星轩 本文约28 ...

最新文章

  1. Poisson Surface Reconstruction
  2. “口罩厂”霍尼韦尔搞出的量子计算机,刚刚获得了Nature认可
  3. 不是计算机专业学python能找到工作吗-非计算机行业为什么要转行学习Python编程...
  4. 系统测试分类和测试常用方法
  5. JS解析格式化Json插件,Json和XML互相转换插件
  6. MFC:ID命名和数字约定
  7. 【Vue2.0】—数据代理(一)
  8. InstallShield 2012 Spring新功能试用(6): InstallScript工程支持64位组件(Components)...
  9. Silicio for Mac(迷你播放器)免费版
  10. tp3.2 判断请求类型
  11. 关于郑州大学校园网锐捷客户端禁止热点分享,禁止多网卡的解决办法
  12. leecode:707. 设计链表
  13. Linux常用命令 shell脚本for QA-数据脱敏版2
  14. Excel教程(8) - 财务函数
  15. 【独行秀才】macOS Big Sur 11.5 Beta 1(20G5023d)原版镜像
  16. c语言能让键盘失灵怎么办,电脑键盘个别字母失灵的三种解决方法
  17. ffmpeg利用滤镜合并四个视频,左一右三
  18. python Note II
  19. 10 个神奇的网站,助力带薪摸鱼
  20. vue echarts 实现地图大气泡图

热门文章

  1. 淘宝网深圳专场招聘会亲历记
  2. Linux和Win10双系统出现GUN GRUB解决方法
  3. 不公平才是世界的真相----摘自罗辑思维
  4. 正确解决:坑爹的0xc000007b——应用程序无法正常启动
  5. 荣耀20android版本10什么意思,手机 篇一:荣耀10的老用户要不要换荣耀20Pro
  6. 如何翻译图片?这些实用方法值得收藏
  7. 微信小程序之滔搏运动
  8. 如何成为新媒体百万大咖?教你5分钟学会制作电影解说短视频
  9. 在matlab中find是什么意思,Matlab中find函数的使用说明
  10. 一个男人关心的东西决定了他的层次