【补充】反爬措施

发布时间 2023-08-22 09:24:01作者: Chimengmeng

【一】后端防爬虫

后端防爬虫是指通过一系列措施和技术手段来保护网站或应用程序不受到未经授权的自动化访问(爬取)的影响。

【二】频率限制(IP、用户)

  • 使用限流算法,例如令牌桶算法或漏桶算法,在单位时间内限制同一IP地址或用户的请求次数。
  • 为每个请求标识唯一的身份信息,如IP地址或用户ID,通过缓存或数据库记录请求频率,并针对超出限定次数的请求采取相应的应对策略。

【三】登录验证

  • 要求用户在使用敏感数据或功能之前进行登录,以验证其身份。未登录用户只能访问部分公开信息,从而减少对敏感内容的爬取。
  • 引入验证码机制,确保用户行为真实,有效地过滤掉自动化的爬虫访问。

【四】使用Cookie和Token模拟发送请求

  • 爬虫可以通过复制登录用户的Cookie或Token来模拟用户行为发送请求,因此需要采取以下措施增加验证难度。
    • 在请求头中携带发送请求时间戳:后端中间件中获取请求头中的时间戳,并与当前时间进行比较,如果时间差过大,则可能是伪造的请求,返回错误响应。
    • 在请求头中携带Sign签名:使用自定义规则生成签名,如项目名+时间戳+项目名的MD5摘要。后端根据相同规则生成签名,并与传入的签名进行比较,如果一致则通过验证。
    • 对请求体进行加密:部分情况下只需要加密请求的敏感部分,有些情况下需要对整个请求体进行加密。例如,移动端应用可以对整个请求体进行加密,服务端拦截器再使用相同秘钥进行解密。

【五】思路:

  • 假设有一个电商网站,在用户登录之后,希望防止未授权的爬虫获取用户个人信息。

    • 以下是具体的实现步骤:

    • 用户登录后,服务器返回一个包含Token的响应。

    • 用户在后续的请求中,将Token放在请求头中发送给服务器。

    • 后端通过验证Token的合法性来判断请求是否合法。可以通过以下措施进一步保护:

      • 在Token中记录请求时间戳,并在后端中间件中验证请求头中的时间戳,若时间间隔过长,则拒绝请求。
      • 根据项目名、时间戳等信息生成签名,并与传入的签名进行比较,一致则通过验证。
      • 对请求体或敏感数据进行加密,并使用相同秘钥进行解密,确保数据的安全性。
  • 通过以上措施,即使爬虫拿到了Token,也难以伪造合法请求

  • 因为爬虫无法生成有效的时间戳和签名,并且无法解密加密的请求体或数据。