反爬措施
三个策略方向
- 判明用户身份
- User-Agent
- Cookies
- Refer
- 验证码(常用:打码平台)
- 分析用户行为
- 并发识别
- 在线活动时间
- 页面添加一些正常浏览器浏览访问不到资源
- 动态加载数据
- ajax技术
反反爬与下载器中间件
常见反反爬措施
- 模拟用户头
- 设置位置
- settings文件
- 创建请求时
- 下载器中间件
- 设置位置
- 请求延迟
- settings文件中设置 DOWNLOAD_DELAY = n
- 一般测试目标站点阈值后设置
- Cookies检测
- settings文件中 COOKIES_ENABLED = False
- Ip代理池
- 适用范围:不需登录或部分需要登录站点
- 代理来源:
- 国内:付费/采集免费代理
- 自建
- 云主机支持多ip
- ADSL拨号服务器
- Crawlera:scrapy自有(速度慢,不建议使用)
- 使用代理:在下载器中间件中使用代理 - 动态数据加载
- 在中间件中使用 selenium
- 注:使用selenium后高性能消失;有些站点能识别 phantomjs浏览器,需使用带界面浏览器
下载器中间件
- 功能:全局修改Scrapy request和Response
- 使用:
- 编写处理方法:
- 处理请求:process_request
- 功能:加用户头、加代理、调用 selenium获取动态加载数据
- 处理响应:process_response(self,request,response,spider)
- 处理请求:process_request
- 编写处理方法:
- 开启中间件
- settings文件中配置中间件参数
常用settings文件设置
log信息
- LOG_ENABLE:是否开启log
- LOG_ENCODING:编码格式
- LOG_FILE:log文件路径
- LOG_LEVEL:
- CRITICAL - 严重错误(critical)
- ERROR - 一般错误(regular errors)
- WARNING - 警告信息(warning messages)
- INFO - 一般信息(informational messages)
- DEBUG - 调试信息(debugging messages)
其他:
- CONCURRENT_REQUESTS:下载器并发数量设置,默认16
- DEPTH_LIMIT:爬取深度
- DOWNLOAD_TIMEOUT:下载超时
- CONCURRENT_ITEMS :item管道同时处理item数量
- CONCURRENT_REQUESTS_PER_DOMAIN:域名的并发请求
- CONCURRENT_REQUESTS_PER_IP:ip的并发请求数量