哪些HTTP响应头可以用于防爬虫?
参考资料
哪些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 防护。
**