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://bbs.qcloud.com/forum-74-1.html",
                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代理地址是否可用。
将上面函数获取到的可用地址,填入浏览器中进行测试,发现如下图这种情况
Fu-Lq4Qv1atZqeOzKD3lbu5aYdeq

https的链接请求失败。
http的链接会重定向到有道(www.youdao.com)首页,并显示认证失败。
请问大家有什么好的解决方法,能让我筛选到到可用代理地址呢?

阅读 4.5k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题