Skip to content

很损的反爬,不相信科学了,赶紧分享给大家,薛定谔的数据

今天给大家分享一个很损的反爬,可以说是损人不利己,杀敌一千,自损八百。为什么这样说呢?下面听我娓娓道来。

前段时间写的一个爬虫脚本,采集了一个列表页面,有几千页数据,当时就是噼里啪啦一顿操作成功拿到了数据,没有任何的问题。过了一个月网站数据更新了,于是我改两个参数再次运行,依旧是非常的丝滑,数据直接全部获取到了。

在平时数据采集完我也会稍微核对下数据,比如说是不是最新的数据,数据总量对不对的上等。毫无疑问,这两次的数据都对得上。所以我也就认为没事了,但是最后呢,发现了数据其实不对,采集到的数据有很多重复值。

重复值?不会吧!我上次运行没问题啊~上次也没重复值吖。但是结果摆在面前,确实是有重复值,因为网站和接口我检查了一遍也没啥肉眼可辨的变化,然后我不信邪,重新采集一遍,反正也只是输入一行命令和等一会儿的事情。

过了一会儿,结果出来了,依旧是有重复值。我纳闷了,这是我的脑子里有浮现了那句老话:我上次运行没问题啊🤔。

没办法,只能去逐步排查问题,然后我记录了每条数据的来源页码。这样我就可以根据一会儿的采集结果来到那个页码查看数据是否存在,结果搜了前四个都不存在,这个时候我也有点动摇了,对于自己的程序产生了怀疑,但是步骤就这么两步,代码找来找去也不应该有错误的地方啊,我继续尝试,直到第五条数据,我在连续两个页码搜到了这两行数据,这个时候答案就显而易见了。然后我赶紧把我的发现告诉小伙伴,然后他看了下只有一页有这行数据,我跟他说:说出来你可能不信,刚才我确实在两页都看到了这行数据。然后我就像个傻子一样第一页第二页一直跳转搜索,试了两次之后,刚才看到的重复的情况发生了

(柯南,真相只有一个)

也就是说这个网站的翻页其实是随机返回数据的,如果是随机返回数据,那么我们是不是就可以一直请求第一页呢?

不过我又观察了下重复数据的页码,发现大多是相邻相近的页码,也就是说是在一定范围内随机的,比如说查询出相邻区间的数据然后随机返回。

然后我又想了下:这个网站这样随机返回数据不会影响用户体验吗?稍加思考后发现确实不会影响,因为正常人谁会去翻看几千页数据啊,每页三四十条数据,人怎么可能记得住。正常用户肯定会去使用查询功能,而不是在这里一千多页慢慢翻看,同理,来一千多页全部看的人肯定就是爬虫啊。

所以这样随机返回数据并不影响正常用户体验,反而能影响爬虫的体验。

还有更狗的,识别到你是爬虫脚本之后,直接返回错误数据,这要是遇到了,那得多头大,只能去手动复制粘贴了,或者是使用一些他检测不出来你是爬虫的手段,不过一般不会返回错误数据,因为依赖对于爬虫的检测。

这个时候又回到视频的开始,为什么我说这个损人不利己呢?因为单是我找到错误,我就已经采集了三遍这个数据了。肯定对服务器不好啊,你的网站一直被人爬开心吗?那么如何应对这种反爬呢?答案只能是多爬几次,直到数据总量对上。哎,最后只能感慨,打工人何必为难打工人呢。

最后我们再来总结下这个反爬的使用场景

  • 没有排序规则的列表页面
  • 用户不依赖列表页面进行信息检索,仅用于展示信息(有的会只显示前几页),因为更多用户靠关键词搜索。
  • 随机返回数据,可以完全随机,也可以查出一个区间再随机。

上面就是本集内容,我们下集再见。

本站收录内容源自互联网,不对其网站内容或交易负责。 | 如有内容侵犯权益,请联系站长删除相关内容!