首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 依 User-Agent 區分爬蟲與真人:SEO 內容差異化輸出的風險與實作

     編輯:PHP 綜合知識

前言:隱形內容與 SEO 的灰色地帶

為了首頁載入速度,許多部落格採用「列表模式 + 點擊展開全文」的設計。但搜尋引擎爬蟲若只抓到標題列表,將無法索引文章核心內容,影響 SEO。開發者常想到的對策:**偵測 User-Agent,若為爬蟲則直接輸出完整內容**。

⚠️ **警告**:此做法屬於 **Cloaking(偽裝/隱形內容)**,違反 Google、百度等搜尋引擎的站長指南,可能導致**降權、移除索引、甚至封禁網站**。本文說明實作原理僅供學術研究,**強烈不建議用於生產環境**。

爬蟲偵測函式

<?php
function is_crawler(): bool {
    $ua = strtolower($_SERVER['HTTP_USER_AGENT'] ?? '');
    $spiders = [
        'googlebot',        // Google
        'baiduspider',      // 百度
        'yahoo! slurp',     // 雅虎
        'yodaobot',         // 有道
        'msnbot',           // Bing
        'bingbot',          // Bing 新版
        'slackbot',         // Slack 預覽
        'twitterbot',       // Twitter 卡片
        'facebookexternalhit', // Facebook 分享
        'linkedinbot',      // LinkedIn
        'telegrambot',      // Telegram
        'whatsapp',         // WhatsApp
        'applebot',         // Apple
        'duckduckbot',      // DuckDuckGo
        'ia_archiver',      // Alexa/Internet Archive
    ];
    foreach ($spiders as $bot) {
        if (strpos($ua, $bot) !== false) return true;
    }
    return false;
}

差異化輸出邏輯

<?php
if (is_crawler()) {
    // 爬蟲:直接輸出完整文章內容(有利 SEO 索引)
    echo $full_article_html;
} else {
    // 真人:列表模式,需點擊載入(優化首屏速度)
    echo $article_list_html;
}

為什麼這很危險?

風險說明
算法自動偵測Googlebot 會模擬真實瀏覽器渲染 JS、比對 DOM、甚至從不同 IP/UA 重複抓取比對差異
人工審核搜尋品質評分員會手動檢查舉報網站
處罰嚴重從關鍵字降權到整站移除索引(De-index),恢復極難
信任崩塌一旦被標記為垃圾/作弊站,其他搜尋引擎也會跟進

合規的最佳替代方案

1. 服務端渲染 (SSR) / 同構應用

首次請求直接輸出完整 HTML(含文章內容),後續互動由 JS 接管。Next.js、Nuxt.js、Laravel + Inertia 皆支援。

2. 動態渲染

針對爬蟲 UA,透過無頭瀏覽器渲染靜態快照(如 Puppeteer、Rendertron),但 Google 官方已**不再推薦**,建議直接 SSR。

3. 結構化資料 + 適度摘要

列表頁輸出 Article Schema.org JSON-LD,包含 headline、description、articleBody(前 200 字)、url 指向完整頁。爬蟲能理解內容結構,真人體驗不受影響。

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "文章標題",
  "description": "文章摘要...",
  "articleBody": "文章前 200 字內容...",
  "url": "https://example.com/post/123",
  "datePublished": "2024-01-15",
  "author": {"@type":"Person","name":"作者"}
}
</script>

4. 真正的分頁/無限捲軸 + SEO 友善 URL

每篇文章擁有獨立 URL(/post/123),列表頁僅顯示摘要連結。爬蟲順著連結抓取全文,真人享受流暢列表。這是**最標準、最安全**的架構。

5. HTTP 快取與 CDN 加速

針對靜態/半靜態頁面設定 Cache-Control: public, max-age=300, stale-while-revalidate=60,配合 Cloudflare/CloudFront,首屏速度極快,無需犧牲 SEO。

歷史案例警示

  • BMW 德國官網 (2006):針對 Googlebot 輸出關鍵字堆砌頁面,被 Google 完全移除索引數月。
  • 多數國內 SEO 作弊站:使用 Cloaking、關鍵字堆砌、隱藏文字,最終被百度 K 站(封禁)。

結語

**User-Agent 判斷輸出不同內容 = Cloaking = 高風險作弊。** 搜尋引擎演算法已極其成熟,任何試圖「欺騙爬蟲」的手段終將被識破。正途唯一:優質內容 + 語意化 HTML + 結構化資料 + 快速載入 + 良好 UX。這才是長久之計。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved