在NodeJs中使用Socks代理

这篇主要是讲怎么在nodejs上使用用户身份设置以及socket代理

前些天突然搞了一个使用NodeJs调用Jenkins接口的服务,之前的代码都是用Java去写的,使用 Apache 的httpClient,不看不知道,一看吓一跳,可以设各种代理,以及用户验证的auth, 而这些在node上根本没见过,也不知道怎么搞,只能去查每个设置需要做什么,然后在node上实现;

其实主要是两部分:

  1. nodejs中使用用户身份校验信息; 这个就是http basic auth,在 request 中主要是使用auth配置:
1
2
3
4
5
6
request.get('http://some.server.com/', {
'auth': {
'user': 'username',
'pass': 'password',
}
});
  1. 使用socket代理;先安装 socks5-http-client,
    然后配置agentClass为引入的Agent类型,配置agentOptions中的host和port:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var Agent = require('socks5-http-client/lib/Agent');
request({
url: 'http://en.wikipedia.org/wiki/SOCKS',
auth: {
'user': 'username',
'pass': 'password'
}
agentClass: Agent,
agentOptions: {
socksHost: 'your-sock-proxy-host', // sock host
socksPort: 9050 // sock port.
}
}

这部分也可以封装起来,直接封装成一个SocksRequest,里面默认加上agentClass,就不用每次都引用Agent了

今天除夕,哈哈哈哈
妥妥的~