0

根据这个 “伪装是指向人类用户和搜索引擎呈现不同内容或 URL 的做法” 相同的链接给出了示例:

Serving a page of HTML text to search engines, while showing a page of images or Flash to users

问题:如果我的理解正确的话,在网络服务器上必须有一种识别实体的机制,无论是搜索引擎还是浏览器(用户)。我们把这种机制称为什么?或者它只是一个重定向的 php 或 JavaScript 代码?网络服务器如何真正知道实体“X”搜索引擎和实体“Y”是网络浏览器?

4

1 回答 1

1

用户代理是识别客户端的好方法。

这是根据来自浏览器的请求传递给服务器的用户代理字符串:

“Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,像 Gecko)Chrome/57.0.2987.133 Safari/537.36”

来自谷歌:

Mozilla/5.0(兼容;Googlebot/2.​​1;+ http://www.google.com/bot.html

来自必应:

Mozilla/5.0(兼容;bingbot/2.​​0;+ http://www.bing.com/bingbot.htm

要将它们与 PHP 一起使用,您可以执行以下操作:

if (strpos($_SERVER['HTTP_USER_AGENT'],'bot') !== false) {
    // This is probably a bot
}

如果您想更精确一点,您可能还想检查链接,如下所示:

$userAgent = $_SERVER['HTTP_USER_AGENT'];
if (strpos($userAgent,'bot') !== false && strpos($userAgent,'http') !== false) {
    // It is probably a bot
}

这个问题和答案展示了如何使用 Apache 基于用户代理交付不同的内容:Rewrite rule for user agent with mod_rewrite

于 2017-04-24T01:33:47.900 回答