2026年07月10日 谷歌域名防红+QQ微信防红+防反诈屏蔽+APK爆毒状态变化怎么第一时间收到手机通知?用Telegram Bot + cron搭建免费域名安全告警系统实操教程
这是90%域名运营者都会经历的惨痛教训:域名凌晨3点被谷歌Safe Browsing标红,等你早上9点起床发现时,已经损失了整整6个小时的流量和用户信任。指望人工盯盘不现实——你不可能24小时对着屏幕刷新检测结果。今天这篇教程用30分钟带你从零搭建一套免费、全自动的Telegram Bot告警系统:只要域名状态在谷歌、QQ微信、反诈、APK爆毒四大维度发生任何变化,手机立刻收到告警通知。
⚠️ 先问自己一个问题:你现在怎么知道域名被红了?
如果答案是「用户告诉我」或者「自己刷新的检测页面」,那你的域名实际上已经被红了很久而你却不知道。谷歌Safe Browsing的更新频率是分钟级、QQ微信拦截可能是秒级——你每多延迟一分钟才发现,就多损失一分钟。最便宜的解决方案不是请人24小时值班,而是用30分钟写一段脚本让它自动帮你盯着。
为什么必须用自动化告警替代人工巡检?
在做任何实操之前,先看清一个硬数据:以下是我们监测的100个高敏感域名的状态变化时间分布:
| 变化类型 | 最快发生时间 | 人工发现平均延迟 | 自动化发现平均延迟 |
|---|---|---|---|
| 谷歌域名防红 — Safe Browsing变红 | 提交举报后2分钟 | 4.5 小时 | 3 分钟 |
| QQ微信防红 — 链接变灰/弹窗 | 秒级生效 | 3.2 小时 | 1 分钟 |
| 防反诈屏蔽 — 运营商拦截 | 12-48 小时(有窗口期) | 8.7 小时 | 15 分钟 |
| APK爆毒 — Virustotal引擎报警 | 上传后15分钟 | 2.1 小时 | 5 分钟 |
结论很明确:靠人工巡检,从「域名被红」到「你发现被红」中间平均隔着 3-8 小时。如果你的业务每小时产出 1000 元,这就是 3000-8000 元的直接损失——还不算用户信任的流失。而自动化告警系统可以把延迟从「小时级」压缩到「分钟级」。
怎么从零搭建一个Telegram Bot域名安全告警系统?
整个搭建流程分成6步。你只需要一台能跑 Linux 的服务器(云服务器、树莓派甚至家里不关机的电脑都行)和一个 Telegram 账号。全程免费,没有付费组件。
创建 Telegram Bot 并获取 API Token 和 Chat ID
打开 Telegram,搜索 @BotFather,发送 /newbot,按提示给你的告警机器人命名(比如「域名安全哨兵」)并设置用户名(以 bot 结尾,如 DomainGuardBot)。完成后 @BotFather 会返回一串 Token,形如 1234567890:ABCdefGHIjklMNOpqrsTUVwxyz——这就是你的 Bot API Token,妥善保存,不要泄露。
接下来获取你的 Chat ID:给你的新 Bot 随便发一条消息,然后在浏览器访问:
https://api.telegram.org/botBOT_TOKEN/getUpdates
返回的 JSON 中找到 "chat":{"id":123456789} —— 那一串数字就是你的 Chat ID。记下来,后面脚本要用。
编写域名状态检测脚本(核心引擎)
在服务器上创建一个检测脚本 /opt/domain-monitor/check.sh。这个脚本需要对四大维度逐一检测,并把结果和上次对比。以下是完整脚本:
# 域名安全自动检测脚本 — 333Check免费域名安全检测
# 用法: ./check.sh yourdomain.com
DOMAIN="$1"
RESULT_DIR=/opt/domain-monitor/results
LAST_RESULT="$RESULT_DIR/$DOMAIN.last"
NOW_RESULT="$RESULT_DIR/$DOMAIN.now"
mkdir -p "$RESULT_DIR"
# 1. 谷歌Safe Browsing检测(用Google公开查询API)
SB_URL="https://safebrowsing.googleapis.com/v4/threatMatches:find?key=YOUR_GOOGLE_API_KEY"
SB_RESULT=$(curl -s -X POST "$SB_URL" \
-H "Content-Type: application/json" \
-d "{...threatInfo: {url: \"$DOMAIN\"}...}" 2>&1)
# 简化版:用333Check的公开检测API(无需Google API Key)
SB_RESULT=$(curl -s "https://333ck.com/api/check?domain=$DOMAIN" \
-H "Accept: application/json" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('google_safe','unknown'))" 2>/dev/null)
# 2. Virustotal检测(APK爆毒/域名安全)
VT_RESULT=$(curl -s "https://www.virustotal.com/api/v3/domains/$DOMAIN" \
-H "x-apikey: YOUR_VT_API_KEY" | python3 -c "import sys,json; d=json.load(sys.stdin); s=d.get('data',{}).get('attributes',{}).get('last_analysis_stats',{}); print(f\"malicious:{s.get('malicious',0)} suspicious:{s.get('suspicious',0)}\")" 2>/dev/null)
# 3. 汇总结果写入临时文件
echo "SB:$SB_RESULT" > "$NOW_RESULT"
echo "VT:$VT_RESULT" >> "$NOW_RESULT"
echo "TIME:$(date +%s)" >> "$NOW_RESULT"
# 4. 与上次结果对比,有变化则触发告警
if [ -f "$LAST_RESULT" ]; then
if ! diff -q "$LAST_RESULT" "$NOW_RESULT" > /dev/null 2>&1; then
echo "CHANGED" > /tmp/alert_flag
/opt/domain-monitor/send_alert.sh "$DOMAIN" "$NOW_RESULT"
fi
fi
mv "$NOW_RESULT" "$LAST_RESULT"
编写告警推送脚本(Telegram消息格式化)
检测到变化后,需要一个独立的告警脚本把结果格式化成清晰的 Telegram 消息推送出去。创建 /opt/domain-monitor/send_alert.sh:
# Telegram告警推送脚本
BOT_TOKEN="你的Bot Token"
CHAT_ID="你的Chat ID"
DOMAIN="$1"
RESULT_FILE="$2"
# 读取结果
SB=$(grep '^SB:' "$RESULT_FILE" | cut -d: -f2-)
VT=$(grep '^VT:' "$RESULT_FILE" | cut -d: -f2-)
# 构造消息(MarkdownV2格式)
MSG="🚨 域名状态变化告警\\n\\n"
MSG+="📌 域名:
${DOMAIN}\\n"MSG+="🕐 时间:$(date '+%Y-%m-%d %H:%M:%S')\\n\\n"
MSG+="🔍 谷歌Safe Browsing:${SB}\\n"
MSG+="🛡️ Virustotal引擎:${VT}\\n\\n"
MSG+="⚠️ 检测到域名安全状态变化,请立即处理!\\n"
MSG+="🔗 完整报告:https://333ck.com/fanghong?domain=${DOMAIN}"
# 发送Telegram消息
curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
-H "Content-Type: application/json" \
-d "{
\"chat_id\": \"${CHAT_ID}\",
\"text\": \"${MSG}\",
\"parse_mode\": \"HTML\",
\"disable_web_page_preview\": true
}" > /dev/null 2>&1
echo "Alert sent for ${DOMAIN} at $(date)" >> /var/log/domain-alert.log
配置 crontab 实现定时自动巡检
现在核心脚本已经就绪,最后一步是让系统自动、定期执行它。crontab -e 打开编辑界面,添加以下任务:
*/5 * * * * /opt/domain-monitor/check.sh yourdomain1.com >> /var/log/domain-check.log 2>&1
*/5 * * * * /opt/domain-monitor/check.sh yourdomain2.com >> /var/log/domain-check.log 2>&1
*/5 * * * * /opt/domain-monitor/check.sh yourdomain3.com >> /var/log/domain-check.log 2>&1
# 每天凌晨3点清理超过7天的日志
0 3 * * * find /var/log/domain-check.log -mtime +7 -delete
设置告警分级,避免「狼来了」效应
如果每次检测到一点点变化都发告警,你很快就会养成「看完就关」的习惯——真正紧急的告警反而会被忽略。所以需要做告警分级:
| 级别 | 触发条件 | 通知方式 | 示例 |
|---|---|---|---|
| 🔴 P0 紧急 | 谷歌Safe Browsing从「正常」变「红」;QQ微信弹出「已停止访问」 | Telegram推送 + @所有人 | 「域名被谷歌红屏拦截,Chrome用户全部无法访问」 |
| 🟠 P1 重要 | Virustotal恶意引擎数从0→≥3;运营商新增拦截省份 | Telegram推送(静默) | 「VT检测到3个引擎报警,可能存在即将标红风险」 |
| 🟡 P2 提醒 | APK爆毒引擎数增加但未达阈值;DNS解析异常 | 聚合推送(每小时汇总一次) | 「APK新增1个引擎标记为suspicious,建议加固」 |
| 🟢 P3 信息 | 检测脚本运行失败;API超时 | 仅写入日志 | 「cron执行超时,可能被API限流」 |
验证:用测试域名确认告警链路畅通
全部配置完成后,不要直接信任它。用一个已知被标记的测试域名手动触发一次检测:
bash /opt/domain-monitor/check.sh malware.testing.google.test
# 检查结果文件和日志
cat /opt/domain-monitor/results/malware.testing.google.test.last
tail -20 /var/log/domain-alert.log
# 如果一切正常,你的Telegram应该收到一条类似的消息:
# 🚨 域名状态变化告警 → malware.testing.google.test → SB:unsafe
有了自动告警后,日常运维还需要手动检测吗?
自动告警系统解决了「第一时间发现问题」的痛点,但它不是万能的。以下三种情况是自动化脚本的盲区,仍然需要手动介入:
| 自动化盲区 | 为什么脚本查不到 | 手动检测方法 |
|---|---|---|
| QQ微信防红 | 腾讯不提供公开API,自动化脚本无法模拟真实用户打开QQ/微信 | 每天至少一次用普通QQ号和微信号实测链接可发性和可访问性 |
| 防反诈地域性屏蔽 | API只能测脚本所在服务器的网络,查不到其他省份/运营商的拦截 | 用333Check多地域模拟检测,或找不同城市的朋友帮忙打开 |
| APK爆毒「窗口期」 | 新上传的APK需要15分钟~1小时才会被VT引擎收录,窗口期API查不到 | 上传APK后等1小时再检查,同时检测APK分发链接本身是否已被标记 |
| CDN缓存导致假阴性 | 脚本请求到的是CDN缓存的旧版本页面,而用户访问的是新版本(或被劫持后的版本) | 用 curl -H "Pragma: no-cache" 绕过CDN缓存获取源站真实内容 |
📋 最佳实践:自动化告警 + 人工抽查双保险
自动化层(cron脚本):每5分钟跑一次,覆盖谷歌Safe Browsing、Virustotal、DNS解析——这三项都有公开API,自动化效果最好。
人工抽查层(每天花5分钟):早上起床后用QQ微信实测一次链接状态、中午用333Check多地域检测跑一遍、晚上抽查APK分发链接——这三项需要真实设备和多网络环境,自动化成本太高,人工更高效。
结论:自动化解决80%的及时发现问题,人工解决20%的盲区验证问题。两者结合才是完整的安全检测体系。
免费告警系统 vs 付费检测服务,到底怎么选?
自己搭建的免费告警系统已经能覆盖大部分需求,但如果你运营的域名数量多、业务敏感度高,付费服务的ROI就显而易见了。以下是客观对比:
| 对比项 | 免费自建告警系统 | 333Check 付费检测服务 | 差距 |
|---|---|---|---|
| 谷歌域名防红 | ✅ Google Safe Browsing API | ✅ 实时API + 历史趋势 | 免费版够用 |
| QQ微信防红 | ❌ 无法自动化 | ✅ 自动化多账号模拟检测 | 核心差距——这是付费的最大价值 |
| 防反诈屏蔽 | ⚠️ 仅单机网络 | ✅ 全国30+节点多地域模拟 | 多域名运营必须付费 |
| APK爆毒 | ✅ Virustotal API | ✅ 自动发现 + 联动告警 | 免费版够用 |
| 告警推送 | ✅ Telegram Bot | ✅ Telegram + 微信 + 邮件 | 免费版够用 |
| 维护成本 | ⚠️ 脚本需要自己维护(API Key过期、cron异常等) | ✅ 零维护 | 如果不懂Linux运维,建议付费 |
| 月费 | ✅ 0元(仅需服务器) | 💰 500U起 | 看域名数量和业务价值 |
📊 决策建议:你该用哪种方案?
用免费自建方案:你运营 1-5 个域名,会基本的 Linux 操作(ssh、crontab、chmod),域名被红不会立刻造成超过 2000 元的直接损失。用本文的脚本 30 分钟搭起来就够用。
上付费检测服务:你运营 5 个以上域名,或者业务高度依赖 QQ/微信流量入口,域名被红直接损失收入。付费的核心价值不是「更大的检测范围」,而是 QQ微信防红的自动化——这是自建系统永远做不到的。
客户怎么说?
"我们自己搭的cron脚本跑了两个月,谷歌和Virustotal的告警都很靠谱。但QQ微信拦截完全抓不到——有一天晚上10点微信突然弹窗,是用户截图告诉我们的。接入333Check付费版后,QQ微信有任何拦截3分钟内就收到告警,这个功能值回票价。"
"我们12个域名用免费脚本跑了3个月,但维护成本越来越高——API Key过期、cron偶尔不执行、Virustotal限流误报……后来全切到Ai防红的7×24检测,一个域名从被反诈标记到我们收到通知只用了4分钟,当天就提交了解封申请。人工不可能做到这个速度。"