利用request模块进行HTTP代理地址测试问题
发布于 6 年前 作者 LuckyHH 3873 次浏览 来自 问答
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就能判断这个代理能不能用

回到顶部