反爬虫策略总结

今日终于有点时间了,总结一下网络爬虫领域比较常见的反爬虫策略,希望在我们抓取数据过程中遇到问题时,提供解决方法。话不多说,开讲:

1、最为经典的反爬虫策略当属“验证码”了。因为验证码是图片,用户登录时只需输入一次便可登录成功,而我们程序抓取数据过程中,需要不断的登录,比如我们需要抓取1000个用户的个人信息,则需要填1000次验证码,而手动输入验证码是不现实的,所以验证码的出现曾经难倒了很多网络爬虫工程师。

     解决方法:

          1)分析网站验证码机制,从网站后台或者前端获取验证码(文本形式),该方法只适用于少量网站,因为一般验证码我们很难拿到。

          2)利用图像识别技术,识别验证码文本(例如最近比较火的深度学习Tensorflow等)。

          3)往往一些网站不只有pc端,还有手机端网站,很有可能手机端是不包含验证码的。所以不妨试试手机端网站,也许会有意外收获。

2、 另外一种比较恶心的反爬虫策略当属封ip和封账号了。本人初期曾经用一台机器抓取新浪微博,导致短时间内账号被封,IP被封,所以遇到类似问题一定要多加小心。

       解决方法:

          1)最简单的解决办法:限制程序抓取频率,每隔几秒登录一次(如果对抓取数量没有要求,则可以采用这种方法,如果想抓取大量数据,还不得抓取到猴年马月啊)。

          2)既然封账号封IP,那我就用多个账号、多台机器抓取呗,既解决了反爬虫问题,也相当于做了分流处理,降低单台机器带宽压力。

          3)事实证明,有些网站即使我们采用了1)2)方法,还是会被封,这种情况下我们只能去抓取IP代理了,可以写一个专门的爬虫程序用来抓取代理,用这些代理去抓取我们想要的数据。到此为止,基本上封账号、封IP的问题就可以解决了。


3、还有一种比较普通的反爬虫策略:通过cookie限制抓取信息,比如我们模拟登陆之后,想拿到登陆之后某页面信息,千万不要以为模拟登陆之后就所有页面都可以抓了,有时候还需要请求一些中间页面拿到特定cookie,然后才可以抓到我们需要的页面。

    解决方法:

        1)通过浏览器的F12查看器,观察具体整个过程都请求了哪些URL(主要包括HTML、JS、XHR),挨个试吧,试到成功为止。

4、另外一种比较常见的反爬虫模式当属采用JS渲染页面了。什么意思呢,就是返回的页面并不是直接请求得到,而是有一部分由JS操作DOM得到,所以那部分数据我们也拿不到咯。

    解决方法:

         1)一般JS或者XHR都是请求某个链接得到数据,所以需要我们去对应JS、XHR代码里面分析具体请求了哪个链接,然后采用同样的方式,用程序模拟请求。

        2)有一些开源工具包是可以执行js的,例如HtmlUnit,可以试试哦(不过执行起来比较慢,这是缺点)

5、还有一种反爬虫,实在登录部分做了手脚,对用户名或者密码进行加密处理。而我们模拟登陆的时候如果用原始用户名密码的话,肯定登录失败的。

      解决方法:

         1)一般加密都在某个JS里面,所以只能分析JS,在我们的程序里面进行加密了。

         2)用HtmlUnit等开源工具,直接执行JS,直接就可以登录啦。

6、最近刚发现的一种反爬虫技术:绑定IP。啥意思呢,意思就是整套请求流程必须以一个IP去访问,如果换IP了,对不起,登录失败。

       解决办法:

         1)没啥解决办法,只能用一个IP登录。。

7、最恶心最恶心的反爬虫,把页面全部转换成图片,你抓取到的内容全部隐藏在图片里。想提取内容,休想。

         解决办法:

        1)唯一解决的办法:图像识别吧,但是感觉代价很大。。。

先写到这里吧,持续更新ing。
————————————————
版权声明:本文为CSDN博主「LovelyBear2019」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liuzhixiong_521/article/details/73927750

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Cloud Gateway 是一个基于 Spring Cloud 的项目,用于构建 API 网关。它提供了一系列的过滤器和插件,可以用于实现爬虫功能。下面是一种可能的实现方式: 1. 配置过滤器:在 Spring Cloud Gateway 的配置文件中,可以使用 GatewayFilter 的方式定义一系列的过滤器。为了实现爬虫功能,可以使用以下几个过滤器: - IP 黑名单过滤器:根据 IP 地址来判断是否是爬虫。可以配置一个黑名单,将被禁止访问的 IP 地址添加到黑名单中,从而拦截爬虫请求。 - User-Agent 过滤器:根据请求头中的 User-Agent 字段来鉴别是否是合法的浏览器请求。对于非合法的 User-Agent,可以进行拦截或重定向处理。 - 请求频率限制过滤器:限制同一 IP 地址在一定时间范围内的访问频率,从而防止爬虫过于频繁地访问。可以根据需要设置合适的时间窗口和访问次数限制。 2. 使用插件:Spring Cloud Gateway 还提供了一些插件,可以用于实现更复杂的爬虫策略。其中一个常用的插件是 WebFluxSecurity,可以基于角色和权限来对请求进行鉴权,防止未经授权的爬虫访问敏感数据。 3. 自定义过滤器:如果以上的过滤器和插件无法满足需求,还可以自定义过滤器来实现更加细粒度的爬虫功能。可以通过编写自定义的 GatewayFilter 和 GlobalFilter 来实现各种特定需求的过滤逻辑。 总结起来,Spring Cloud Gateway 提供了一系列的过滤器、插件和自定义机制,可以用于实现爬虫功能。通过配置合适的过滤器、使用插件和自定义过滤器,可以对请求进行 IP 黑名单、 User-Agent 鉴别、请求频率限制等操作,保护 API 不受爬虫的侵扰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勿在浮沙筑高台

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值