PHP使用Curl检测百度收录

不晚
不晚
发布时间:2026-10-14| 6人浏览过
原创

在SEO优化工作中,经常需要批量检查网站的哪些页面已经被百度搜索引擎收录。手动使用 site: 命令逐一查看效率极低。本文将介绍一种基于PHP的自动化检测方法,通过构造特定的URL并使用Curl库抓取搜索结果页,根据返回页面的内容特征(如搜索无结果时的特定提示)来判断目标URL是否被收录。

实现原理

该方法的原理是利用百度的搜索接口。如果我们向百度搜索一个具体的URL,如果该URL已被收录,搜索结果中通常会包含该链接;如果未被收录,搜索结果页可能会显示“抱歉,没有找到与此相关的结果”或类似的提示文字(具体提示词可能随百度界面调整而变化,常见为 “抱歉,没有找到” 或 “未找到相关网页” 等)。

因此,我们可以通过程序构造一个带参数的搜索URL,发起HTTP GET请求,然后分析响应文本中是否包含表示“未找到”的关键字。

代码实现与操作步骤

第1步:编写检测函数

我们需要创建一个PHP函数,接收一个URL字符串作为参数。该函数负责:

  1. 构建百度搜索查询URL:http://www.baidu.com/s?wd=原URL
  2. 初始化Curl会话
  3. 设置必要的Curl选项(如禁止跟随重定向、返回原始输出等)
  4. 执行请求并获取响应内容
  5. 关闭Curl连接
  6. 分析响应内容,判断是否包含未收录的特征词
复制代码 代码如下:

<?php
/*
* 检测网页是否被百度收录
* 返回 1 表示已收录,返回 0 表示未收录
* @param string $url 待检测的完整网址
*/
function checkBaiduInclude($url){
    // 构建百度搜索地址
    $baiduUrl = 'http://www.baidu.com/s?wd=' . urlencode($url);
   
    // 初始化Curl
    $curl = curl_init();
   
    // 设置Curl选项
    curl_setopt($curl, CURLOPT_URL, $baiduUrl);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); // 避免重定向影响内容分析
    curl_setopt($curl, CURLOPT_TIMEOUT, 10); // 设置超时时间,防止阻塞
   
    // 可选:添加User-Agent头,模拟浏览器访问,降低被屏蔽风险
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36');
   
    // 执行请求
    $response = curl_exec($curl);
   
    // 检查是否有错误
    if(curl_errno($curl)) {
        return -1; // 返回-1表示请求失败
        echo 'Curl Error: ' . curl_error($curl);
   }
   
    // 关闭Curl
    curl_close($curl);
   
    // 判断结果
    // 注意:百度的提示语可能会变化,请根据实际情况调整判断逻辑
    if(!strpos($response, '抱歉,没有找到') && !strpos($response, '未找到相关')) {
        return 1; // 认为已收录
   } else {
        return 0; // 认为未收录
   }  
}

第2步:调用函数进行检测

定义好函数后,你可以遍历你的网站URL列表,逐个调用此函数进行检查。

// 示例:检测单个URL
$testUrl = 'http://www.example.com/article/1.html';
$result = checkBaiduInclude($testUrl);

if ($result === 1) {
    echo "{$testUrl} 已被百度收录。\n";
} elseif ($result === 0) {
    echo "{$testUrl} 未被百度收录。\n";
} else {
    echo "检测 {$testUrl} 时发生错误。\n";
}

注意事项与潜在问题

  • 百度反爬机制:百度对于高频、自动化的搜索请求有严格的反爬虫策略。如果短时间内大量并发请求,IP可能会被临时封禁。
    • 建议在实际使用时加入随机延时(例如每检查几个URL暂停几秒)。
    • 可以考虑轮换使用不同的User-Agent。
  • 结果准确性:这种方法基于页面文本匹配,并非百度官方API。百度搜索结果页面的HTML结构和提示信息随时可能更新,导致判断关键字失效。因此,检测结果仅供参考,并非100%准确。最准确的收录状态应以百度站长平台的数据为准。
  • 性能考量:每次请求都需要等待网络响应,对于成千上万个URL的大规模检测,速度会比较慢。建议将结果缓存到数据库或文件中,避免重复检测。

替代方案:百度站长平台

如果你拥有百度站长平台(现称“百度搜索资源平台”)的权限,强烈建议使用其提供的“普通收录”或“快速收录”查询功能,或者通过Sitemap提交后的反馈数据来获取更权威、实时的收录情况。上述PHP方法仅适用于没有权限或需要快速自检的场景。

以上就是通过PHP和Curl检测百度收录的详细内容,更多关于百度收录检测的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。