作者:Ai防红技术团队 | 更新:2026年08月16日
2026年08月16日 谷歌域名防红+QQ微信防红+防反诈屏蔽+APK爆毒 域名检测报告怎么一键生成PDF存档?四维数据自动排版出图实操教程
域名今天测着绿、明天测着红,光靠手机截图根本说不清「什么时候被红、被哪个平台红」。本文手把手教你用免费工具,把谷歌域名防红、QQ微信防红、防反诈屏蔽、APK爆毒四个维度的检测结果,一键自动生成带图表、时间戳和 SHA-256 哈希的 PDF 检测报告,用于存档留证、申诉提交和团队共享,全程零成本。
谷歌域名防红QQ微信防红防反诈屏蔽APK爆毒检测报告PDF生成证据固定自动归档
📋 一分钟速览:四维检测 → 自动生成带证据的 PDF 报告全流程
本文核心是一套「采集 → 排版 → 固化 → 归档」四步自动报告流水线:① 用 curl 采集谷歌 / QQ微信 / 反诈 / APK 四维结果存成 JSON → ② 用 Python reportlab 免费生成带四维状态表和趋势图的 PDF → ③ 给 PDF 加生成时间戳和 SHA-256 哈希,实现防篡改证据固定 → ④ 挂到 cron 定时任务,每天自动生成并归档。核心结论:带哈希的 PDF 报告,申诉通过率比零散截图高一个量级,因为它能证明「在某年某月某日,你的域名在某个平台是干净的」。
⏱ 工具:curl + Python reportlab / fpdf2 + crontab | 覆盖四维:谷歌 Safe Browsing / QQ微信 urlsec / 防反诈 DNS / APK 文件哈希 | 零成本
为什么域名检测结果必须存成带时间戳和哈希的 PDF 报告,而不是手机截图?
很多站长养成了一个习惯:检测工具跑完,手机对着屏幕拍一张、发到群里就算「留档」了。这个习惯在申诉和追溯时几乎毫无用处。原因在于:截图只能证明「某个画面出现过」,但证明不了「这个画面属于你的域名、出现在哪个时间点、有没有被 PS 过」。
下面这张图对比了「手机截图」和「带哈希的 PDF 报告」在四个关键场景下的证据效力差异:
▲ 截图 vs 带哈希 PDF 报告的证据效力对比:申诉、协作、追溯三个场景下,PDF 报告全面胜出
换句话说:检测的目的不只是「知道现在红没红」,更是「在需要的时候能拿出证据」。一份带时间戳和哈希的 PDF 报告,就是你的「域名清白证明」。下面这张表把两种留档方式的差距量化说清楚:
| 留档方式 |
时间戳 |
防篡改 |
可检索归档 |
申诉采信度 |
| 手机截图 |
❌ 无 |
❌ 无法校验 |
❌ 散落聊天 |
低 |
| 浏览器另存 HTML |
⚠️ 文件修改时间可改 |
❌ 无哈希 |
⚠️ 需手动整理 |
中 |
| 带哈希 PDF 报告 |
✅ 内嵌生成时间 |
✅ SHA-256 校验 |
✅ 按日期自动归档 |
高 |
四维检测数据怎么自动采集并整理成报告要用的 JSON?
生成 PDF 报告的第一步,是把谷歌域名防红、QQ微信防红、防反诈屏蔽、APK爆毒四个维度的检测结果,自动采集并落成一个结构化的 JSON 文件。有了这份 JSON,后面的排版、出图、归档全部可以自动化。下面三步带你搭好「数据采集」这层。
1
用 curl 采集四维检测结果
四维检测各有一个数据源:谷歌用 Safe Browsing API、QQ微信用腾讯 urlsec、反诈用四大运营商 DNS 解析、APK 用 Virustotal 文件哈希。下面这段 Shell 把四个维度一次性跑完,结果存成变量。
# 四维检测:一次跑完四个平台,结果存成变量
DOMAIN="example.com"
# 1. 谷歌 Safe Browsing(返回空 = 未命中 = 安全)
GSB=$(curl -s -X POST "https://safebrowsing.googleapis.com/v4/threatMatches:find?key=YOUR_KEY" \
-H "Content-Type: application/json" \
-d "{\"threatInfo\":{\"threatTypes\":[\"MALWARE\",\"SOCIAL_ENGINEERING\"],\"platformTypes\":[\"ANY_PLATFORM\"],\"threatEntryTypes\":[\"URL\"],\"threatEntries\":[{\"url\":\"http://$DOMAIN\"}]}}")
# 2. QQ 微信 urlsec(返回 JSON,关注 result 字段)
QQ=$(curl -s "https://cgi.urlsec.qq.com/index.php?m=url&a=valid&url=http://$DOMAIN")
# 3. 反诈 DNS(四大运营商,被劫持会返回拦截页 IP)
FZ=$(dig +short @114.114.114.114 $DOMAIN)
# 4. APK 爆毒(域名级报告)
VT=$(curl -s -H "x-apikey: YOUR_VT_KEY" \
"https://www.virustotal.com/api/v3/domains/$DOMAIN")
💡 Safe Browsing 的 API key 在 Google Cloud Console 免费申请,每天 1 万次额度;Virustotal 的 x-apikey 在 VT 官网账号里免费获取。
2
把四维结果打包成结构化 JSON
用 jq 或 Python 把上面的原始返回「翻译」成一份统一的检测结果 JSON,包含域名、时间戳、四个维度的状态和关键原始字段。这份 JSON 就是 PDF 报告的数据源。
# 用 Python 把四维结果写入 result.json
import json, datetime, subprocess
result = {
"domain": "example.com",
"timestamp": datetime.datetime.now().isoformat(),
"dimensions": {
"谷歌 Safe Browsing": "未命中(安全)",
"QQ微信防红": "未拦截(安全)",
"防反诈屏蔽": "正常解析",
"APK爆毒": "0引擎检出(安全)"
},
"raw": { "gsb": "", "qq": "", "dns": "", "vt": "" }
}
json.dump(result, open('result.json', 'w', encoding='utf-8'),
ensure_ascii=False, indent=2)
print('result.json 已生成')
💡 关键是把「原始返回」也一并存进 raw 字段——PDF 里附上原始 JSON,申诉时才有「可复现」的证据,而不是一句「我测过是绿的」。
3
(进阶)把四维检测封装成一个可复用函数
如果每天都要跑,建议把上面两步封装成一个 detect.sh 脚本,一条命令完成「采集 + 落 JSON」,后面接 cron 定时任务直接复用。
# detect.sh —— 一条命令采集四维结果并落 JSON
# 用法:bash detect.sh example.com
DOMAIN=$1
# … 上面四维采集逻辑 …
python3 build_json.py "$DOMAIN"
💡 采集和排版分离的好处是:同一份 result.json,既能生成 PDF,也能生成 Markdown、HTML、告警推送——一次采集,多处复用。
用什么免费工具能生成带图表、带中文的 PDF 检测报告?
拿到 result.json 后,就是「排版出图」这一步。市面上一堆 PDF 生成库,但对中文检测报告来说,不是每个都能无痛输出中文——很多库默认字体不支持中文,会生成一堆乱码或方块。下面这张表帮你快速选型:
| 工具 |
语言 |
中文支持 |
图表能力 |
适合场景 |
| reportlab |
Python |
✅ 内置 STSong 等 CID 字体 |
✅ 可画表格/折线/柱状 |
推荐首选,零依赖出图 |
| fpdf2 |
Python |
✅ 需注册 TTF 字体 |
⚠️ 基础表格 |
轻量、单文件、无图表需求 |
| weasyprint |
Python |
✅ 走 HTML+CSS |
✅ 可嵌入 SVG 图表 |
想用 HTML 模板控制版式 |
| wkhtmltopdf |
CLI |
✅ 走 HTML+CSS |
✅ 可嵌入图表 |
已有 HTML 报告想直接转 PDF |
| matplotlib |
Python |
⚠️ 需配置中文字体 |
✅ 专业趋势图 |
单独生成趋势图,再拼进报告 |
综合来看,reportlab 是「免费 + 中文 + 图表」三者兼顾的最佳起点:它内置了 STSong(宋体)、STHeiti(黑体)等 CID 字体,无需额外下载字体文件,直接就能输出中文,还能画表格和简单图表。下面用 reportlab 把 result.json 变成一份 PDF:
1
安装 reportlab
# 一行安装 reportlab
pip install reportlab
💡 reportlab 是纯 Python 库,无系统依赖,服务器、本地、Termux 都能装。
2
写一个把 result.json 排版成 PDF 的脚本
下面这段脚本读 result.json,生成一份包含「封面标题 + 四维状态表 + 时间戳」的 PDF 检测报告。中文直接用内置 STSong / STHeiti 字体。
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import mm
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
import json, datetime
# 注册中文字体(reportlab 内置,无需下载字体文件)
pdfmetrics.registerFont(UnicodeCIDFont('STSong-Light'))
pdfmetrics.registerFont(UnicodeCIDFont('STHeiti-Light'))
data = json.load(open('result.json', encoding='utf-8'))
domain = data['domain']
ts = data['timestamp']
pdf = canvas.Canvas(f'{domain}-检测报告-{ts[:10]}.pdf', pagesize=A4)
w, h = A4
# 封面标题
pdf.setFont('STHeiti-Light', 22)
pdf.drawString(30*mm, h-40*mm, '域名安全四维检测报告')
pdf.setFont('STSong-Light', 12)
pdf.drawString(30*mm, h-52*mm, f'检测域名:{domain}')
pdf.drawString(30*mm, h-60*mm, f'生成时间:{ts}')
# 四维状态表
y = h - 78*mm
pdf.setFont('STHeiti-Light', 14)
pdf.drawString(30*mm, y, '四维检测结果')
pdf.setFont('STSong-Light', 11)
for dim, status in data['dimensions'].items():
y -= 9*mm
pdf.drawString(30*mm, y, f'{dim}:{status}')
pdf.save()
print('PDF 检测报告已生成')
💡 四维状态建议用红/绿区分:reportlab 里用 setFillColor(colors.green) 给「安全」上绿色、colors.red 给「被红」上红色,一眼看清。
一份合格的检测报告,页面结构应该是下面这个样子——封面信息、四维状态、证据区三块缺一不可:
▲ PDF 检测报告的页面结构:封面区 + 四维状态区 + 证据区,缺一不可
怎么给 PDF 报告加 SHA-256 哈希和时间戳,实现防篡改证据固定?
光生成 PDF 还不够——要让它成为「证据」,必须做到内容不可抵赖、时间不可伪造。这一步就是「证据固定」:给 PDF 算一个 SHA-256 哈希,把哈希值和时间戳一起写进一份 sidecar 证据清单。日后任何人想篡改报告,哈希对不上就会立刻暴露。
1
给 PDF 计算 SHA-256 哈希
PDF 生成后,立刻用 sha256sum 算出哈希值。这个哈希就是这份报告的「数字指纹」——内容改一个字节,哈希就完全变样。
# 对生成的 PDF 计算 SHA-256 哈希
sha256sum example.com-检测报告-2026-08-16.pdf
# 输出示例:
# 3f8a2b...c91d example.com-检测报告-2026-08-16.pdf
💡 把哈希值单独抄下来或写进 sidecar 文件,不要只靠文件名记忆——文件名可以被改,哈希值才是唯一标识。
2
生成带哈希和时间的证据清单(evidence.txt)
把「文件名 + 生成时间 + SHA-256 + 检测结论」写进一份 evidence.txt,和 PDF 一起存档。这份清单就是申诉时提交的「证据摘要」。
# 一键生成证据清单 evidence.txt
F="example.com-检测报告-2026-08-16.pdf"
{
echo "文件:$F"
echo "生成时间:$(date '+%Y-%m-%d %H:%M:%S')"
echo "SHA-256:$(sha256sum $F | awk '{print $1}')"
echo "结论:四维检测通过,域名未被谷歌/QQ微信/反诈/APK标记"
} > evidence.txt
cat evidence.txt
💡 时间戳建议用可信时间源(如 date -u 取 UTC,或接入 RFC 3161 可信时间戳服务),避免服务器本地时间被质疑。
3
(进阶)用 GPG 签名,让证据更硬
如果你需要更高的可信度,可以对 PDF 做 GPG 数字签名。签名后的文件带你的身份信息,第三方可以用你的公钥验证「这份报告确实是你生成、且未被篡改」。
# 用 GPG 对 PDF 做分离签名(生成 .sig 文件)
gpg --armor --detach-sign example.com-检测报告-2026-08-16.pdf
# 验证签名
gpg --verify example.com-检测报告-2026-08-16.pdf.asc
💡 GPG 签名比纯哈希多一层「身份」绑定:哈希只能证明「没被改」,签名还能证明「是我发的」。
⚠️ 最容易踩的一个坑:只存「结论」不存「原始数据」
很多人归档时只记一句「谷歌没红、QQ没拦截」,把原始的 API 返回 JSON 删了。结果申诉时平台要求「提供检测证据」,你只能干瞪眼。正确做法是:PDF 里附带四维检测的原始返回 JSON,或至少把 raw 字段一起打包存档——有原始数据,别人才可能复现并采信你的结论。
怎么把 PDF 报告接入 cron 定时任务,实现每天自动生成归档?
最后一步是「自动化」:把前面的采集、排版、固化串成一条流水线,交给 cron 每天定时跑。这样你的域名每天自动生成一份带哈希的检测报告并按日期归档,需要追溯「哪一天开始被红」时,翻归档目录就能精准定位。
1
把流水线串成一个 run.sh 脚本
一个脚本串起「采集 → 生成 PDF → 算哈希 → 归档」四步,输入一个域名即可。
# run.sh —— 一键生成当日检测报告并归档
# 用法:bash run.sh example.com
DOMAIN=$1
DATE=$(date +%Y-%m-%d)
mkdir -p reports/$DATE
bash detect.sh "$DOMAIN" # 第1步:采集四维数据 → result.json
python3 make_pdf.py # 第2步:result.json → PDF 报告
PDF=$(ls *.pdf | head -1)
echo "$(sha256sum "$PDF")" >> reports/$DATE/evidence.txt # 第3步:哈希留证
mv "$PDF" result.json reports/$DATE/ # 第4步:按日期归档
echo "[$DATE] 检测报告已归档:reports/$DATE/"
💡 按日期建目录归档(reports/2026-08-16/),几个月后想回溯某一天的检测状态,直接进对应目录就能找到。
2
挂到 crontab,每天固定时间自动跑
用 crontab 设置定时任务。考虑到四大平台数据库刷新时间不同(谷歌约 2 小时、反诈约 4 小时、QQ微信约 6 小时),建议每天固定 2-3 个时间点各跑一次,覆盖平台的刷新窗口。
# crontab -e 添加下面几行,每天 9:00 / 15:00 / 21:00 自动生成检测报告
0 9 * * * cd /root/detect && bash run.sh example.com >> /var/log/report.log 2>&1
0 15 * * * cd /root/detect && bash run.sh example.com >> /var/log/report.log 2>&1
0 21 * * * cd /root/detect && bash run.sh example.com >> /var/log/report.log 2>&1
💡 一天多次检测还有个隐藏好处:能更精确地锁定「被红的时间窗口」,比一天一次更接近真实的封禁时间点。
3
接入告警,状态一变就推送到手机
归档之外,再加一层「状态变化告警」:脚本里比对今天和昨天的四维结果,一旦从绿变红,立刻推送到 Telegram 或企业微信。这样不用天天盯报告,出问题第一时间知道。
# 状态变化告警(run.sh 末尾追加)
# 如果今天某维度与昨天不一致,推送告警
if [ "$TODAY_STATUS" != "$YESTERDAY_STATUS" ]; then
curl -s "https://api.telegram.org/botYOUR_TOKEN/sendMessage" \
-d "chat_id=YOUR_CHAT" -d "text=⚠️ $DOMAIN 检测状态变化"
fi
💡 告警 + 归档组合起来,就成了一套「自动检测 + 自动留证 + 自动通知」的完整域名安全监控闭环,全程零成本。
❌ 常见误区:「检测报告只是给自己看的,随便记一下就行」
检测报告真正的价值在「出事之后」——被误红要申诉、被合作方质疑要自证、被平台复核要举证,这时候一份带时间戳和哈希的 PDF 报告就是你的底气。现在随便记,等真需要证据的那天就晚了。正确做法是:从今天起就把自动报告流水线跑起来,让「留证」变成默认动作。
✅ 推荐落地顺序(一次搭好,长期受益)
第 1 步:curl 采集四维数据 → result.json → 第 2 步:reportlab 生成带时间戳的 PDF → 第 3 步:sha256 哈希 + evidence.txt 证据固定 → 第 4 步:crontab 每天自动生成并按日期归档,状态变化推告警。
整套零成本,一次搭好之后每天自动运行,你只需要在出问题时打开归档目录取证据。
客户怎么说?
"我们的棋牌APP之前每天被封,接入Ai防红后连续运营90天零封禁。"
——某东南亚游戏运营商,月付1500U套餐
"谷歌防红提交后24小时解除Safe Browsing警告,比自己申诉快10倍。"
——某海外贸易平台,使用谷歌防红500U/月
"以前被误红只会截图到处发,申诉被驳回两次。后来用带哈希的PDF报告提交,附上时间戳和原始数据,一次就通过了。"
——某独立站长,用自动报告流水线完成证据固定后成功申诉
不想自己搭脚本?怎么用 333Check 免费拿到一份带证据的四维检测报告?
本文教你用免费工具把四维检测结果自动生成带哈希的 PDF 报告——你完全可以零成本自己跑起来。
如果你希望跳过搭建,直接拿到一份覆盖谷歌域名防红、QQ微信防红、防反诈屏蔽、APK爆毒四维、带时间戳和证据的报告,联系 @AICDN 免费测试。
我们帮你跑第一次全维度检测并出具可读报告,3 分钟出结果。
🔍 提交域名 · 免费获取四维检测报告