关于代理服务器的一些备忘

2016-10-29 Meng Lei 更多博文 » 博客 » GitHub »

备忘 proxy Node.js

原文链接 http://menglei.tk/2016/10/29/youknow/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


Node.js代理服务器

出于信息安全的需求,很多公司对于员工电脑访问外网都会有很多特别的限制,比如某国内大型上市IT解决方案供应商,所有的员工电脑必须通过某个指定的HTTP代理服务器访问互联网资源,并且还要进行用户名密码的验证,导致很多无法设置代理服务器的软件以及仅支持socks5代理的软件都无法使用,甚至想要在调试应用的时候调用一些第三方api都需要做很多特殊设置。

比如正常的Node.js在做HTTP请求的时候,代码如下:

var http = require('http');
var opt = {
    host: 'api.example.com',   //要访问的服务器地址或者域名
    port: 8080,  //要访问的服务器端口
    method: 'POST',   //方法
    path: '/api',     //路径
    headers: {   //请求headers
        //request headers
    }
}
var req = http.request(opt, function(res){
    var body = '';
    res.on('data', function(buf){
        body += buf;
    }).on('end', function(){
        console.log(body);  //print response
    });
}).on('error', function(err){
    console.log('err: ' + err.message);
});
req.end('request payload');

如果请求需要经过代理进行访问的时候,代码如下:

var http = require('http');
var username = '';  //proxy username
var password = '';  //proxy user password
var opt = {
    host: '127.0.0.1',   //代理服务器地址
    port: 8080,     //代理服务器端口
    method: 'POST',
    path: 'http://api.exmaple.com:8080/api',   //真实请求URL
    headers: {
        'Proxy-Authentication': 'Base ' + new Buffer(username + ':' + password).toString('base64'), //如果代理服务器需要用户名密码,就加上这一行
        //其他的请求header
    }
};
//其余部分和之前相同,没有变化

NPM代理服务器

由于众所周知的原因,国内的网络,你懂的,有时候访问npm的时候就会抽风,造成一些意想不到的麻烦,不过还好,国内的淘宝团队建立了一个npm的镜像,地址是 https://npm.taobao.org/,国内的开发者可以访问这里地址,速度非常快,同时可以使用以下命令,将npm的安装源替换为淘宝提供的源,加速模块的安装:

npm config set registry = 'https://registry.npm.taobao.org'

如果只是想在安装某一个模块的时候临时需要使用淘宝的源,可以按照以下操作,单次安装有效:

npm install koa@next --registry=https://registry.npm.taobao.org

同样,对于像某大型上市IT解决方案供应商的网络那样,只有经过代理才能访问外网的情况,则需要按照以下方法来设置代理服务器,这样执行之后,所有执行npm安装模块的时候,都会通过该代理服务器访问外网进行下载,只需要执行 npm config get proxy 即可查看设置的代理服务器是否正确:

npm config set proxy = 'http://username:password@proxy.example.com:8080'

CCproxy 与 Proxifier 代理

由于某些特殊的应用程序可能并不支持代理服务器的设置,或者设置的代理服务器不支持输入用户名密码,或者仅支持socks5代理,对于这些特殊情况,可以考虑使用ccproxy或者proxifier解决。

CCproxy是一款国人开发的代理服务器软件,免费版支持三用户同时在线使用,对于一般个人用户来说完全足够,该软件支持二级代理功能,可以在软件内设置上级代理的地址与用户名密码,同时转为本机的一个无用户名密码的代理,此时,本机上的无法设置代理用户名密码的软件就可以使用ccproxy进行代理上网了。

Proxifier是国外开发的一款全局代理软件,在该软件中设置好上级代理的信息,运行之后,会抓取本机的所有访问流量,同时将流量直接转发至代理服务器,无论软件是否设置代理与否,这样就保证了很多无法设置代理服务器的软件也可以访问外网。同时,启用proxifier之后,上面的Node.js和NPM在访问外网的时候就无需再进行其余设置了,proxifier会直接抓取其访问流量并转发至代理服务器。同时该软件还可以进行代理规则的配置,可以设置指定名称的软件访问网络不经过代理,或者设置多个代理,对于不同的目标,走不同的代理服务器,功能非常强大。

关于Shadowsocks

略。。。