首页 >> js开发 >> JavaScriptnodejs使用socket5进行代理请求的实现
JavaScriptnodejs使用socket5进行代理请求的实现
发布时间: 2021年1月13日 | 浏览:
| 分类:js开发
需要用到2个库,
requestsocks5-http-client/lib/Agent/
或
socks5-https-client/lib/Agentsocks5-http-client/lib/Agent/socks5-https-client/lib/Agent因为一些已知原因,有时候,http.request请求无法拿到数据,
首先想到的是proxy,其次是socket5.有了以上两个库,接下来的代码超级简单。
const request = require('request');
var httpAgent = require('socks5-http-client/lib/Agent');
var httpsAgent = require('socks5-https-client/lib/Agent');
var Agent = /^https/.test(url) ? httpsAgent : httpAgent;
request({
url: url,
strictSSL: false,
agentClass: Agent
}, function(err, res) {
console.log(err||res.body,res.statusCode,res.headers);
});
const request = require('request');
var httpAgent = require('socks5-http-client/lib/Agent');
var httpsAgent = require('socks5-https-client/lib/Agent');
var Agent = /^https/.test(url) ? httpsAgent : httpAgent;
request({
url: url,
strictSSL: false,
agentClass: Agent
}, function(err, res) {
console.log(err||res.body,res.statusCode,res.headers);
});
当然,也可以修改代理地址:
request({
url: url,
strictSSL: false,
agentClass: Agent,
agentOptions: {
socksHost: 'localhost', // Defaults to 'localhost'.
socksPort: 1080, // Defaults to 1080.
}
}, function(err, res) {
console.log(err||res.body,res.statusCode,res.headers);
});
request({
url: url,
strictSSL: false,
agentClass: Agent,
agentOptions: {
socksHost: 'localhost', // Defaults to 'localhost'.
socksPort: 1080, // Defaults to 1080.
}
}, function(err, res) {
console.log(err||res.body,res.statusCode,res.headers);
});
我有点不理解的地方是:
我使用http.request 的时候,需要自己添加各种headers,来满足请求不报错,而request库却不用写任何headers。
requestsocks5-http-client/lib/Agent/
或
socks5-https-client/lib/Agentsocks5-http-client/lib/Agent/socks5-https-client/lib/Agent因为一些已知原因,有时候,http.request请求无法拿到数据,
首先想到的是proxy,其次是socket5.有了以上两个库,接下来的代码超级简单。
const request = require('request');
var httpAgent = require('socks5-http-client/lib/Agent');
var httpsAgent = require('socks5-https-client/lib/Agent');
var Agent = /^https/.test(url) ? httpsAgent : httpAgent;
request({
url: url,
strictSSL: false,
agentClass: Agent
}, function(err, res) {
console.log(err||res.body,res.statusCode,res.headers);
});
const request = require('request');
var httpAgent = require('socks5-http-client/lib/Agent');
var httpsAgent = require('socks5-https-client/lib/Agent');
var Agent = /^https/.test(url) ? httpsAgent : httpAgent;
request({
url: url,
strictSSL: false,
agentClass: Agent
}, function(err, res) {
console.log(err||res.body,res.statusCode,res.headers);
});
当然,也可以修改代理地址:
request({
url: url,
strictSSL: false,
agentClass: Agent,
agentOptions: {
socksHost: 'localhost', // Defaults to 'localhost'.
socksPort: 1080, // Defaults to 1080.
}
}, function(err, res) {
console.log(err||res.body,res.statusCode,res.headers);
});
request({
url: url,
strictSSL: false,
agentClass: Agent,
agentOptions: {
socksHost: 'localhost', // Defaults to 'localhost'.
socksPort: 1080, // Defaults to 1080.
}
}, function(err, res) {
console.log(err||res.body,res.statusCode,res.headers);
});
我有点不理解的地方是:
我使用http.request 的时候,需要自己添加各种headers,来满足请求不报错,而request库却不用写任何headers。