前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >apache访问量控制查询并禁止

apache访问量控制查询并禁止

原创
作者头像
用户1168904
修改2021-05-25 14:25:07
修改2021-05-25 14:25:07
6540
举报
文章被收录于专栏:运维相关文档运维相关文档

Apache中的异常访问,通常指的是频繁、大量访问的用户,通过apache的log,结合linux下的几个命令,可以分析这些用户,并通过apache的配置文件来禁止他们访问。

首先,更改apache的log方式,不记录一些图像、css等文件,这样在log中每一行基本上都能对应一次访问,如果不去除图像等文件的记录,正常用户访问一个页面,同时也会下载页面上的图像、css等文件,会产生多条log记录,影响计数的结果。在apache的conf文件中增加如下配置:

SetEnvIfNoCase Request_URI \.css$ useless-file

SetEnvIfNoCase Request_URI \.gif$ useless-file

SetEnvIfNoCase Request_URI \.ico$ useless-file

SetEnvIfNoCase Request_URI \.jpg$ useless-file

SetEnvIfNoCase Request_URI \.js$ useless-file

CustomLog logs/fwolf.com/access.log combined env=!useless-file

接下来,经过一段时间的运行,我们就可以分析log文件中访问量最大的用户了,只需要一条命令

cat access.log |awk '{print $1}'| sort | uniq -c |sort -n

第一列就是访问次数,第二列是ip地址,再回去对照log文件中的详细内容,如果发现哪个访问量大户是某某机器人的话,就可以禁止掉了,还是修改apache的conf文件

<Directory />

Order Deny,Allow

Deny from 219.143.69.2

Deny from 218.12.26.233

Deny from 61.135.162.51

Allow from all

</Directory>

如此反复监测、设置,直到没有人捣乱为止。

同理,如果想查看反复刷新查看某一页面的用户,可以用如下命令:

grep "GET /url/to/some/file" access.log |awk '{print $1}' |sort |uniq -c |sort -n

统计出访问某网页的次数

cat admin99.net.20080725|awk '{print $11}'|sort|uniq -c|sort -n|tac|more

统计访问量最大的用户对我们网站的具体的数据访问情况:

# grep access.log -e 访问高IP > filename

# cat filename |awk '{print $8}'| sort | uniq -c |sort –n

(print $8中的数字根据httpd.conf中的logformat的格式来定)

但很多大网络的爬虫多是来自同一个 C 里面多台机器的,因此对 IP 处理的时候还需要去掉最后一组 8bit

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档