利用request模块进行HTTP代理地址测试问题 - CNode技术社区

利用request模块进行HTTP代理地址测试问题
发布于 8 年前 作者 LuckyHH 4325 次浏览 来自 问答
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代理地址是否可用。 将上面函数获取到的可用地址,填入浏览器中进行测试,发现如下图这种情况 D533D148288DB6CB8C54F4DD6D134792.png https的链接请求失败。http的链接会重定向到有道(www.youdao.com)首页,并显示认证失败。 请问大家有什么好的函数写法,能让我获取到可用地址。

1 回复

自己想了个解决方法。。验证请求返回的内容是否与原内容一致就行了。。。url这里设置了自己在自己的服务器上开了个接口,返回数字1,设置代理之后,只要判断返回内容是不是1就能判断这个代理能不能用

回到顶部

AltStyle によって変換されたページ (->オリジナル) /