Nginx反爬虫: 禁止某些User Agent抓取网站

Nginx反爬虫: 禁止某些User Agent抓取网站

网站反爬虫的原因

  • 不遵守规范的爬虫会影响网站的正常使用
  • 网站上的数据是公司的重要资产
  • 爬虫对网站的爬取会造成网站统计数据的污染

常见反爬虫手段

  1. 根据 IP 访问频率封禁 IP
  2. 设置账号登陆时长,账号访问过多封禁
    • 设置账号的登录限制,只有登录才能展现内容
    • 设置账号登录的时长,时间一到则自动退出
  3. 弹出数字验证码和图片确认验证码
    • 爬虫访问次数过多,弹出验证码要求输入
  4. 对 API 接口的限制
    • 每天限制一个登录账户后端 api 接口的调用次数
    • 对后台 api 返回信息进行加密处理

robots.txt 设置

baidu robots.txt
robots.txt是网站与搜索引擎之间不成文的协议,虽然没有明文去规定,但双方都会遵守这个协议。通过robots.txt文件我们可以限制搜索引擎蜘蛛的抓取轨迹
Robots协议用来告知搜索引擎哪些页面能被抓取,哪些页面不能被抓取;可以屏蔽一些网站中比较大的文件,如:图片,音乐,视频等,节省服务器带宽;可以屏蔽站点的一些死链接
方便搜索引擎抓取网站内容;设置网站地图连接,方便引导蜘蛛爬取页面。

文件写法

  • User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符
  • Disallow: /admin/ 这里定义是禁止爬寻admin目录下面的目录
  • Disallow: /require/ 这里定义是禁止爬寻require目录下面的目录
  • Disallow: /ABC/ 这里定义是禁止爬寻ABC目录下面的目录
  • Disallow: /cgi-bin/*.htm 禁止访问/cgi-bin/目录下的所有以".htm"为后缀的URL(包含子目录)。
  • Disallow: /*?* 禁止访问网站中所有包含问号 (?) 的网址
  • Disallow: /.jpg$ 禁止抓取网页所有的.jpg格式的图片
  • Disallow:/ab/adc.html 禁止爬取ab文件夹下面的adc.html文件。
  • Allow: /cgi-bin/ 这里定义是允许爬寻cgi-bin目录下面的目录
  • Allow: /tmp 这里定义是允许爬寻tmp的整个目录
  • Allow: .htm$ 仅允许访问以".htm"为后缀的URL。
  • Allow: .gif$ 允许抓取网页和gif格式图片
  • Sitemap: 网站地图 告诉爬虫这个页面是网站地图

假设我们不想网站被搜索引擎收录,我们可以将所有搜索引擎进行屏蔽。可以这样写:

User-agent:*
Disallow:/

如果我们不想某个搜索引擎蜘蛛访问,我们可以这样写,如不允许百度蜘蛛访问:

User-agent:baiduspider
Disallow:/

不允许访问图片

User-agent:*
Disallow:*.jpg$

不允许访问123以后的任何东西

User-agent:*
Disallow:/123/
posted @ 2023-05-16 11:11  zakun  阅读(209)  评论(0编辑  收藏  举报
返回顶部