以下就是一个每天自动提交网站URL到百度搜索引擎的PHP脚本代码,
包含定时任务设置说明:
<?php
/**
 * 百度搜索引擎自动提交工具
 * 每日自动推送网站URL到百度搜索资源平台
 */
// 配置参数
define('BAIDU_API_URL', 'http://data.zz.baidu.com/urls?site=www.yourdomain.com&token=your_baidu_token');
define('SITEMAP_URL', 'https://www.yourdomain.com/sitemap.xml'); // 网站sitemap地址
define('LOG_FILE', __DIR__ . '/baidu_submit.log'); // 日志文件路径
// 主执行函数
function submitToBaidu() {
    try {
        // 1. 获取待提交的URL列表
        $urls = fetchUrlsFromSitemap();
        
        if (empty($urls)) {
            logMessage("警告:没有获取到可提交的URL");
            return;
        }
        
        // 2. 提交到百度
        $result = postToBaidu($urls);
        
        // 3. 解析结果
        $response = json_decode($result, true);
        
        if (isset($response['error'])) {
            logMessage("提交失败: " . $response['error']);
        } else {
            logMessage(sprintf(
                "提交成功! 成功: %d, 剩余配额: %d, 今日剩余: %d",
                $response['success'],
                $response['remain'],
                $response['remain']
            ));
        }
    } catch (Exception $e) {
        logMessage("系统错误: " . $e->getMessage());
    }
}
// 从网站地图获取URL列表
function fetchUrlsFromSitemap() {
    $sitemapContent = file_get_contents(SITEMAP_URL);
    
    if (!$sitemapContent) {
        throw new Exception("无法获取sitemap文件");
    }
    
    // 解析XML获取URL
    $xml = simplexml_load_string($sitemapContent);
    $urls = [];
    
    foreach ($xml->url as $url) {
        $urls[] = (string)$url->loc;
    }
    
    // 随机选择20个URL(百度单次最多2000条,每天限额根据权限不同)
    shuffle($urls);
    return array_slice($urls, 0, min(20, count($urls)));
}
// 提交到百度API
function postToBaidu($urls) {
    $ch = curl_init();
    
    $options = [
        CURLOPT_URL => BAIDU_API_URL,
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS => implode("\n", $urls),
        CURLOPT_HTTPHEADER => ['Content-Type: text/plain'],
        CURLOPT_TIMEOUT => 30
    ];
    
    curl_setopt_array($ch, $options);
    $result = curl_exec($ch);
    
    if (curl_errno($ch)) {
        throw new Exception("CURL错误: " . curl_error($ch));
    }
    
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($httpCode !== 200) {
        throw new Exception("HTTP错误: " . $httpCode);
    }
    
    curl_close($ch);
    return $result;
}
// 日志记录
function logMessage($message) {
    $logEntry = "[" . date('Y-m-d H:i:s') . "] " . $message . PHP_EOL;
    file_put_contents(LOG_FILE, $logEntry, FILE_APPEND);
    echo $logEntry; // 命令行执行时输出
}
// 执行主程序
if (php_sapi_name() === 'cli') {
    submitToBaidu();
} else {
    die("此脚本应通过命令行执行");
}
使用说明
- 
配置修改:
- 将 
www.yourdomain.com替换为你的网站域名 - 将 
your_baidu_token替换为百度站长平台的API token - 确保 
sitemap.xml存在且包含最新URL 
 - 将 
 - 
百度站长平台准备:
- 注册百度搜索资源平台账号:https://ziyuan.baidu.com
 - 添加并验证你的网站
 - 在「普通收录」→「API提交」获取token
 
 - 
服务器定时任务设置(Linux Crontab):
# 每天凌晨3点执行 0 3 * * * /usr/bin/php /path/to/baidu_submit.php测试命令:
php /path/to/baidu_submit.php - 
Windows 计划任务:
- 创建基本任务
 - 选择「每日」执行
 - 程序选择:
php.exe - 参数:脚本完整路径
 
 
关键功能说明
- 
自动化流程:
- 自动获取网站sitemap中的URL
 - 随机选择部分URL提交(避免重复提交)
 - 每日自动执行
 
 - 
安全机制:
- 异常捕获和日志记录
 - HTTP状态码检查
 - CURL超时设置
 
 - 
日志系统:
- 记录每次提交结果
 - 包含成功数量、剩余配额
 - 错误信息详细记录
 
 - 
配额管理:
- 自动处理百度API限制
 - 每次提交适量URL(示例为20条,可调整)
 
 
增强建议
- 
多sitemap支持:
// 可扩展为支持多个sitemap $sitemaps = [ 'https://www.yourdomain.com/sitemap1.xml', 'https://www.yourdomain.com/sitemap2.xml' ]; - 
数据库集成:
- 从数据库直接读取新生成的URL
 - 记录已提交URL避免重复
 
 - 
邮件通知:
// 添加错误通知功能 if (isset($response['error'])) { mail('admin@domain.com', '百度提交失败', $response['error']); } - 
自适应配额:
// 根据剩余配额调整提交数量 $submitCount = min($dailyQuota, count($urls)); - 
验证文件存在:
// 提交前检查URL可访问性 if (!checkUrlExists($url)) { continue; } 
注意:百度API提交有配额限制(新站通常200条/天),超出配额会自动拒绝。建议在网站更新后立即执行,而非每天全部URL重复提交。
完整文档参考:百度搜索资源平台API文档