超级外链发布工具(V2.0 版)
超级外链发布工具(V2.0 版)
一款基于 PHP8 + SQLite 的免费超级外链发布系统,向 90+ 高权重查询类站点同步提交网址,
帮助搜索引擎快速发现并收录你的网站。全程静默 iframe 提交,零弹窗打扰。
一、环境要求
重要:本次升级新增了「服务端可达性探测」功能,必须开启 PHP 的
curl扩展,
否则「🔍 可达性探测」页面会提示"PHP curl 扩展未安装"。
宝塔开启 curl 扩展
宝塔面板 → 软件商店 → 已安装 → 找到对应 PHP 8.x
点击「设置」→「安装扩展」→ 勾选 curl → 安装
重启 PHP 服务
二、安装步骤(宝塔)
宝塔面板 → 网站 → 添加站点(PHP 版本选 8.0+,无需数据库)
上传本程序所有文件到网站根目录并解压
确认
data目录可写(宝塔默认即可;如异常可执行chmod 755 data)确认 PHP 已启用
curl扩展(见上文)首次访问
index.php会自动初始化数据库(含默认文章、默认友链、管理员账号)后台地址:
http(s)://你的域名/admin/login.php
三、默认管理员
用户名:
admin密码:
admin123⚠️ 登录后请立即在「网站设置」中修改密码!
四、功能一览
🏠 前台功能
超级外链工具:http/https 下拉预填、支持单个域名 + 批量域名(一行一个)
静默提交:全程使用隐藏 iframe,零弹窗打扰
三级过滤:格式校验 + 可达性探测 + iframe 嵌入检测,自动跳过无效站点
实时日志:每个站点的加载状态(成功/超时/失败)实时可见
精确统计:推广完成后显示"加载成功 X 个 / 超时 Y 个 / 失败 Z 个 / 跳过 N 个"
最新文章:首页展示后台发布的文章
友情链接:页脚展示后台配置的友链
⚙️ 后台功能
网站设置:名称/关键词/描述/宣传语/ICP 备案/统计代码、管理员改密
文章管理:发布/编辑/删除,支持纯文本内容(空行分段)
友情链接:添加/排序/删除
🎯 目标检测(新增):静态校验 targets.php 每个站点的占位符格式
🔍 可达性探测(新增):cURL 并发实探所有站点,检查 HTTP 状态 + iframe 策略
五、三重可信度检测机制
本次优化最大的亮点:从"能不能拼 URL"升级到"能不能真的访问"。
TEXT复制
┌─────────────────────────────────────────────────────────────┐
│ ① 格式层:targets.php 里的 URL 模板是否含 {domain}/{url} │
│ → admin/targets.php 静态校验 │
│ → 缺占位符 = 无法定位目标页面,直接跳过 │
├─────────────────────────────────────────────────────────────┤
│ ② 可达层:服务器 cURL 实探 HTTP 状态码 │
│ → admin/probe.php 并发探测 │
│ → 2xx/3xx = 通过;4xx/5xx/0 = 失败,跳过 │
├─────────────────────────────────────────────────────────────┤
│ ③ 嵌入层:响应头是否允许被 iframe 嵌入 │
│ → admin/probe.php 检测 X-Frame-Options / CSP │
│ → DENY / SAMEORIGIN = 禁止嵌入,跳过 │
└─────────────────────────────────────────────────────────────┘
↓ 三层全部通过
前端推广时才真正访问
解决了什么问题?
六、目标站点探测详解
🎯 目标检测(admin/targets.php)
作用:静态检查 targets.php 中每一个站点的 URL 模板是否含有占位符。
判定规则:
含
{domain}或{url}→ ✅ 有效都不含 → ❌ 无效
页面显示:
每个站点的 URL 模板、含哪些占位符、格式是否有效
有效/无效站点数量统计
无效站点会给出修复建议和示例
示例:
PHP复制
// ✅ 正确:带占位符
["站长工具 IP查询", "https://ip.chinaz.com/{domain}"],
// ❌ 错误:没有占位符 —— 会被自动跳过
["错误示例", "https://ip.chinaz.com/"],
🔍 可达性探测(admin/probe.php)
作用:服务器用 cURL 并发访问每个目标 URL,检查 HTTP 状态码和 iframe 嵌入策略。
工作原理:
输入你的真实域名(如
example.com)和协议(https/http)系统把每个目标模板里的
{domain}/{url}替换成真实值用
curl_multi20 并发同时访问所有目标逐条检查:
HTTP 状态码是否 2xx / 3xx
响应头是否有
X-Frame-Options: DENY/SAMEORIGIN响应头是否有 CSP
frame-ancestors 'none'/'self'
结果缓存到
data/targets_status.json前端推广时
api.php读取缓存,自动跳过失效站点
探测结果分类:
耗时:约 10~40 秒(取决于站点响应速度)
缓存文件:data/targets_status.json,可通过删除该文件重新探测。
七、HTTP 状态码判定规则
系统判定"可访问"的规则:
PHP复制
'ok' => ($err === '') // ① 没有 cURL 错误
&& ($code >= 200 && $code < 400) // ② HTTP 状态码 2xx 或 3xx
&& $canIframe; // ③ 允许被 iframe 嵌入
状态码速查表
灰色地带(可稍后重试)
以下状态可能是临时的,建议隔 24 小时再探测一次:
403—— 服务器识别出你是机器人429—— 探测并发太高被限流(可降低probe_urls_batch()的并发数)502503504—— 目标站点临时故障
八、日常使用流程
🚀 首次部署(一次性)
TEXT复制
① 安装 PHP8 + 开启 curl 扩展
↓
② 上传文件,访问首页,初始化数据库
↓
③ 登录后台 → 「🎯 目标检测」看格式校验
↓
④ 登录后台 → 「🔍 可达性探测」填入真实域名 → 开始探测
↓
⑤ 探测结果缓存到 data/targets_status.json
↓
⑥ 返回首页正常使用工具
📅 日常推广
打开首页,输入域名(支持批量)
选择协议(https/http)
点击「🚀 开始推广」
观察实时日志:
⚠️ 已跳过 N 个格式无效目标🚫 已跳过 N 个探测失败目标✓ 站点名 — 已提交 (1234ms)⏱ 站点名 — 超时✗ 站点名 — 失败
完成时统计:共提交 X 个站点 —— 加载成功 Y,超时 Z,失败 W,跳过 N
🔧 维护更新
九、文件结构
TEXT复制
├── index.php 首页(工具+文章+友链)
├── article.php 文章详情
├── api.php 目标站点接口(JSON,含探测状态)
├── targets.php 91个提交目标站点库
├── lib.php 核心函数/数据库初始化/探测函数
├── admin/ 管理后台
│ ├── login.php 登录
│ ├── logout.php 退出
│ ├── index.php 网站设置+改密
│ ├── articles.php 文章列表/删除
│ ├── article_edit.php 发布/编辑文章
│ ├── links.php 友情链接管理
│ ├── targets.php 🎯 目标检测(新增)
│ ├── probe.php 🔍 可达性探测(新增)
│ └── _header.php / _footer.php
├── assets/
│ ├── css/style.css
│ └── js/main.js 前端推广逻辑(三级过滤 + 详细日志)
└── data/
├── site.db SQLite 数据库(自动创建)
└── targets_status.json 探测结果缓存(自动创建)
十、常见问题
Q1:探测页面提示"PHP curl 扩展未安装"?
宝塔 → 软件商店 → PHP 8.x → 设置 → 安装扩展 → 勾选 curl → 重启 PHP。
Q2:探测结果全部失败 / 大量超时?
可能原因:
服务器出口 IP 被目标站封禁 —— 换服务器或加代理
探测并发太高 —— 打开
lib.php,把probe_urls_batch($urlMap, 6, 20)里的20改成5PHP 超时太短 —— 宝塔 PHP 设置里把
max_execution_time调到300
Q3:站点显示"禁止 iframe",但我手动打开是正常的?
说明该站点设置了 X-Frame-Options: SAMEORIGIN,只能在自己的域名下被 iframe 嵌套。
这类站点无法通过隐藏 iframe 推广(浏览器会拒绝加载),系统会自动跳过。
如果确实想推广这类站点,唯一的替代方案是服务端 cURL 提交(但会暴露服务器 IP,不推荐)。
Q4:探测后,首页显示的站点数变少了?
首页显示的是"格式有效"的站点数,而不是"探测可用"的站点数。
探测可用的数量只在推广时的日志里体现,属于动态过滤。
Q5:探测结果会过期吗?
不会自动过期,会一直用缓存直到你重新探测。
建议每月探测一次,或每次修改 targets.php 后重新探测。
Q6:数据备份怎么做?
只需备份两个文件:
data/site.db—— 所有文章、友链、设置、管理员密码targets.php—— 目标站点库
data/targets_status.json 是探测缓存,可随时重新生成,无需备份。
Q7:为什么推广日志里有"超时"但状态码是 200?
前端 iframe 的超时判定基于浏览器加载时间(7 秒),
有些站点首屏加载慢、图片多、有 JS 阻塞,可能导致 iframe 超时。
但服务端探测(6 秒超时 + 只读 64KB)通常会通过。
这类站点不算真失效,只是加载慢,可忽略。
Q8:如何添加新的目标站点?
编辑 targets.php,按下面格式追加即可:
PHP复制
["站点名称", "https://example.com/query?q={domain}"],
{domain}会被替换成纯域名(如example.com){url}会被替换成完整网址(如https://example.com)至少要含一个占位符,否则会被格式层自动跳过
添加完记得重新运行「🔍 可达性探测」
十一、说明与免责
提交原理
以隐藏 iframe 向 IP 查询 / SEO 查询 / Whois / 收录 / 安全检测等站点发起请求,
留下查询记录供搜索引擎抓取。整个过程不会弹出任何窗口。
关于"成功"的定义
本工具对"成功"的判定是三层可信度:
✅ URL 模板格式正确(含占位符)
✅ HTTP 状态码正常(2xx / 3xx)
✅ 允许 iframe 嵌入
三层全通过才会真正提交。
但由于浏览器跨域限制,无法 100% 保证页面内容正确——
有些站点会用 200 状态码返回"未找到/请登录"页面。
这类情况需要人工抽查(探测页的"测试 URL"列可直接点击打开)。
使用建议
建议每天使用 1~2 次,连续数天效果更佳
使用真实域名做探测,而不是
example.com定期检查
targets.php中的站点是否仍然有效请勿用于任何违规用途,仅适合正规网站的收录推广
免责声明
本工具仅用于技术学习和正规网站的 SEO 推广,
使用者需自行承担因使用本工具产生的一切后果。
请勿用于刷量、作弊、攻击等任何违反法律法规或目标站点服务条款的用途。
版本更新日志
v2.0(本次优化)
新增
🎯 目标检测页面:静态校验
targets.php占位符格式🔍 可达性探测页面:cURL 并发实探 HTTP 状态 + iframe 策略
📊 探测结果缓存:
data/targets_status.json🔎 HTTP 状态码判定:2xx/3xx 通过,4xx/5xx/0 失败
🚫 iframe 嵌入检测:识别
X-Frame-Options/ CSPframe-ancestors📈 三级过滤:格式层 + 可达层 + 嵌入层,逐层过滤
优化
前端日志细分"加载成功 / 超时 / 失败"三类状态
推广完成时显示"跳过无效目标 N 个"的明确提示
首页站点数改为显示"格式有效"的站点数
修复
❌ 修复"无占位符的站点也提示成功"的假成功问题
❌ 修复"站点已关闭/404 也提示成功"的假成功问题
❌ 修复"禁止 iframe 嵌入也提示成功"的假成功问题
v1.0(初版)
首页工具 + 文章 + 友链
管理后台 + 文章管理 + 友链管理
91 个目标站点库
隐藏 iframe 静默提交
开源协议
MIT License
保留开发者链接及版权,免费获得后续最新版本及站点库支持。 网创小站 https://www.wc88.cn