本文目录导读:

基础防护(入口拦截)
-
User-Agent 验证
检查请求头的User-Agent字段,拒绝不常见或明显爬虫的UA(如python-requests、Scrapy)。
注意:恶意爬虫可伪造UA,仅作辅助手段。 -
IP 访问频率限制
- 统计单个IP的请求频率(如每分钟100次),超过则临时封禁(返回403或验证码)。
- 使用 Redis +令牌桶或滑动窗口算法实现。
-
验证码
- 对高频访问、敏感操作(登录、注册)提示验证码(图形/滑块/点选)。
- 推荐集成
Google reCAPTCHA或极验。
行为特征检测
-
请求间隔与模式
- 检测请求时间是否均匀(如每秒n次),正常用户存在随机间隔。
- 监控会话(Session)内访问页面路径是否符合逻辑(如先首页→详情页,而非直接大量详情页)。
-
Cookie 与 JS 验证
- 首次请求时设置临时Cookie,要求客户端执行JS生成校验参数(如
TikTok的_signature)。 - 使用
JS Challenge(如 Cloudflare 的5秒盾),需浏览器执行JS后才能获取真实页面。
- 首次请求时设置临时Cookie,要求客户端执行JS生成校验参数(如
-
表单隐藏字段
表单添加非显示字段(如username),通过CSS/JS隐藏,正常用户不会提交,爬虫可能自动填充。
进阶对抗技术
-
动态页面加载
- 核心数据通过异步接口(AJAX/WebSocket)动态获取,并绑定时间戳或一次性Token。
- 使用
WebDriver检测:检查navigator.webdriver等属性。
-
字体/图片混淆
- 敏感文字(如价格)替换为自定义字体或图片,阻止OCR简单的识别。
- 电话号码、邮箱等用Base64编码后JS解码显示。
-
请求签名校验
对请求参数(URL、时间戳、用户标识)进行HMAC签名,服务端验证有效性(类似淘宝、抖音的_s参数)。 -
蜜罐陷阱
在CSS中隐藏对爬虫可见但用户不可见的链接(如<a href="/honeypot" style="display:none">),访问即封IP。
法律与伦理规范
- 遵守
robots.txt:禁止爬虫访问非公开目录。 - 标识反爬规则:在页面注明禁止非授权爬取,或要求申请API Key。
- 异常流量监控:对明显爬虫(如大量无效UA、IP来自数据中心)返回假数据而非封禁,消耗其解析资源。
工具与平台
- Cloudflare:提供
Bot Fight Mode、WAF、JS Challenge。 - 阿里云/腾讯云WAF:支持自定义频率限制、IP黑名单。
- Nginx + Lua:通过
access_by_lua实现动态封IP。
注意事项
- 误伤正常用户:对搜索引擎(Googlebot、Bingbot)需放宽限制,通过DNS反向解析验证其身份。
- 性能影响:频繁的JS验证或动态加载会增加服务器负载,需做缓存。
- 法律风险:过度反爬可能影响网站可访问性,需平衡安全与用户体验。
示例代码(Python Flask + Redis频率限制)
from flask import Flask, request, jsonify
import redis
import time
app = Flask(__name__)
r = redis.Redis(host='localhost', port=6379, db=0)
@app.before_request
def limit_requests():
ip = request.remote_addr
key = f"rate_limit:{ip}"
count = r.get(key)
if count and int(count) > 100:
return jsonify({"error": "Too many requests"}), 429
pipe = r.pipeline()
pipe.incr(key)
pipe.expire(key, 60)
pipe.execute()
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播