利用request模块进行HTTP代理地址测试问题
const proxys = [{
type:"HTTP",
ip:123.456.789.123
port:4399
}]
function check() {
let flag = proxys.length;
return new Promise((resolve, reject) => {
for (let i = 0; i < proxys.length; i++) {
let proxy = proxys[i];
request({
url: "http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js",
proxy: `${proxy.type.toLowerCase()}://${proxy.ip}:${proxy.port}`,
method: 'GET',
timeout: 1000,
headers: {
'User-Agent': UserAgent[Math.floor(Math.random() * UserAgent.length + 1) - 1]
}
}, function(error, response, body) {
if (!error && response.statusCode == 200) {
useful.push(response.request['proxy']['href']);
console.log("请求成功");
}
flag--;
if (flag == 0) {
resolve(useful);
}
});
}
}).then(res => {
return JSON.stringify(res);
}).catch(err => {
return err;
})
}
求教大家一个问题。 我想测试一下proxys数组中http代理地址是否可用。 将上面函数获取到的可用地址,填入浏览器中进行测试,发现如下图这种情况 https的链接请求失败。http的链接会重定向到有道(www.youdao.com)首页,并显示认证失败。 请问大家有什么好的函数写法,能让我获取到可用地址。
1 回复
自己想了个解决方法。。验证请求返回的内容是否与原内容一致就行了。。。url这里设置了自己在自己的服务器上开了个接口,返回数字1,设置代理之后,只要判断返回内容是不是1就能判断这个代理能不能用