«
一行命令快速筛选出高可靠的代理

时间:2022-3-18     作者:Mrxn     分类: Linux


前言

前段时间在 github 上从 pry0cc/soxy 改造过的 check_proxy 一个由 golang 开发的命令行验证 socks 代理有效性工具。
这个工具是为命令行使用而生,故只支持从 stdin 输入数据,我们可以通过cat 或者 pbpaste (mac剪贴板) 用管道符号 | 传递给这个工具。用法如下:

1.验证 proxies.txt 中的有效代理,并覆盖保存到 alive.txt

cat proxies.txt | ./check_proxy_mac | tee alive.txt

2.和前面不一样的是多了个 -a 参数, 追加到 alive.txt 中

cat proxies.txt | ./check_proxy_mac | tee -a alive.txt

但是我测试过程中发现同样的代理集,多次验证后,每次的有效性并不完全一致,再多次测试后,发现经过连续测试一定次数后,有效性代理的数量可以基本保持一致,故有两种方法,一种是改造程序,一种是通过命令行的方式来搞定,我比较懒,直接用命令行搞定。下面说下如何用命令行搞定:

file=socks.txt; for ((i=1;i<9;i++)) do pbpaste|./check_proxy_mac|tee -a $file; done && wc $file && sort $file|uniq|tee $file && wc $file

通过剪贴板读取数据作为输入进行连续9次验证并去重保存至 socks.txt 文件中

file=socks.txt; for ((i=1;i<9;i++)) do cat $file|./check_proxy_mac|tee -a $file; done && wc $file && sort $file|uniq|tee $file && wc $file

通过读取文件作为输入进行连续9次验证并去重保存至 socks.txt 原文件中

小小的一行命令行就搞定!岂不乐哉 保存位置和验证次数可以根据自己的网络情况适当调整,9次此并不一定适合你。

在写这个 bash 的时候,有个小坑:
在 for 循环结束并统计整个文件行数后,如果使用 ; 而不是 && 会导致最终结果把前面屏幕所有 stdin 输出也保存了,完全乱了。他们之间的区别如下:

command1 & command2 & command3     三个命令同时执行 

command1; command2; command3          不管前面命令执行成功没有,后面的命令继续执行 

command1 && command2                         只有前面命令执行成功,后面命令才继续执行

最后,可以在我的 github 下载到这个小工具. https://github.com/Mr-xn/check_proxy

标签: Linux github