400-893-5552
在线客服

Node使用http模块来创建代理

 
2019-12-31 17:57所属分类

HTTP代理可能会比你想象中常用——ISP使用透明代理,使网络更加高效,企业系统管理员使用缓存代理服务器来减少带宽,Web应用程序的DevOps利用它们来提高应用程序的性能。本技术只触及代理的表面——它获取http请求和响应,然后将其传送到它们该去的地方。你想要获取并且转发http请求。使用Node内置的http模块作为一个简单的http代理。一个代理服务器提供一定程度的重定向,会促进多种有用的应用:缓存、日志和安全相关的软件。本技巧探索了如何使用核心的http模块创建http代理。从根本上所有那些需要的是一个http服务器来获取请求,然后一个http客户端来复制它们。http.createServer和http.request方法能够获取并且转发请求。我们也需要解析原请求,因此能够安全拷贝它——url核心模块有一个URL——解析方法能够帮助我们做这些

Node使用http模块来创建代理

创建标准的http服务器实例。创建请求来复制原始的请求。监听数据,然后返回给浏览器。追踪代理请求什么时候完成。发送头部信息给服务器。捕获从浏览器发送到服务器的数据。追踪原始的请求什么时候结束。监听来自本地浏览器的连接。为了只用这个例子,你的计算机将需要一个小配置。找到你的系统网络选项,然后找到http代理。从这里你将能够进入localhost:8080作为代理。另外,如果有需要,要在浏览器设置里添加代理。一些浏览器不支持这个功能;Google Chrome将会打开系统代理对话框。展示了如何在Mac上设置代理。确保你在主网络对话框点了OK然后应用保存设置。并且记住一旦完成之后禁用代理!

Node使用http模块来创建代理

一旦你的系统被设置使用代理,在shell里使用node listings/network/proxy.js启动Node进程。现在访问网页,你应该看到登录到控制台连续请求和响应。这个例子的工作原来是首先使用http模块创建一个服务器。当一个浏览器创建请求回调将会被执行。我们使用了url.parse(url是另一个核心模块)来分离出URL的变量部分,因此它们能够被作为参数传递给http.request。被解析过的URL对象是兼容http.request参数预期的,因此很方便。在请求的回调内,我们能够订阅重复返回浏览器的事件。data事件是有用的,因为它允许我们从服务端捕获请求并且通过res.write传回客户端。我们也通过关闭浏览器连接来响应到服务端连接。基于服务端的状态码也被写回客户端。任何通过客户端发送的数据也通过订阅浏览器data事件代理到远程服务端。同样,浏览器原请求被看作end事件,因此它能被反射回代理请求。最后,用作代理的http服务被设置为监听8080端口。

这个例子在浏览器和要访问的服务器之间创建了一个特殊的服务器。它能够被扩展来做很多有趣的事情。例如,你能够缓存图片文件和基于远程客户端压缩它们,发送压缩过的图片给手机浏览器。你甚至能通过规则去掉某些部分;一些广告拦截和家长过滤通过这种形式做。

友情链接    PPTP 代理IP 极速加速 91IP代理 IP代理 51IP代理 代理IP