前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于openresty防护源站

基于openresty防护源站

作者头像
叔牙
发布2024-06-26 11:03:06
650
发布2024-06-26 11:03:06
举报

内容目录

一、背景概述二、防护方式三、基于openresty实现源站防护四、思考与总结

一、背景概述

网站是一个企业或者团队的重要资产,源码也是开发人员和团队辛苦劳作的成果,对于后端服务,用户几乎触摸不到源码,但是对于前端页面,用户访问网站时会有最直接的接触,稍微有技术经验的用户可以通过浏览器的机制来查看页面源码,也有一些黑灰团队专门用爬虫扒别人的网站,然后包装成自己的产品,实现商业效益。

如果你的网站做得好,不管是web站还是h5,一定会有人研究你的网站,爬站点源码,可谓是防不胜防,很多小网站根本没有做任何防护,有些企业会做一些简单不至于苛刻的防护,当然有心之人想扒也能扒下来,主要取决于防护收益与投入开支的平衡。

目前市面上很多网站还是使用传统的nginx来实现,那么本篇文章我们就结合openresty来实现源站防护做一下简单介绍。

二、防护方式

想要防护网站源码,可以使用在用户访问主站域名的时候,获取静态资源之前加一层防护,比如爬虫请求头限制、ip访问区域限制等,当然限制的方式有很多,也可以借助其他工具来实现,这里重点介绍下爬虫和ip限制的方式。

1.防爬虫

本质上爬虫也是一种请求,只不过是由脚本或者机器人自动发起的,那么请求就会带referer,就会带ua,一般爬虫都会带一些特殊的标识,对于referer,我们可以限制我们认可的域名,对于ua,我们可以不定期的更新爬虫ua库即可。

也可以借助其他的一些web防护工具来实现爬虫防护。比如Cloudflare机器人管理、AppTrana以及其他WAF防护能力等。

2.ip限制

可以基于openresty+LuaJIT能力,在用户防护主站的时候,拦截请求,通过Lua脚本进行ip识别和验证,对于合法请求则放过,去加载讲台资源,对于非法ip则直接返回403或者其他受限页面。

三、基于openresty实现源站防护

openresty在nginx的基础上提供了扩展能力以及很多强大的模块,此处基于openresty实现,具体openresty安装方式,不做赘述。

1.爬虫防护

设置Referer验证,只允许来自xxx.com(网站自己域名)和其子域的请求访问图片、CSS和JavaScript以及html文件,其他来源的请求会返回403Forbidden。

设置User-Agent检查,检查User-Agent来过滤掉一些已知的爬虫User-Agent。爬虫的User-Agent容易伪造,需要定期跟新补充已知爬虫User-Agent。

2.ip检查防护

访问主站域名时,通过lua脚本来检查ip是否可以访问和加载资源。

对应的lua脚本如下:

上述脚本做了以下几件事情:

  • 如果ip在redis维护的白名单中,则放过,正确加载静态文件。
  • 否则,如果ip在redis维护的黑名单中,则返回403进制访问
  • 如果ip不在黑白名单中,则使用geoip2检查访问ip所属区域,如果是目标区域则放行,否则禁止访问。

四、思考与总结

以上是基于openresty实现的网站源站防护机制,主要是从爬虫和ip区域限制两个维度实现,当然市面上也有很多其他的防护机制和技术、以及免费和商业化的工具可以使用,如下列举一些比较常用的方式和工具:

  • CAPTCHA验证:通过要求用户进行人机验证,如输入验证码或解决图片中的问题,来识别是否为人类操作而不是自动化爬虫。
  • 用户行为分析:监控网站访问者的行为模式,识别不正常的高频率、高速度或者无规律的请求,以及非人类的操作模式。
  • 动态内容生成:通过动态生成的内容或者验证码来防止简单的爬虫程序识别和获取网站内容。
  • 服务提供商的防护服务:一些云服务提供商或者CDN(内容分发网络)提供防护服务,比如cloudflare的机器人管理。
  • 反爬虫算法和技术:包括但不限于基于机器学习的算法来检测和识别爬虫和非法请求行为,例如使用模式识别技术来识别爬虫的访问模式。

以及其他还有跟多的工具和方式,这些工具和技术通常会结合使用,以提高网站的防护能力,确保合法用户可以正常访问和使用网站,同时保护网站的内容和资源不被滥用和损害。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PersistentCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景概述
  • 二、防护方式
    • 1.防爬虫
      • 2.ip限制
      • 三、基于openresty实现源站防护
        • 1.爬虫防护
          • 2.ip检查防护
          • 四、思考与总结
          相关产品与服务
          云数据库 Redis
          腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档