我正在尝试在 JavaScript 中做一个代理检查器。我输入代理数据并检查代理是否有效。
现在我使用 Node.js 的 request 模块编写了这个函数。
const request = require('request');
var checkProxy = function(id, ip, port, url, user, pass, callback) {
let proxy_url;
if (user){
if (user != ''){
proxy_url = `socks5://${user}:${pass}@${ip}:${port}`;
}
} else {
proxy_url = 'socks5://' + ip + ':' + port;
console.log(proxy_url)
}
var proxyRequest = request.defaults({
proxy: proxy_url,
});
proxyRequest({url: url, timeout: 120000}, function(err, res) {
var testText = 'content="Brum Brum ..."';
if( err ) {
callback(id, ip, port, false, -1, err);
} else if( res.statusCode != 200 ) {
callback(id, ip, port, false, res.statusCode, err);
} else if( !res.body ) {
callback(id, ip, port, false, res.statusCode, "regex problem" + options.regex + ".");
} else {
callback(id, ip, port, true, res.statusCode);
}
});
}
作为回调我通过:
() => {console.log(id, ip, port, false, res.statusCode, err);}
但是当我尝试检查 IP 地址时,它会给出错误的结果。
我从 this site 获取代理(proxy:
207.154.231.217:1080
) 并用函数检查它,但在回调 console.log 中我得到了当前错误:ERROR: proxy num: 0, ip: 207.154.231.217, port: 1080, STATUS: -1, ERROR: Error: tunneling socket could not be established, cause=socket hang up
我读到这是为了某种需要的身份验证,但我不明白为什么如果我在 this site 上检查它,网站告诉我代理有效。
我在用着:
最佳答案
安装 socks5-http-client
模块并运行此代码:
const request = require('request');
const Agent = require('socks5-http-client/lib/Agent');
var checkProxy = function (id, ip, port, url, user, pass, callback) {
var proxyRequest = request.defaults({
agentClass: Agent,
agentOptions: {
socksHost: ip,
socksPort: port,
socksUsername: user,
socksPassword: pass
}
});
proxyRequest({ url: url, timeout: 120000 }, function (err, res) {
var testText = 'content="Brum Brum ..."';
if (err) {
callback(id, ip, port, false, -1, err);
} else if (res.statusCode != 200) {
callback(id, ip, port, false, res.statusCode, err);
} else if (!res.body) {
callback(id, ip, port, false, res.statusCode, "regex problem" + options.regex + ".");
} else {
callback(id, ip, port, true, res.statusCode);
}
});
}
关于javascript - 如何检查代理是否在 JavaScript 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59146629/