PageAdmin CMS建站系统防范恶意爬虫的笔记分享

举报
鹅是程序猿 发表于 2026/10/17 21:53:09 2026/10/17
【摘要】 最近有用户反映学校官网越来越慢,打开网站后发现100多kb的图片要几秒才能加载完毕,通过运维工具看到入站请求每秒高达3000多条,数据库的cpu占用了超过80%,由于网站采用PageAdmin CMS制作,咨询官方技术后得出结论就是存在恶意蜘蛛或爬虫,知道原因后开始着手解决,解决步骤如下,顺便做一个笔记。1、查看nginx请求日志查找原因查看日志后发现,每秒有几千条访问记录,这种明显就不是正...

最近有用户反映学校官网越来越慢,打开网站后发现100多kb的图片要几秒才能加载完毕,通过运维工具看到入站请求每秒高达3000多条,数据库的cpu占用了超过80%,由于网站采用PageAdmin CMS制作,咨询官方技术后得出结论就是存在恶意蜘蛛或爬虫,知道原因后开始着手解决,解决步骤如下,顺便做一个笔记。

1、查看nginx请求日志查找原因

查看日志后发现,每秒有几千条访问记录,这种明显就不是正常的浏览新闻,每条的请求记录referer项都是空,从这点可以判断是恶意爬虫频繁爬取站点资源和页面。

2、nginx配置防盗链

网站图片没有做cdn缓存,也没有在后台启用远程oss储存,大量的爬虫爬取图片资源,服务器带宽很容易耗尽,这就是打开网站图像加载缓慢的主因。

在nginx添加以下防盗链配置:

location /upload/ 
     {
       root /srv/wwwroot/ecreator/;  # 项目实际路径
       
       # 防盗链配置 改为你的域名
       # valid_referers none blocked domain.cn *.domain.cn;
       valid_referers  domain.cn *.domian.cn;
       if ($invalid_referer) {
            return 403 ;
        }
     }

location /templates/ 
     {
       root /srv/wwwroot/ecreator/;  # 项目实际路径

       # 防盗链配置,改为你的域名
       # valid_referers none blocked domain.cn *.domain.cn;
        valid_referers  domain.cn *.domian.cn;
        if ($invalid_referer) {
            return 403 ;
        }
     }

3、开启静态功能

网站部署上线后,一直使用的是动态页面,爬虫每次爬取都会连接数据库进行查询,大量访问进来,数据库cpu必然飙升,主要原因如下:

高频并发‌:短时间内发起成千上万次请求,导致数据库连接数激增,线程调度开销变大。

深度遍历‌:爬虫可能遍历所有 ID 或分页参数,导致大量重复或全量数据查询。

复杂查询触发‌:如果爬虫构造了特殊参数,可能触发后端复杂的联表查询或聚合操作。

缓存穿透/失效‌:如果爬虫请求的是未缓存的动态内容,或者故意请求不存在的资源(导致缓存穿透),所有压力都会直接透传到数据库。

解决办法:

强制外网访问静态页面,PageAdmin CMS平台版有很强大的静态配置功能,开启步骤如下:

3.1:进入应用后台>站点设置,如下图:


siteset.png



站点静态功能:选择开启

前端页面访问模式:有三个模式,分别是:动态页面模式、动静态混合访问模式、内部Ip访问动态,外部访问静态文件模式

这里选择第三个,很多用户认为开启静态后运维麻烦,实际上PageAdmin的很多操作如发布内容,更新栏目等默认都会同步刷新关联的静态页面文件,当然修改模版这类操作还是需要手工去生成静态,但是比起收益,增加一点运维时间成本也是必要的。

3.2:第一次开启静态功能,需要全量生成所有页面的html文件,进入Html刷新菜单,如下图:

htmlmenu.png

可直接一键刷新所有栏目、内容页和所有专题页面。

实测:11万多条新闻数据,生成时间大概15分钟左右,如下图:

htmlTime.png

PageAdmin生成静态是采用后台异步多线程的模式,点击生成按钮后就可以离开,不需要在原页面等待,这点比其他cms做得更人性化。

以上就是本次官网防范恶意爬虫的实操记录,希望能帮助大家。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。