c0mmand
V2EX  ›  问与答

求批量验证 http 代理可用性的方法

  •  
  •   c0mmand · Jun 28, 2016 · 6030 views
    This topic created in 3633 days ago, the information mentioned may be changed or developed.
    目前手里有一批 http 代理服务器, ip:port 的形式,但是需要用户和密码登陆(已有),怎样才能有效、快速的验证其可用性?搜了一圈,只找到不需要用户密码登陆的相关软件。
    30 replies    2017-04-05 18:20:08 +08:00
    shiny
        1
    shiny  
    PRO
       Jun 28, 2016 via iPhone   ❤️ 1
    写小段代码验证下,没多少行代码
    c0mmand
        2
    c0mmand  
    OP
       Jun 28, 2016
    @shiny 可是不会编程。
    boter
        3
    boter  
       Jun 28, 2016 via iPhone   ❤️ 1
    10 年前有个花刺代理 天天在家换 IP 玩
    johnny23
        4
    johnny23  
       Jun 28, 2016 via iPhone   ❤️ 1
    同上 花刺代理 现在还可以用呢
    schezukNewTos
        5
    schezukNewTos  
       Jun 28, 2016   ❤️ 1
    bash:
    curl -m 5 "baidu.com" -x ip:port 2>/dev/null |grep -c "www.baidu.com"
    cmd:
    curl -m 5 "baidu.com" -x ip:port 2>nul |find /C "www.baidu.com"
    schezukNewTos
        6
    schezukNewTos  
       Jun 28, 2016   ❤️ 1
    bash: ```
    curl -m 5 "baidu.com" -x [PROTOCOL://]HOST[:PORT] -U USER[:PASSWORD] 2>/dev/null |grep -c "www.baidu.com"
    ```
    cmd: ```
    curl -m 5 "baidu.com" -x [PROTOCOL://]HOST[:PORT] -U USER[:PASSWORD] 2>nul |find /C "www.baidu.com"
    ```
    c0mmand
        7
    c0mmand  
    OP
       Jun 28, 2016
    @boter
    @johnny23 花刺不支持用户名和密码认证
    c0mmand
        8
    c0mmand  
    OP
       Jun 28, 2016
    @schezukNewTos 例如 curl -m 5 “ baidu.com ” -x 1.1.1.1:80 -U 1234:1234 2>/dev/null |grep -c "www.baidu.com" 返回 0 ,何解?
    c0mmand
        9
    c0mmand  
    OP
       Jun 28, 2016
    @schezukNewTos 大概是不是这么个意思:拉取 baidu.com 的 metal2 次,通过-x ip:port -U user:pwd 代理。 结果重定向到 null ,然后管道到 grep -c "www.baidu.com"字符串的数量?
    terence4444
        10
    terence4444  
       Jun 28, 2016 via iPhone
    10 几年前我用代理猎手验证百度首页上的字符串…
    c0mmand
        11
    c0mmand  
    OP
       Jun 28, 2016
    @terence4444 麻烦看清题目,代理是需要用户名和密码认证的。
    c0mmand
        12
    c0mmand  
    OP
       Jun 28, 2016
    @schezukNewTos 管道后面的参数没起作用,加不加输出一样,另外还是没办法批量检测呀?麻烦告知你的思路。
    gimp
        13
    gimp  
       Jun 28, 2016
    访问
    http://icanhazip.com/
    http://ifconfig.me/ip

    不是本机 IP 就代表代理可行
    c0mmand
        14
    c0mmand  
    OP
       Jun 28, 2016
    @gimp 批量,亲。亲,批量。
    shiny
        15
    shiny  
    PRO
       Jun 28, 2016   ❤️ 1
    @wuxiao2522 给我几个代理的例子,我可以给你写个 node.js 的验证
    c0mmand
        16
    c0mmand  
    OP
       Jun 28, 2016
    @shiny 抱歉,由于这些代理是内部的,不能共享。可否给你公共代理,没有认证的这种让你测试?然后我加上正确的用户名密码,就可以了。比如 http://www.xicidaili.com/这上面的代理服务器,本身是不需要认证的,但是你任意加上用户名和密码,也是能通过的。
    shiny
        17
    shiny  
    PRO
       Jun 28, 2016   ❤️ 1
    @wuxiao2522
    输入一个 txt ,每行格式 http://username:password@proxyserver:port
    然后输出可用的代理 txt ,每行一个。

    这样的设计怎么样?
    c0mmand
        18
    c0mmand  
    OP
       Jun 28, 2016
    @shiny 可以的。
    schezukNewTos
        19
    schezukNewTos  
       Jun 28, 2016   ❤️ 1
    @wuxiao2522

    当代理正常, curl 输出应为百度跳转页:
    <html>
    <meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
    </html>
    如果代理错误可能返回含"baidu.com"的页面,或无返回,但不会返回"www.baidu.com"

    -m 五秒超时;-x 代理;-U 代理认证;
    2>/dev/null 或 2>nul : stderr 输出到*nix 和 dos 空文件(不然你会看到下载进度)

    管道右侧获取包含"www.baidu.com"的行数。
    代理错误一般会有 0 行( false ),正确一般会有 1 行( true ), 2 行以上是脚本出漏洞了。
    schezukNewTos
        20
    schezukNewTos  
       Jun 28, 2016
    然后批量的话你可以改写成 bash 函数啊,或者批处理 call 之类的。
    我反正会直接把结果复制到 excel 里……
    schezukNewTos
        21
    schezukNewTos  
       Jun 28, 2016
    而且写脚本你也可以用 excel 的(笑)
    kn007
        22
    kn007  
       Jun 28, 2016
    关注
    shiny
        23
    shiny  
    PRO
       Jun 28, 2016   ❤️ 1
    @wuxiao2522 先装个 node.js ,然后在命令行输入 npm i proxy-filter -g
    然后在命令行输入: pfilter --input 代理列表.txt --output 想要保存的有效列表名称.txt
    pfilter -h 查看更多可用命令,包括 代理连接超时时间和同时并发数。

    开源到了 https://github.com/daijie/proxy-filter
    lslqtz
        24
    lslqtz  
       Jun 29, 2016 via iPhone   ❤️ 1
    测试代理访问 vps 时能访问,且 IP 不是本机即可。
    ETiV
        25
    ETiV  
       Jun 29, 2016   ❤️ 1
    *现在的年轻人还真是衣来伸手饭来张口呢*

    推荐个服务 httpbin.org

    http_proxy=http://{PROXY_USER}:{PROXY_PASSWORD}@{PROXY_IP}:{PROXY_PORT} curl --connect-timeout 10 http://httpbin.org/ip

    访问成功会得到:
    {
    "origin": "某个.I.P.地址"
    }

    对比一下 origin 是不是上面的 PROXY_IP 就好了. 如果超时,就表示代理不通。

    如果想知道代理 IP 是不是所谓高度匿名的,可以用 http://httpbin.org/get 这个接口,看 headers 里有没有什么 X-Real-IP 、 X-Forwared-For 之类的。

    这服务同时可以用 https 访问,所以也可以用来验证代理服务器是否支持 HTTP Connect ~
    johnny23
        26
    johnny23  
       Jun 29, 2016 via iPhone   ❤️ 1
    @wuxiao2522 支持啊 我上次刷票买了一堆代理 IP 里面就有的 他自动加载会识别的
    c0mmand
        27
    c0mmand  
    OP
       Jun 29, 2016
    @schezukNewTos
    @shiny 已测试成功,感谢!
    c0mmand
        28
    c0mmand  
    OP
       Jun 29, 2016
    @ETiV 同样测试成功,感谢


    @shiny 写的 node.js 脚本是最好用的一种方法。
    jqw1992
        29
    jqw1992  
       Jun 29, 2016
    访问百度什么,可以访问网站,有正确返回数据的 就是对的
    fingerstyle
        30
    fingerstyle  
       Apr 5, 2017
    nc 扫端口验证 tcp 状态, curl 请求返回值验证 http 状态,两次验证通过后确认代理线路正常,亲测有效。尤其适合做梯子多线路检测。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   941 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 19:50 · PVG 03:50 · LAX 12:50 · JFK 15:50
    ♥ Do have faith in what you're doing.