参考资料

  1. 检测DDoS攻击?详细说明
  2. 如何设置HTTP响应头进行防爬虫?
  3. Clear-Site-Data如何中断爬虫会话?
  4. 如何设置动态Token头进行防爬虫?
  5. 拦截搜索引擎爬虫
  6. 列举的这些HTTP响应头中
  7. 哪些HTTP响应头可以用于防爬虫?
  8. 列举的这些HTTP响应头中,哪些最有效?

拦截搜索引擎爬虫

拦截搜索引擎爬虫操作示例

通过robots.txt文件

User-agent: *
Disallow: /private/
Disallow: /temp/
Disallow: /admin/

User-agent: Googlebot
Disallow: /search-results/

通过.htaccess文件(Apache)

# 禁止所有爬虫
SetEnvIfNoCase User-Agent .* bad_bot
Deny from env=bad_bot

# 禁止特定爬虫
SetEnvIfNoCase User-Agent "Googlebot" bad_bot
SetEnvIfNoCase User-Agent "Bingbot" bad_bot
Deny from env=bad_bot

通过Nginx配置

location / {
    if ($http_user_agent ~* (Googlebot|Bingbot|YandexBot)) {
        return 403;
    }
}

通过PHP代码拦截

<?php
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$bots = array('Googlebot', 'Bingbot', 'YandexBot', 'Slurp', 'DuckDuckBot');

foreach($bots as $bot) {
    if(stripos($user_agent, $bot) !== false) {
        header('HTTP/1.0 403 Forbidden');
        exit;
    }
}
?>

通过meta标签(页面级)

<meta name="robots" content="noindex, nofollow">

注意事项

  1. robots.txt只是建议性拦截,不能真正阻止爬虫访问

  2. 服务器端拦截更可靠但可能影响SEO

  3. 拦截前应考虑对网站流量的潜在影响