javascript - 如何检查代理是否在 JavaScript 中工作

标签 javascript node.js proxy

我正在尝试在 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 上检查它,网站告诉我代理有效。

我在用着:
  • Ubuntu 19.10 (Eoan Ermine)
  • Node.js v.13.0.1
  • npm 6.12.0
  • 最佳答案

    安装 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/

    相关文章:

    apache - CONNECT 请求通过 SSL 连接转发 HTTP 代理?

    linux - 仅代理某些域

    javascript - 拦截所有 Node 的 require 调用

    javascript - react : unique "key" prop

    JavaScript 从另一个文件创建自定义对象以进行测试

    javascript - Highchart - 悬停时编辑工具提示日期格式内容

    javascript - pop()/shift() 方法返回原始数组

    Node.js 多平台项目结构

    linux - Cntlm 的本地配置文件

    javascript - 语义 UI 模块样式正确但没有响应