Http代理前后的不同之处
winsock实现HTTP代理提交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: 百度一下,你就知道
Connection: Keep-Alive
再看看使用代理的连接方法
先连接代理服务器(IP地址、端口),然后向代理服务器提交这样的HTTP头
GET 百度一下,你就知道 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: 百度一下,你就知道
Proxy-Connection: Keep-Alive
区别就这么一点,
1、连接的不是目标服务器的IP地址和端口而是代理服务器IP地址和端口
2、提交的不是相对的地址而是绝对的HTTP地址
3、Connection: Keep-Alive 和 Proxy-Connection: Keep-Alive 的 区别
再说说第二种方法:
其实这种方法很强大,他除了可以实现HTTP协议的代理,还可以实现其他TCP/IP协议的处理。
如:POP2、SMTP、FTP等等
先看看理论把,其实就是客户端连接代理服务器后,让代理服务器去连接远程服务器,当代理服务器连接好远程服务器
成功后,会返回连接结果给客户端,这时客户端判断结果,如果连接成功了就直接发送正常的数据给代理,代理收到数据
后立刻转发给服务器,其实就是个中转站。就是开始连接的时候不同,后面所有的通讯可以照常操作
客户端先连接代理服务器,然后向代理服务器提交请求,告诉他要连接到哪:
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: 百度一下,你就知道
Connection: Keep-Alive
然后就可以收到远程服务器发过来的网页信息了
如何判断返回的消息接收完了呢?有时候消息会分成几段来返回
这个要看协议的,如果是HTTP协议,可以有两种方式判断。
1、通过Content-length的值判断要接收的数据大小,数据够了就断开连接,注意,HTTP头的数据大小不算。
2、在HTTP换上Connection: Close,由服务器发送完服务器自动断开,不用你去判断什么时候该断开
你就管收数据,收到 Close事件时断开连接就可以了。

相关推荐
172022-12
短效HTTP代理相关问题介绍
172022-12
HTTP代理IP应该如何去使用?
292022-11
HTTP代理IP全新上线,基本简介
292022-11
http代理的功能主要有哪些?了解一下。
292022-11
什么是HTTP代理 HTTP代理是做什么用的?
292022-11
爬虫ip老是不够,老是被封,有哪些好的ip代理供应商?
292022-11
HTTP代理都是有什么功能,可以运用于哪里?
292022-11
如何使用Socks5代理IP上网呢?-华益云HTTP
292022-11
使用高匿名代理 IP 有什么优点?
292022-11
iphone上的http代理是什么意思?
292022-11
如何通过浏览器使用socks5代理IP
292022-11
如何快速理解 HTTP协议和 HTTPS 协议
292022-11
代理IP的稳定性和响应速度 以及该注意什么
292022-11
获得代理 python爬虫之抓取代理服务器IP
292022-11