作者: xinyun

  • 域名检测工具源码,PHP开源免费,一键查询微信拦截和域名被墙

    域名检测工具源码,PHP开源免费,一键查询微信拦截和域名被墙
    域名检测工具封面图
    开源 · 免费 · 零依赖

    域名检测工具源码,PHP开源免费,一键查询微信拦截和域名被墙

    做站长的都知道,域名最怕两件事 —— 被微信拦截、被墙。 这个工具把检测自动化了:PHP 原生、零依赖、无数据库,上传到服务器就能跑。

    为什么写这个

    日常运营中,域名莫名其妙在微信里打不开,或者突然海外能访问、国内访问不了,排查起来非常折腾。常见做法是:

    • 手动复制域名到微信里测试(麻烦、不自动化)
    • 靠第三方接口查(但接口供应商经常换,写死代码就崩)
    • 被墙检测靠自己 ping + 翻出去对比(费时)

    所以做了一个纯 PHP 的域名检测系统,支持:

    1. 微信拦截检测:域名在微信内是否被拦截(分享打不开、跳转被封)
    2. 域名被墙检测:DNS 污染对比 + 海外节点连通性探测(综合判定是否被墙)

    效果预览

    域名检测工具首页界面
    首页:输入域名,选择检测范围,一键检测

    输入域名,点击「开始检测」,即可同时检测两项:

    检测结果正常状态
    正常状态:微信正常 未发现被墙
    检测结果拦截状态
    拦截状态:微信已拦截 DNS污染+海外不可达
    • 微信拦截:绿色「正常」/ 红色「已拦截」
    • 被墙检测:绿色「正常」/ 红色「已拦截」,附带 DNS 污染与海外连通性详情
    • 支持点击「查看详情」展开原始检测数据,方便调试排查

    功能特点

    零依赖原生 PHP 8.0+,无 Composer,无数据库,上传即用
    被墙检测开箱即用无需任何 key,DNS 污染对比 + 海外探测自动判断
    微信拦截插件化多 Provider 并行检测,命中拦截即终止,换源不改代码
    支持第三方 API填入 key 即可接入 nowapi、5la 等,字段映射全配置化
    公众号 Cookie 检测模拟后台「链接检测」接口,判定最准确
    REST API同步 + 异步检测,结果轮询 + Webhook 回调
    限流与缓存内置 IP 限流 + 结果缓存,避免被第三方风控
    事件系统钩子回调,方便接入日志、统计、通知等扩展

    架构设计(扩展点一览)

    整个系统围绕 5 个扩展点 设计,后续加新检测能力(微博拦截、QQ 拦截、Telegram 屏蔽等)都不需要改已有代码:

    接口抽象        → DetectorInterface / WechatProviderInterface
    注册表/插件    → DetectorRegistry,register() 即接入
    事件/回调       → EventManager(before/after/task 等)+ Webhook
    配置驱动        → config.php 集中控制所有开关与参数
    预留扩展字段   → DetectionResult->extra / provider_results
    微信检测源支持多 Provider 并行兜底:第三方 API + 公众号 Cookie 双源,一个挂了自动走下一个,判定结果明细全部留痕。

    检测原理简述

    微信拦截检测

    微信官方公开检测接口已于 2026 年初失效,目前系统采用两种可靠方案:

    方案 A:第三方聚合 API(推荐快速接入)
    注册 nowapi、5la 等获取 key,在 config.php 中填入并开启。返回字段通过配置映射(status_path、blocked_values 等)适配,换供应商不需要改代码。

    方案 B:公众号后台 Cookie 接口(判定最准)
    登录 https://mp.weixin.qq.com,F12 抓 checkurl 接口的 Cookie + token,填入配置。建议用测试号/备用号,登录态会失效。

    被墙检测

    信号说明判定
    DNS 污染对比本地解析与海外 DoH(8.8.8.8 / 1.1.1.1)结果本地失败/不一致 → 疑似
    海外连通check-host.net 多节点 TCP 443 探测海外是否可达
    综合判定DNS 被污染 + 海外可达blocked 极大概率被墙

    部署教程

    前置要求

    • PHP 8.0+(需 curl、openssl、json 扩展)
    • Web 服务器(Nginx / Apache / 宝塔 / 虚拟主机均可)
    • 无需数据库,无需 Composer

    1. 下载并上传

    将程序包上传到服务器网站目录:

    website_root/
    ├── public/          ← 网站根目录(指向这里)
    ├── src/
    ├── config/
    ├── bin/
    ├── tests/
    └── storage/         ← 运行时自动生成(需可写)
    关键:站点根目录必须指向 public/,否则源码文件会暴露。

    宝塔面板操作:

    • 网站 → 添加站点 → 根目录设为 .../public
    • 运行目录设为 /public
    • 伪静态选「PHP 默认」(index.php 自带路由解析,无需额外 rewrite)

    虚拟主机操作:

    • 将 public/ 下文件(index.php、index.html、assets/)放到网站根目录
    • 将 src/、config/ 放到上一级目录(相对路径已写死,需保持层级)
    • 或请求主机商修改根目录为 public/

    2. 给 storage 写权限

    宝塔直接设目录权限 755 或 775;命令行执行:

    chmod -R 755 storage/

    storage/ 目录首次运行会自动创建,包含 tasks/、cache/、logs/。

    3. 验证运行

    浏览器打开站点,应看到检测页面。访问 /api/status 返回 JSON 即说明 API 正常:

    GET /api/status
    {"ok":true,"detectors":[{"name":"wechat","enabled":true},{"name":"wall","enabled":true}]}

    命令行测试(可选):

    php tests/selftest.php baidu.com

    4. 配置微信检测源(可选,被墙检测默认已可用)

    编辑 config/config.php,开启第三方 API 或公众号 Cookie 检测:

    // config/config.php — 微信检测源配置
    'providers' => [
        [
            'name'     => 'nowapi',
            'type'     => 'thirdparty',
            'enabled'  => true,          // ← 打开
            'api_url'  => 'https://api.oioweb.cn/api/wxcheck',
            'key'      => 'YOUR_KEY',    // ← 填你的 key
            'method'   => 'GET',
            'url_field'=> 'url',
            'key_field'=> 'key',
            'timeout'  => 10,
            'response' => [
                'status_path'   => 'code',
                'message_path'  => 'msg',
                'blocked_values'=> [2],
                'normal_values' => [1],
            ],
        ],
    ],

    第三方接口返回结构不同,改 response 字段映射即可适配,不需要改代码。

    开发环境启动(本地调试)

    cd 项目目录
    ./bin/server.sh 8080

    浏览器访问 http://127.0.0.1:8080

    REST API 使用

    同步检测(默认)

    GET /api/check?url=example.com&sync=1

    请求内阻塞执行,返回完整结果。

    异步检测

    GET /api/check?url=example.com&sync=0&webhook=https://your-server.com/callback

    返回 task_id,后台 worker 执行,完成后 POST 结果到 webhook。轮询结果:

    GET /api/task/{task_id}

    注意事项

    • 检测结果受网络环境和检测源稳定性影响,仅供参考,请结合实际微信内 / 国内网络实测。
    • 请仅用于自有域名自检与运维,勿用于违规用途。
    • 第三方检测源与公众号接口有风控风险,请控制调用频率。rate_limit 可简单限流。
    • 生产环境建议对 /api/* 加访问鉴权(Token / IP 白名单),避免接口被滥用。

    扩展提示

    如需新增检测平台(如微博、QQ、Telegram),只需:

    1. 新建 src/Detectors/YourDetector.php 实现 DetectorInterface
    2. 在 src/autoload.php 的 build_registry() 中 register() 注册
    3. 系统 API 会自动调度,无需改路由
    工具定位:一个轻量、可扩展、零依赖的域名状态检测工具,适合挂在自己的服务器上,日常批量监控域名健康状态。欢迎讨论、反馈与改进建议。
  • 世界,您好!

    欢迎使用 WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!