参考资料

  1. 如何设置防爬虫
  2. 有哪些常见的HTTP响应头误区
  3. Clear-Site-Data如何中断爬虫会话?
  4. 有哪些新的HTTP响应头用于防爬?
  5. 检测DDoS攻击?详细说明
  6. 如何设置HTTP响应头进行防爬虫?
  7. 列举的这些HTTP响应头中,哪些最有效?
  8. 网站防爬虫设置

哪些HTTP响应头可以用于防爬虫?

HTTP响应头用于防爬虫的详细说明及操作示例

1. User-Agent 验证

作用:检查请求头中的 User-Agent 是否合法,拒绝非法爬虫。
示例(Nginx 配置):

if ($http_user_agent ~* (bot|crawler|spider|scraper)) {
    return 403;
}

2. Referer 检查

作用:限制请求来源,防止直接访问或跨站爬取。
示例(Nginx 配置):

if ($http_referer !~* (example\.com|trusted\.site)) {
    return 403;
}

3. X-Requested-With 识别 AJAX 请求

作用:确保请求来自前端 AJAX(如 XMLHttpRequest)。
示例(Nginx 配置):

if ($http_x_requested_with != "XMLHttpRequest") {
    return 403;
}

4. Accept-Language 验证

作用:检查语言设置是否合理,过滤异常爬虫。
示例(Nginx 配置):

if ($http_accept_language !~* "en|zh") {
    return 403;
}

5. Accept-Encoding 检查

作用:验证请求是否支持合理的压缩方式(如 gzip)。
示例(Nginx 配置):

if ($http_accept_encoding !~* "gzip|deflate") {
    return 403;
}

6. Connection 限制长连接

作用:防止爬虫滥用 keep-alive 进行高频请求。
示例(Nginx 配置):

add_header Connection "close";

7. Cache-Control 控制缓存

作用:防止爬虫缓存敏感数据。
示例(HTTP 响应头):

Cache-Control: no-store, no-cache, must-revalidate

8. Content-Type 验证

作用:确保返回的数据类型正确。
示例(HTTP 响应头):

Content-Type: application/json; charset=utf-8

9. Authorization 认证

作用:要求 API 请求携带认证信息。
示例(HTTP 响应头):

WWW-Authenticate: Basic realm="Restricted"

10. Cookie 会话验证

作用:要求合法 Cookie 才能访问。
示例(Nginx 配置):

if ($http_cookie !~* "session_id=[a-zA-Z0-9]+") {
    return 403;
}

11. If-Modified-Since 限制条件请求

作用:防止爬虫滥用缓存机制。
示例(Nginx 配置):

if ($http_if_modified_since) {
    return 412; # Precondition Failed
}

12. If-None-Match 验证 ETag

作用:防止爬虫绕过缓存检测。
示例(HTTP 响应头):

ETag: "abc123"

13. X-CSRF-Token 防跨站请求伪造

作用:要求 POST 请求携带 CSRF Token。
示例(HTTP 响应头):

Set-Cookie: csrf_token=abc123; HttpOnly; Secure

14. X-Forwarded-For 识别代理/VPN

作用:限制代理 IP 访问。
示例(Nginx 配置):

if ($http_x_forwarded_for) {
    return 403;
}

15. Server 隐藏服务器信息

作用:减少攻击面。
示例(HTTP 响应头):

Server: Unknown

16. X-Frame-Options 防点击劫持

作用:防止页面被嵌入 iframe。
示例(HTTP 响应头):

X-Frame-Options: DENY

17. X-XSS-Protection 防 XSS 攻击

作用:启用浏览器 XSS 防护。
**