nginx反爬虫设置
网站反爬虫的原因
- 不遵守规范的爬虫会影响网站的正常使用
- 网站上的数据是公司的重要资产
- 爬虫对网站的爬取会造成网站统计数据的污染
常见反爬虫手段
1. 根据 IP 访问频率封禁 IP
2. 设置账号登陆时长,账号访问过多封禁
设置账号的登录限制,只有登录才能展现内容
设置账号登录的时长,时间一到则自动退出
3. 弹出数字验证码和图片确认验证码
爬虫访问次数过多,弹出验证码要求输入
4. 对 API 接口的限制
每天限制一个登录账户后端 api 接口的调用次数
对后台 api 返回信息进行加密处理
nginx反爬虫设置
因为user-agent带有Bytespider爬虫标记,这可以通过Nginx规则来限定流氓爬虫的访问,直接返回403错误。
修改对应站点配置文件(注意是在server里面)
server { listen 80 default_server; listen [::]:80 default_server; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } #forbidden Scrapy if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; } #forbidden UA if ($http_user_agent ~ "Bytespider|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|python-requests|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) { return 403; } #forbidden not GET|HEAD|POST method access if ($request_method !~ ^(GET|HEAD|POST)$) { return 403; } }
重启Nginx,建议通过nginx -s reload平滑重启的方式。重启之前请先使用nginx -t命令检测配置文件是否正确。
通过curl命令模拟访问,看配置是否生效(返回403 Forbidden,则表示配置OK):
本文参考链接:
https://www.cnblogs.com/itsharehome/p/11114588.html
https://www.cnblogs.com/xiao987334176/p/12559101.html