Linux 与 macOS 代理检测脚本:bash 实现,带 RBL 与网站检测

remcheck.sh 直接在服务器上用数百个线程检测代理列表:哪些在响应、速度多快、出口 IP 是什么。另外两个模式会把出口 IP 与 17 个黑名单比对,并统计 Google、LinkedIn、Avito 等网站放行了多少代理。

  • bash 和 curl,无需安装
  • 最多 1000 线程
  • connect、rbl、target 三种模式
  • 免费

版本 1.3 · 39.8 KBSHA-256 dfb2def4382911ca54702a96d0601d8ffee84dfe23e2b89d81911a8d6778210c

终端正在检测数百个代理:绿色和红色指示灯连接着网络节点

一分钟上手

无需安装任何东西:bash、curl 和常用工具在 macOS 和大多数 Linux 服务器上都已自带。脚本启动时会检查它们,缺什么就会给出安装命令。

  1. 下载脚本

    直接下载到将要使用代理的服务器上。

    curl -fsSLO https://remproxy.com/files/remcheck.sh
  2. 允许执行

    下载后执行一次即可。

    chmod +x remcheck.sh
  3. 检测列表

    填入面板里的订阅 ID,每个订阅的 your_proxy_id 都不同。结果会出现在脚本旁边的新文件夹里。

    ./remcheck.sh -P socks5 -f your_proxy_id
如果脚本提示 missing tools

在最小化的 Debian、Alpine 镜像和 Docker 容器里可能出现。用适合你系统的一条命令补齐:

Debian / Ubuntu
sudo apt-get update && sudo apt-get install -y curl gawk coreutils grep sed
CentOS / Rocky / Alma / Fedora
sudo dnf install -y curl gawk coreutils grep sed
Alpine
apk add bash curl coreutils gawk grep sed

macOS:全部自带,无需安装。

三种模式

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
查看这台机器的 IP

定时检测

脚本本身没有周期模式,定时交给 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。

在 Windows 上运行

Windows 有单独的 PowerShell 版本:模式和参数相同,不需要 Git Bash 或 WSL,用任务计划程序定时运行。

Windows 代理检测脚本

常见问题

01线程数设多少合适?
100 Mbit/s 带宽的服务器用 100 到 300 就够了。每次检测只是一个很短的请求,限制速度的通常是超时而不是带宽。检测 RemProxy 列表时不要超过套餐的线程数。
02为什么我的 RemProxy 列表全部显示不可用?
如果列表通过订阅 ID 获取,脚本会识别拒绝并显示本机 IP:把它加入订阅的“允许的 IP”。如果检测的是文件,请在白名单里的机器上运行脚本。它的 IP 可以在“我的 IP”页面或用 curl -4 ifconfig.me 查看。
03代理本来就能用,为什么还要 rbl 模式?
邮件服务器和部分网站会拒绝黑名单里的地址。rbl 模式把这些出口分出来,让看重信誉的任务只走干净的 IP。
04脚本会把我的代理发到别处吗?
不会。connect 模式下每个代理向五个返回 IP 的页面之一发送一个请求:icanhazip、ipify、Amazon checkip、ifconfig.me 或 ipinfo。rbl 模式下脚本向 Google 和 Cloudflare 的 DNS 查询出口 IP,target 模式只打开 -t 里的网站。结果保存在你机器上的文件夹里。
05怎么检测 SOCKS5?
在行里写上协议,例如 socks5://host:port,或者对整个列表加上 -P socks5。RemProxy 的端口同时支持 HTTP 和 SOCKS5。
06为什么 Ozon、Wildberries 和 Yandex 在 target 模式下是 0%?
这些网站会检查请求是否来自真实浏览器,对任何程序都返回验证页或验证码,即使 IP 是干净的。脚本通过不经代理的对照请求(direct 列)发现这一点,并在表格下方加注。这类网站请用浏览器或反检测浏览器检查。

需要用于批量检测的代理池?

MIX 代理池最多 25,000 个 IP,无限流量,同一端口支持 HTTP 和 SOCKS5,按 IP 接入。测试一小时只需 $1。

查看套餐
登录/注册