c0mmand
V2EX  ›  问与答

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

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

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

    这样的设计怎么样?
    c0mmand
    c0mmand
    OP
    Jun 28, 2016
    18
    @shiny 可以的。
    schezukNewTos
    schezukNewTos
    Jun 28, 2016❤️1
    19
    @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
    schezukNewTos
    Jun 28, 2016
    20
    然后批量的话你可以改写成 bash 函数啊,或者批处理 call 之类的。
    我反正会直接把结果复制到 excel 里……
    schezukNewTos
    schezukNewTos
    Jun 28, 2016
    21
    而且写脚本你也可以用 excel 的(笑)
    kn007
    kn007
    Jun 28, 2016
    22
    关注
    shiny
    shiny
    Jun 28, 2016❤️1
    23
    @wuxiao2522 先装个 node.js ,然后在命令行输入 npm i proxy-filter -g
    然后在命令行输入: pfilter --input 代理列表.txt --output 想要保存的有效列表名称.txt
    pfilter -h 查看更多可用命令,包括 代理连接超时时间和同时并发数。

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

    推荐个服务 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
    johnny23
    Jun 29, 2016 via iPhone❤️1
    26
    @wuxiao2522 支持啊 我上次刷票买了一堆代理 IP 里面就有的 他自动加载会识别的
    c0mmand
    c0mmand
    OP
    Jun 29, 2016
    27
    @schezukNewTos
    @shiny 已测试成功,感谢!
    c0mmand
    c0mmand
    OP
    Jun 29, 2016
    28
    @ETiV 同样测试成功,感谢


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