Node.JS实战17:开发一个正向代理服务器!

什么是正向代理服务器?

我们在浏览网站时,浏览器直接与网站服务器进行通信。如果在本地建立一个代理服务器,浏览器通过它,再与网站通信,那么这台代理服务器就是正向代理服务器。

正向代理服务器常用于代理上网、数据截取分析等。

题外话:

有正向代理,就是反向代理。

与正向代理相对应,反向代理服务器假设在网站一方。

当用户通过浏览器访问网站时,数据收该反向代理服务器接收,再转发给网站服务器,这种代理服务器,称之为反向代理服务器。

反向代理常用于网站防护,WAF(Web应用防火墙),如ShareWAF,就是一种典型的反向代理服务器WAF。

换个角度看:客户端用的是正向代理服务器;服务器端用的是反向代理服务器。

本文将开发一个http正向代理服务器:

完整代码如下:

var http = require("http");
var url = require("url");

http.createServer(function(req,res){
    console.log("start request:",req.url);

    var option = url.parse(req.url);
    option.headers = req.headers;

    var proxyRequest = http.request(options, function(proxyResponse){

        proxyResponse.on("data",function(chunk){
            console.log("proxyResponse length",chunk.length);
        });
        proxyResponse.on("end",function(){
            console.log("proxyed request ended");
            res.end();
        })

        res.writeHead(proxyResponse.statusCode,proxyResponse.headers);
    });

    
    req.on("data",function(chunk){
        console.log("in request length:",chunk.length);
        proxyRequest.write(chunk,"binary");
    })

    req.on("end",function(){
        console.log("original request ended");
        proxyRequest.end();
    })

}).listen(8080);

代码解读:

1、整个代码,会建立一个http服务器,并监听8080端口:

2、当接收到请求信息时,从请求头发获取信息并进行转发:

3、以上两点最重要,其余就是对信息输出,以方便我们了解到代理是否生效、代理内容如何等:

实际使用测试:

对浏览器设置http代理:

当然,事先是需要启动我们刚写好的代理服务器的。

访问一个网页,这时可以看到各种信息输出:

同时,浏览器中也是能看到网页可以正常打开:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值