网站首页 > 精选教程 正文
一、前言
一般识别爬虫的方法有两种:
1、通过dnspod的方式
2、通过UserAgent,这种办法最直接,但也很容易伪造。
二、配置方法
2.1、实现在nginx中使用map指令来匹配一个变量:
map $http_user_agent $is_bot { default 0; ~[a-z]bot[^a-z] 1; ~[sS]pider[^a-z] 1; 'Yahoo! Slurp China' 1; 'Mediapartners-Google' 1; 'YisouSpider' 1; }
在这里我们生成了一个名为 $is_bot 的变量,该变量默认值是 0 ,如果匹配到上述 4 种正则表达式的情况后,值就变成1。你可以继续往 map 中添加新的表达式规则。
2.2、在location中使用该变量:
# 注:不要改写http code状态,可能会导致cdn将原304状态码的数据缓存,进而导致打开具体url时为空白页 location / { error_page 418 = @bots; if ($is_bot) { return 418; } proxy_pass http://91donkey_web; include proxy.conf; access_log /export/home/logs/91donkey/access.log main; }
2.3、@bots的定义:
location @bots { proxy_pass http://91donkey_spider_web; include proxy.conf; access_log /export/home/logs/91donkey_spider/access.log main; }
当判断当前请求是爬虫的时候,返回 418 错误码。
通过 error_page 将 418 错误码改为 200 (正常请求响应码),然后进入 @bots 这个 location 进行下一步处理。@bots 中将请求反向代理到你指定的后端应用。
如此便可将正常的用户访问和爬虫访问独立开来,使二者不会互相影响。
作者:龍龍小宝
原文:https://www.cnblogs.com/91donkey/p/11445380.html
猜你喜欢
- 2024-10-20 K8S Configmap和Secret热更新之Reloader
- 2024-10-20 WebSocket与Nginx的小秘密 ng websocket
- 2024-10-20 入门Elasticsearch,我觉着你看这一篇就够了
- 2024-10-20 还不会MapReduce的离线数据分析?阿里大数据负责人教你
- 2024-10-20 如何使用Nginx实现不同的Hearder值代理到不同的后端服务
- 2024-10-20 从netmap到dpdk,从硬件到协议栈,4个维度让网络体系构建起来
- 2024-10-20 MAPREDUCE快速入门 mapreduce讲解
- 2024-10-20 K8s 配置管理必备!ConfigMap vs Secret,哪个更适合你?
- 2024-10-20 Java8 快速实现List转map 、分组、过滤等操作
- 2024-10-20 client-go获取k8s资源信息 k8s获取pod信息
你 发表评论:
欢迎- 05-16原来汇编中的循环是这么玩儿的
- 05-16什么?Java 中的锁还有状态?
- 05-161.4、Java流程控制语句详解
- 05-16Java基础-循环语句
- 05-16Java虚拟机和Dalvik虚拟机有哪些区别和不同?
- 05-16Java、Python、C语言?5大热门编程语言,我该怎么选?
- 05-16java的就业方向有哪些
- 05-16java好学吗?java是不是最难学的语言?
- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)