1. 做这个工具的动机:收录检测为什么是刚需
做网站的人,尤其是靠搜索引擎吃饭的那批人,几乎每天都要问一个问题:我的新页面到底被百度收了没有?
我最早是人工检测的。写完一篇文章,发出去,然后打开百度,手动输入 site:域名,一页一页翻,找自己的链接。运气好的时候一两分钟能确认,运气不好,翻到第三四页还没看到,就得换关键词再搜一遍。一天发五篇文章,光检测收录就得耗掉半小时。后来手里管的站点多了,这个动作的重复性让人抓狂,我才动了写个工具的心思。
这个工具的本质其实很简单:把"人肉打开百度、输入site指令、查看结果"这套流程自动化。你输入一个链接,它代替你去百度执行一次精确查询,然后告诉你这个页面到底在不在百度的索引里。如果再用心一点,把多个链接的检测结果批量输出、把历史记录存下来,就是一个轻量级的收录监控系统。
这个工具适合谁?
- 天天更新内容的站长,需要快速确认新文章有没有被收录。
- 做SEO外包或代运营的人,手上有十几个站点,需要批量核对索引情况。
- 刚接触SEO的新手,不想记site指令,直接粘链接就能看结果。
我最终选择了PHP作为后端语言,配了一套干净的前端模板,整个工具就是一个文件加一个页面,部署在任何虚拟主机上就能用。下面把我踩过的坑、用到的技巧、还有完整的代码实现都拆开讲清楚。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 方案选型:为什么是PHP单文件+前端模板
2.1 几种技术路线的对比
做收录检测,技术方案不少,我先后试过Python脚本、浏览器插件、还有直接调接口的方式,最后才定的PHP。
先看Python。写个爬虫脚本,用requests库请求百度,解析结果,逻辑上完全通。但问题在于,工具是要给网站访客用的,不是你一个人命令行里跑的。你需要一个Web界面,Python要跑起来要么用Flask/Django起服务,要么用CGI方式接进服务器,对于大多数只有虚拟主机的站长来说,部署成本偏高。
再看浏览器插件。插件的优势是能拿到完整的登录态和Cookie,访问百度不太容易被拦。但插件的分发和安装门槛摆在那里,非技术用户不会装,而且每个浏览器都得适配。如果是要挂在自己网站上给别人用的工具,插件这条路直接排除。
最后说回PHP。理由很实在:
- 几乎所有虚拟主机都支持PHP,不需要装任何额外运行环境。
- 一个文件就能实现完整的请求、解析、返回逻辑。
- 和HTML模板天然融合,页面即代码,改起来快。
- cURL扩展是PHP标配,发HTTP请求不用引第三方库。
我最终定的架构是:前端一个静态HTML模板负责展示和交互,后端一个PHP接口负责查询和解析,两者之间用AJAX通信。整套东西可以打包成任何站长都能下载部署的"工具网站模板"。
2.2 目录结构与文件职责
这里给出我最终使用的目录结构:
text复制baidu-index-checker/
├── index.html # 工具首页,表单+结果显示区域
├── assets/
│ ├── style.css # 页面样式
│ └── app.js # 前端交互逻辑
├── api/
│ └── check.php # 后端检测接口
├── cache/ # 缓存目录,存放Cookie和查询缓存
│ └── .htaccess # 禁止外部访问该目录
└── README.md # 部署说明
为什么要单独搞一个api/目录?因为前端页面是静态的,可以被各种服务器托管;而后端接口涉及请求逻辑,单独拆开方便后续替换实现。比如你以后想换Node后端,前端代码一行不用动,只改app.js里的接口地址就行。
cache/目录用来干什么?两个用途:一是存Cookie,二是存查询结果缓存。Cookie的作用后面会详细讲,先记下"访问百度需要维持会话状态"这句话。查询缓存则是为了避免同一个链接短时间被反复检测,白白消耗请求次数,还容易被百度限制。
2.3 免费部署的可行性
既然是"免费工具模板",部署成本就得压到最低。这套PHP方案可以说没什么比它更省的了:
- 域名可以用免费二级域名,或者直接用IP访问。
- 虚拟主机有很多免费方案,容量1GB以下就够跑这个工具。
- 不需要数据库,所有数据可以落在文件中。
我自己最初把它跑在一个免费的PHP虚拟主机上,访问量不大,用了半年多没出过问题。后来站点流量上来了才迁到自己的服务器上。所以如果你的目的是给自己用、或者分享给朋友用,免费的部署方式完全够。
3. 核心实现:两步走通收录检测
3.1 前端模板:表单、交互与页面布局
工具的价值在于"输入链接-看到结果"这个过程足够短。所以前端模板的设计原则是:页面打开即焦点落在输入框,输入URL回车即触发检测,结果区域实时反馈状态。
页面结构我用了最传统的三区块布局:
html复制<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>百度收录检测工具</title>
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header class="tool-header">
<h1>百度收录检测</h1>
<p>输入网址,快速查询该链接是否被百度搜索引擎收录</p>
</header>
<section class="check-panel">
<div class="input-row">
<input type="url" id="url-input" placeholder="请输入要检测的网址,如 https://example.com/post/123.html" autofocus>
<button id="check-btn">立即检测</button>
</div>
<div class="batch-row">
<textarea id="batch-input" placeholder="支持批量检测,每行一个网址"></textarea>
<butt
