前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我和爬虫躲猫猫,反爬虫之日志分析

我和爬虫躲猫猫,反爬虫之日志分析

作者头像
业余草
发布2019-10-25 09:27:39
9370
发布2019-10-25 09:27:39
举报
文章被收录于专栏:业余草业余草

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/xmt1139057136/article/details/93148495

昨天的那篇文章中,我看到不少人在留言。其中有不少好问题,比如:爬虫不遵守 Robots.txt 规范怎么办?怎么知道网站中有爬虫再抓取网页呢?nginx,apache 的日志怎么分析呢?今天,希望通过我的这篇文章能够让大家学习到如何分析爬虫的蛛丝马迹!

640?wx_fmt=png
640?wx_fmt=png

确实,有很多爬虫是不遵守 Robots.txt 规范的。但是你也不要怕,因为服务器中通常对每一个请求都记录的有日志信息。我们可以通过分析日志信息来看看到底哪些是恶意的爬取我的网页。比如,nginx 的日志信息,通常如下所示:

640?wx_fmt=png
640?wx_fmt=png

需要注意的是,你的 Nginx 的日志可能和我的不一样。具体日志中可以写入哪些信息,这个是可以配置的,这里我就不在扩展了!

上面日志的大致内容从左到右记录的是,ip 信息,时间,请求方法,请求资源,http 版本,响应状态码,字节长度,user-agent 这些信息。

可以看到,这很明显就是一个爬虫。BLEXBot 这个爬虫其实,啥用都没有。所以,我们可以通过 Robots.txt 把它禁掉。

但是,了解 HTTP 协议的网友都知道,user-agent 并不是可靠的,如果 user-agent 进行了伪造,该怎么办呢?

你虽然伪造了 user-agent,但你的 ip 可能是没有变的。恶意爬虫肯定会频繁的爬你的网页,它的 ip 可能就会频繁的出现在日志中。所以,我们可以通过下面的命令来统计哪些 ip 出现的次数最高。

640?wx_fmt=png
640?wx_fmt=png

执行这个命令之后,会把排行榜前 10 的 ip 统计出来。

640?wx_fmt=png
640?wx_fmt=png

针对上面命令中的参数,我解释一下!

  • cat access.log 显示所有文件的内容
  • cut -d ' ' -f 1 表示按照空格分割每一行字符串,只取第一列结果返回;另外一个替代的命令是awk '{print $1}'
  • uniq -c 统计每个内容出现的频率
  • sort -n -r -k 1 排序,-n表示按照数字比较,-r表示逆序,从大到小,-k 1表示按照第一列进行比较
  • head -n 10 取结果的前 10 行

当然,如果你嫌这个命令太复杂,可以使用 goaccess -f access.log 来实现。关于 goaccess 我前面讲过的,这里不展开。

有时候,我们查看整天的 ip 次数,也看不出来有什么异常。所以,我们还可以分时段来统计。

640?wx_fmt=png
640?wx_fmt=png

查看 2019 某一时间段的IP访问量(4-5点)。

640?wx_fmt=png
640?wx_fmt=png

查看访问最频繁的前 100 个 IP。

640?wx_fmt=png
640?wx_fmt=png

上面这些命令,如果你记不住,也没关系,建议收藏起来。以后遇到的时候,拿出来方便使用!

当找出异常 ip 之后,下一步,我们就可以通过防火墙把这些 ip 给封了。当然可能会存在误判,或者是封住了正常用户的 ip,所以,我们可以通过 user-agent、IP,浏览器执行环境,网页埋点,token,404 次数等各种有用信息找出爬出的指纹,给它封掉。

或者是给爬虫返回错误的,假的信息,误导它们。比如,通过我们前面的 OpenResty 就可以实现,对爬虫进行误导!

目前,国内反爬虫做的最好的当数淘宝了。如果你们像学爬虫,那天能爬下来一些淘宝的数据,你就登峰造极了!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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