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

2016-06-28 15:26:57 +08:00
 wuxiao2522
目前手里有一批 http 代理服务器, ip:port 的形式,但是需要用户和密码登陆(已有),怎样才能有效、快速的验证其可用性?搜了一圈,只找到不需要用户密码登陆的相关软件。
5226 次点击
所在节点    问与答
30 条回复
shiny
2016-06-28 16:12:33 +08:00
写小段代码验证下,没多少行代码
wuxiao2522
2016-06-28 16:14:57 +08:00
@shiny 可是不会编程。
boter
2016-06-28 16:16:47 +08:00
10 年前有个花刺代理 天天在家换 IP 玩
johnny23
2016-06-28 16:36:12 +08:00
同上 花刺代理 现在还可以用呢
schezukNewTos
2016-06-28 16:52:05 +08:00
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
2016-06-28 16:55:58 +08:00
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"
```
wuxiao2522
2016-06-28 19:20:13 +08:00
@boter
@johnny23 花刺不支持用户名和密码认证
wuxiao2522
2016-06-28 19:29:47 +08:00
@schezukNewTos 例如 curl -m 5 “ baidu.com ” -x 1.1.1.1:80 -U 1234:1234 2>/dev/null |grep -c "www.baidu.com" 返回 0 ,何解?
wuxiao2522
2016-06-28 19:51:41 +08:00
@schezukNewTos 大概是不是这么个意思:拉取 baidu.com 的 metal2 次,通过-x ip:port -U user:pwd 代理。 结果重定向到 null ,然后管道到 grep -c "www.baidu.com"字符串的数量?
terence4444
2016-06-28 19:54:59 +08:00
10 几年前我用代理猎手验证百度首页上的字符串…
wuxiao2522
2016-06-28 20:02:22 +08:00
@terence4444 麻烦看清题目,代理是需要用户名和密码认证的。
wuxiao2522
2016-06-28 20:09:46 +08:00
@schezukNewTos 管道后面的参数没起作用,加不加输出一样,另外还是没办法批量检测呀?麻烦告知你的思路。
gimp
2016-06-28 20:12:51 +08:00
访问
http://icanhazip.com/
http://ifconfig.me/ip

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

这样的设计怎么样?
wuxiao2522
2016-06-28 21:07:21 +08:00
@shiny 可以的。
schezukNewTos
2016-06-28 22:53:05 +08:00
@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
2016-06-28 22:55:15 +08:00
然后批量的话你可以改写成 bash 函数啊,或者批处理 call 之类的。
我反正会直接把结果复制到 excel 里……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/288856

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX