(一)HTTP代理原理
HTTP 客户端向代理发送请求报文,代理服务器需要正确地处理请求和连接(例如正确处理 Connection: keep-alive),同时向服务器发送请求,并将收到的响应转发给客户端。
举个例子,当我们在浏览器地址栏输入URL(网址)后,按下回车键之后会执行以下步骤:浏览器先向DNS服务器请求解析该URL(网址)中的域名所对应的IP地址;解析出IP地址后,根据该IP地址和默认端口 80,和服务器建立TCP连接;浏览器发出读取文件URL中域名后面部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器;服务器对浏览器请求作出响应,并把对应的html文本发送给浏览器;释放TCP连接;浏览器将该html文本并显示内容。
(二)代码实现
数据经过代理服务器后可能会经过修改,要小心数据有效性
1 │ var net = require('net')
2 │ var url = require('url')
3 │ var http = require('http')
4 │
5 │ var hostname = '127.0.0.1'
6 │ var port = '8888'
7 │
===================================
这个服务从请求报文中解析出请求 URL 和其他必要参数,新建到服务端的请求,
并把代理收到的请求转发给新建的请求,最后再把服务端响应返回给浏览器。
===================================
8 │ var request = (creq,cres)=>{
9 │ console.log(creq.header);
10 │ var u = url.parse(creq.url);
===============
重新构建请求
===============
11 │ var options = {
12 │ hostname : u.hostname,
13 │ port : u.port || 80,
14 │ path : u.path,
15 │ method : creq.method,
16 │ headers : creq.headers,
17 │ };
18 │
==================
得到响应
==================
19 │ var preq = http.request(options, (pres)=>{
20 │ cres.writeHead(pres.statusCode,pres.headers);//估计是添加头
21 │ pres.pipe(cres);//装入
22 │ }).on('error',function(e){
23 │ cres.end();
24 │ });
25 │ creq.pipe(preq);
26 │ }
27 │
==================================
这个服务从 CONNECT 请求报文中解析出域名和端口,
创建到服务端的 TCP 连接,并和 CONNECT 请求中的 TCP 连接串起来,
最后再响应一个 Connection Established 响应。
===============================
28 │ var connect = (creq, csock) =>{
29 │ console.log(creq.headers);
30 │
31 │ var u = url.parse("http://"+creq.url);
32 │
33 │ var psock = net.connect(u.port, u.hostname, ()=>{
34 │ csock.write('HTTP/1.1 200 Connection Established\r\n\r\n');
35 │ psock.pipe(csock);
36 │ }).on('error',(e)=>{
37 │ csock.end();
38 │ });
39 │ csock.pipe(psock);
40 │ }
41 │
42 │
43 │ var proxy = http.createServer().on('request',request).on('connect',connect);
44 │ proxy.listen(port, hostname,() =>{
45 │ console.log("Proxy run in 127.0.0.1:8888");
46 │ })
以上就是HTTP代理原理及其实现的步骤。
相关文章内容简介
1 代理IP不仅仅解决网络限制
代理IP不仅仅解决网络限制,很多人都知道使用代理IP可以解决网络的限制问题,例如注册帐号、访问外国网站、软件等。这是代理IP的主要用途,但其实还有很多用途供我们使用。 代理IP不仅仅解决网络限制 1.加快下载速度。有部分网站对下载是有限制的,例如限制一个IP只能下载一个,出现这样的情况可以通过代理IP工具,同时多IP一起下载了。 2.隐藏真实IP。代理IP开启后,真正的IP会被代理IP完全隐藏,这样保证了上网及个人信息的安全。 3.共享上网。通过代理服务器,可以对局域网有线宽带加以利用,提高内网用户的上网速度。同时还可以当做防火墙,保护内网的安全。 通过以上的介绍,相信大家都了解了代理IP的用途有很多。万变ip代理IP覆盖全国多城市,IP可用率高达97%,还可以自动切换IP,操作简单,再也不用担心IP被封的困扰。... [阅读全文]
2 私密代理ip适合大众使用吗?
私密代理ip适合大众使用吗?其实私密代理而且这种http代理ip资源在之前的人们耳中并不时常听到,随着时代的发展,他开始在人们的生活中活跃起来,越来越多的人开始对它有所了解。 如今信息非常的发达,科技的发展也日新月异,人们借助科技的发展和信心为自己的生活也带来了很多改变。但是在社会发展越来越好的时候,由于人们对信息的广泛使用,会出现泄露信息的一些现象。 人们在使用互联网的过程中,自己的照片或者是银行账号等,都有可能在不经意间泄露出去。那么我们应该如何改变这一现象的发生呢?这个时候我们就可以借助私密代理ip了。 那是很多人肯定都了解到了,HTTP代理IP服务都非常贵,只有一些大公司或是大企业才能负担得起费用,因此很多大众都对于这个平台望而却步。或许这也是万变云私密代理ip上市不久就受到了很多人欢迎的原因,这个平台按照使用的次数来收费,为大众节省了不少费用的同时才能很好地保护大家的隐私。... [阅读全文]
推荐阅读
19
2020-11
爬虫工作中遇到这些状态码的含义是什么?
在爬虫工作中经常遇到一些问题,我们可以通过返回的状态码找到出问题的原因以及解决方法,我们一起来看看都有哪些状态码,其代表的含义是什么。
04
2021-03
http代理ip常见的错误码解析
通常,在我们使用网页在线http代理ip时会遇到很多的错误代码,那么大家知道常见的错误代码是什么意思吗?下面就给大家详细介绍下相关信息。
06
2021-01
怎么获取代理ip的方法最靠谱?
为什么获得的 代理ip 不可用?对于一些特殊的应用场景,我们在工作和生活中经常会改变 ip地址 ,所以有必要使用代理ip软件来改变ip地址。获取代理ip的方法有很多,但不是所有获取的ip都可
04
2020-11
爬虫采集必须用代理IP吗?
相信大家经常会在公众号看到关于如何月入上万的推文,点开一看发现是介绍python爬虫的内容,讲述这个行业在市场是多么紧俏,最后推出相应课程供大家学习。的确现在市面上稀缺爬虫工程师
23
2019-10
网关和代理服务器有什么关系?
如果两个网络要进行通讯,那么每个网络都需要一个网关。网关区分了一个网络的内部和外部。如果一台电脑需要访问网络外的其他电脑,那么就需要配置网关来获得访问网络外部的权限。如果
30
2020-09
为什么光子电子商务离不开高隐藏IP代理?
随着互联网的不断发展壮大,中国网民规模扩张到了9.40亿,能够熟练运用互联网完成自己工作的人也越来越多。但是互联网在给人们带来诸多便利的同时,其本身的局限也是有的,最为主要的
热门文章
因为专业! 所以简单! 产品至上,价格实惠 是我们服务追求的宗旨
免费试用