我猜是一个假 Googlebot 访问了我的网站。这是条目日志:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
66.249.73.72
我这么认为是因为它爬取了一些不存在的地址!事实上,它们根本就是我创造的
假机器人有一些结构,它在我的第一个网址中添加了一个香料词 例如 此页面已存在
https://stackoverflow.com/user
但是机器人爬行了:
https://stackoverflow.com/some-word-user
https://stackoverflow.com/some-word-jobs
这是我的 robots.txt。
User-agent: *
Disallow: /search?q=*
Disallow: *?replytocom
Disallow: /*add-to-cart=*
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: -----
根据我的经验,Googlebot 搜索始终来自 Googlebot IP 地址,如crawl-xx-xxx-xxx-xxx.googlebot.com 因此,一种可能的方法是检查代理是否包含 Googlebot/2.1 并且遥控器是否包含 googlebot.com,那么它是否有效。如果没有那就是假货了
这是代码-
$agent = $_SERVER['HTTP_USER_AGENT'];
$remote = isset($_SERVER['REMOTE_HOST']) ? $_SERVER['REMOTE_HOST'] : gethostbyaddr($_SERVER['REMOTE_ADDR']);
$value = "googlebot";
$pos1 = strpos(strtolower($remote),$value);
$pos2 = strpos(strtolower($agent),$value);
if ($pos1===false && $pos2>0) {
require_once($_SERVER['DOCUMENT_ROOT'].'errorpage.php');
exit();
}
这在 .htaccesss 中可靠地工作:
# Fake Google, Bing, Msn, Slurp
RewriteCond %{HTTP_USER_AGENT} (Googlebot|bingbot|msnbot|Slurp|BingPreview) [NC]
RewriteCond %{REMOTE_HOST} !(google(bot)?\.com|search\.msn\.com|crawl\.yahoo\.net)$ [NC]
RewriteRule .* - [R=403,L]