Linux 与 macOS 代理检测脚本:bash 实现,带 RBL 与网站检测
remcheck.sh 直接在服务器上用数百个线程检测代理列表:哪些在响应、速度多快、出口 IP 是什么。另外两个模式会把出口 IP 与 17 个黑名单比对,并统计 Google、LinkedIn、Avito 等网站放行了多少代理。
- bash 和 curl,无需安装
- 最多 1000 线程
- connect、rbl、target 三种模式
- 免费

一分钟上手
无需安装任何东西:bash、curl 和常用工具在 macOS 和大多数 Linux 服务器上都已自带。脚本启动时会检查它们,缺什么就会给出安装命令。
- 下载脚本
直接下载到将要使用代理的服务器上。
curl -fsSLO https://remproxy.com/ files/ remcheck.sh - 允许执行
下载后执行一次即可。
chmod +x remcheck.sh - 检测列表
填入面板里的订阅 ID,每个订阅的 your_proxy_id 都不同。结果会出现在脚本旁边的新文件夹里。
./remcheck.sh -P socks5 -f your_proxy_id
如果脚本提示 missing tools
在最小化的 Debian、Alpine 镜像和 Docker 容器里可能出现。用适合你系统的一条命令补齐:
sudo apt-get update && sudo apt-get install -y curl gawk coreutils grep sedsudo dnf install -y curl gawk coreutils grep sedapk add bash curl coreutils gawk grep sedmacOS:全部自带,无需安装。
三种模式
connect:可用且快速
脚本通过每个代理打开一个返回 IP 的页面,并记录响应时间。可用代理写入 alive.txt,最快的排在最前。
./remcheck.sh -n 200 -T 8 -f your_proxy_id rbl:可用且干净
每个出口 IP 都会通过 DNS over HTTPS 在 17 个垃圾邮件黑名单中查询。对于 RemProxy 订阅,脚本直接从 real_ip 列取地址,所以查询立即开始,不需要经过代理连接。其他列表会先走一遍 connect。干净的写入 clean.txt,被列入的写入 listed.txt。
./remcheck.sh -m rbl -n 100 -f your_proxy_id target:网站放行多少代理
脚本通过每个代理、带着浏览器请求头打开 Google、LinkedIn、Avito 等共 16 个服务或你的网址。结果分为可用、验证码、反爬(antibot)、封锁和限流。开始前每个网站先从本机不经代理打开一次:如果网站连本机也拒绝,说明它检测的是程序而不是 IP。每个网站的可用代理写入 ok-网站.txt。
./remcheck.sh -m target -t google,linkedin,avito -S 300 -f your_proxy_id 参数
-f LIST- 代理列表:RemProxy 订阅 ID 或列表链接。也可以用文件。要通过管道传入列表,写
-f -,例如:cat list.txt | ./remcheck.sh -f - -m MODE- 模式:connect(默认)、rbl 或 target。
-t LIST- target 模式:用逗号分隔的服务和网址,例如 -t google,linkedin,shop=https://example.com/,或用 -t all 检测全部 16 个。
-k TEXT- target 模式:只有页面包含这段文字时,你的网址才算可用。
-S NUM- connect 和 target 模式:随机抽取 NUM 个代理检测。
-n NUM- 同时检测的代理数,默认 64,最多 1000。rbl 模式下它也决定同时查询黑名单的 IP 数:不加 -n 为 128,最多 256。
-T SEC-Timeout SEC- 每个代理的超时秒数,默认 10。也可以写 -Timeout SEC,与 Windows 版相同。
-r NUM- connect 模式下每个代理的尝试次数,默认 2,最多 5。每次重试换一个回显页面。
-P PROTO- 没有协议前缀的行使用的协议:http(默认)、socks5 或 socks4。
-e URLS- 返回 IP 的页面,用逗号分隔。默认五个:icanhazip、ipify、Amazon checkip、ifconfig.me 和 ipinfo。
-d DIR- 结果文件夹,默认 remcheck-日期-时间。
-C- 用 RemProxy 订阅跑 rbl 模式时,仍然通过每个代理连接,而不是从 real_ip 列取 IP。
-q- 不显示进度行。在 cron 下会自动关闭。
列表格式
同一个文件里可以混用不同写法,重复行和空行会被跳过。RemProxy 面板导出的 CSV 也能直接用。
host:port
host:port:user:pass
user:pass@host:port
socks5://user:pass@host:port
ip;port;country;speed;uptime;real_ip文件夹里会有什么
alive.txt可用代理,最快的排在最前。dead.txt没有响应的代理。results.tsv表格:每个代理一行,target 模式下每个代理和服务一行,附每个结果的原因。clean.txtrbl 模式:出口 IP 干净的可用代理。listed.txtrbl 模式:出口 IP 在垃圾邮件黑名单里的可用代理。ok-NAME.txttarget 模式:打开了该服务的代理,最快的在前。summary.txttarget 模式:按服务汇总的结果表。
检测 RemProxy 列表
只需订阅 ID,脚本会自己下载 CSV 列表。rbl 模式下脚本从 real_ip 列取出口 IP,不经过代理连接。列表中的每一行单独检测,同时 128 个,1000 个代理不到一分钟。结果汇总给出干净和被列入黑名单的代理数量和百分比。
./remcheck.sh -m rbl -f your_proxy_id -n 不要超过你套餐的线程数,否则部分检测会撞到上限,被算作不可用。
IP 不在白名单时
列表只提供给订阅白名单里的 IP。如果这台机器不在其中,脚本会停止并显示它的 IP:打开 panel.remproxy.com/subscriptions,选择该订阅,在“访问”部分把这个 IP 加入“允许的 IP”,然后重新检测。在 cron 日志里,这种情况的退出码为 3。
remcheck: the list server rejected this machine, its IP is not in the subscription whitelist.
IP of this machine: 203.0.113.7
Allowed IPs of the plan: 198.51.100.20定时检测
脚本本身没有周期模式,定时交给 cron。检测会自动启动,最新结果总在同一个文件夹里。
- 用 crontab -e 打开定时任务。
- 添加下面这一行:每 30 分钟检测一次,结果写入 remcheck-latest,日志写入 remcheck.log。
- 保存文件。用 crontab -l 查看定时任务。
crontab -e*/30 * * * * $HOME/remcheck.sh -P socks5 -f your_proxy_id -d $HOME/remcheck-latest -q >> $HOME/remcheck.log 2>&1 macOS 上的 cron 用法相同,但访问“文稿”和“桌面”文件夹需要完全磁盘访问权限。把脚本和列表放在个人主目录里更省事。
运行环境: bash 3.2 或更新版本、curl、awk、sed、grep、sort。

