当前位置: 首页 > news >正文

如何找出爬取网站的来源IP呢?

1.背景

最近网站数据库性能很不稳定,查询性能在某段时间很慢,服务器CPU也很高,平常时间很低,感觉被爬虫恶意搞了,因此我分析了一下最近的nginx访问日志

2.方法

找出访问量最大20个ip

[root@100 nginx]# cat liuhaihua.access.log | awk -F " " '{print $1}' |sort |uniq -c |sort -rn|head -n 20
217636 47.76.99.127
217605 47.76.209.138
39006 66.249.74.72
38747 66.249.71.40
33965 216.244.66.244
29643 66.249.74.73
29207 14.153.238.144
28882 129.211.163.247
28485 14.155.183.120
23862 66.249.79.167
21645 14.153.233.199
19477 66.249.74.74
18979 14.155.230.15
17436 66.249.71.41
14782 66.249.69.35
13284 47.94.150.2
12954 66.249.70.71
12742 14.155.204.218
12728 14.153.241.201

解释:uniq的一个特性,检查重复行的时候,只会检查相邻的行。重复数据,肯定有很多不是相邻在一起的;所以需要先进行排序,然后进行统计,再进行逆向排序。

参数解读:
sort:-r:逆序输出排序结果-n:根据字符串数值比较uniq:从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。-c:在每行前加上表示相应行目出现次数的前缀编号

查询某个IP的详细访问情况,按访问频率排序

[root@100 nginx]# grep '47.76.99.127' liuhaihua.access.log |awk '{print $7}'|sort |uniq -c |sort -rn |head -n 1001641 /archives/497017.html1038 /archives/503168.html238 /156 /js/libs/jquery-confirm.min.js147 /js/libs/jquery.lazyload.min.js142 /js/libs/nprogress.min.js142 /js/libs/jquery.fancybox.min.js141 /js/zhyd.js
.....................

查看这个ip今天出现的次数

grep "47.76.99.127" /var/log/nginx/liuhaihua.access.log | grep "$(date +%d/%b/%Y)" | awk -F'"' '{print $2}' | awk '{print $2}'

这个命令的作用是:

  • grep "47.76.99.127":过滤出包含该IP地址的日志行。
  • grep "$(date +%d/%b/%Y)":进一步过滤出包含今天日期的日志行。
  • wc -l:统计这些行的数量。

查看这个IP今天访问的路径

grep "47.76.99.127" /var/log/nginx/liuhaihua.access.log | grep "$(date +%d/%b/%Y)" | awk -F'"' '{print $2}' | awk '{print $2}'

这个命令的作用是:

  • grep "47.76.99.127":过滤出包含该IP地址的日志行。
  • grep "$(date +%d/%b/%Y)":进一步过滤出包含今天日期的日志行。
  • awk -F'"' '{print $2}':提取出请求行(通常是第二个字段)。
  • awk '{print $2}':从请求行中提取出请求的URL路径(通常是第二个字段)。

图形化nginx访问日志神器

安装

yum install goaccess

命令查看

goaccess liuhaihua.access.log

生成静态文件

goaccess liuhaihua.access.log -o report.html --log-format=COMBINED
http://www.lryc.cn/news/486757.html

相关文章:

  • Java爬虫(Jsoup)详解
  • 力扣周赛:第424场周赛
  • 预处理(1)(手绘)
  • 利用OpenAI进行测试需求分析——从电商网站需求到测试用例的生成
  • 深入探索:Scrapy深度爬取策略与实践
  • 《生成式 AI》课程 第3講:訓練不了人工智慧嗎?你可以訓練你自己
  • 如何编译 Cesium 源码
  • 前端开发设计模式——责任链模式
  • JavaWeb--MySQL
  • Python | Leetcode Python题解之第564题数组嵌套
  • Spring Boot教程之Spring Boot简介
  • Qwen2-VL:发票数据提取、视频聊天和使用 PDF 的多模态 RAG 的实践指南
  • 【安全科普】NUMA防火墙诞生记
  • 机器学习day2-特征工程
  • Python数据分析NumPy和pandas(三十五、时间序列数据基础)
  • Python 小高考篇(6)常见错误及排查
  • k8s上部署redis高可用集群
  • C++的类和对象
  • 自动驾驶系列—深入解析自动驾驶车联网技术及其应用场景
  • 机器学习(1)
  • 深入理解 Redis跳跃表 Skip List 原理|图解查询、插入
  • Halcon HImage 与 Qt QImage 的相互转换(修订版)
  • 【Golang】——Gin 框架中的模板渲染详解
  • CSS:导航栏三角箭头
  • onlyoffice Command service(命令服务)使用示例
  • QSS 设置bug
  • 交换排序——快速排序
  • nodejs入门(1):nodejs的前后端分离
  • 笔记|M芯片MAC (arm64) docker上使用 export / import / commit 构建amd64镜像
  • gorm框架