首页 > 其他分享 >【补充】反爬措施

【补充】反爬措施

时间:2023-08-22 09:34:43浏览次数:23  
标签:措施 加密 请求 补充 反爬 用户 爬虫 Token 签名

【一】后端防爬虫

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

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

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

【三】登录验证

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

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

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

【五】思路:

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

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

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

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

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

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

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

标签:措施,加密,请求,补充,反爬,用户,爬虫,Token,签名
From: https://www.cnblogs.com/dream-ze/p/17647630.html

相关文章

  • 【pandas小技巧】--category类型补充
    category类型在pandas基础系列中有一篇介绍数据类型的文章中已经介绍过。category类型并不是python中的类型,是pandas特有的类型。category类型的优势那篇文章已经介绍过,当时只是介绍了如何将某个列的数据转换成category类型,以及转换之后给程序性能上带来的好处。本篇将补充介绍......
  • UniRx操作符补充
    1.NextFrame2.DelayFrame3.FrameInterval4.BatchFrame5.ForEachAsync6.FrameTimeInterval7.SampleFrame8.RepeatUntilDestroy9.ObserveOnMainThread10.DelayFrameSubscript11.ThrottleFirstFrame12.ThrottleFrame13.TimeoutFrame14.TakeUntilDestroy15.TakeUnti......
  • 【补充】为什么Windows不支持epoll
    【补充】为什么Windows不支持epoll【一】为什么Windows不支持epoll:epoll是Linux系统提供的一种IO多路复用机制,而Windows系统并没有提供与之等价的底层机制。Windows使用一种名为I/O完成端口(I/OCompletionPort)的技术来实现高效的异步IO处理。虽然epoll和......
  • 【补充】文件存储方案
    【补充】视频托管在处理静态文件(如视频、图片、压缩文件等)时通常的做法是将这些文件从项目的媒体文件夹(mediafolder)中分离出来以避免项目变得庞大且难以管理。取而代之的是使用第三方的文件托管平台来存储这些文件。以下是一些常见的第三方文件存储平台选项:七牛云:......
  • 【补充】Minio存储桶封包指南
    【一】Docker部署Minio容器【1】Minio容器介绍Minio是一个开源的对象存储服务器,使用ApacheLicensev2.0开源协议。它提供了一个存储桶(bucket)的概念,类似于文件系统中的目录,用于存储对象文件。Minio与亚马逊S3云存储服务兼容,使得它可以轻松地与现有的S3应用程序集成。......
  • 【补充】Python中实现单例模式的六种常见方法
    【补充】Python中实现单例模式的六种常见方法【1】类属性:classSingleton:instance=None@classmethoddefgetInstance(cls):ifcls.instanceisNone:cls.instance=Singleton()returncls.instance使用类属性保存实......
  • 【补充】Gitee的介绍与使用
    【参考博客地址】Git使用教程总和-Chimengmeng-博客园(cnblogs.com)本地项目推送至Gitee-Chimengmeng-博客园(cnblogs.com)【一】Gitee的介绍Gitee是一个基于Git版本控制系统的代码托管平台,提供了代码仓库、协同开发、代码管理等功能,适用于个人开发者和团队进行......
  • 【补充】字符与字节的区别
    在计算机编程中,字符(Character)和字节(Byte)是两个有关数据表示和处理的重要概念。【一】字符(Character):字符代表着某种可视或可打印的符号,例如字母、数字、标点符号、特殊符号等。在计算机内部,字符使用字符编码来表示,最常见的字符编码是ASCII(AmericanStandardCodeforIn......
  • 【补充】pip换源
    【pip介绍】pip是Python的包管理器,用于下载和安装第三方库。由于pypi(PythonPackageIndex)是全球范围内的镜像站点,所以中国用户从国外的pypi下载包时速度可能会较慢。因此,为了提高下载速度,我们可以将pip源切换到国内的镜像站点。【一】为什么要换源1.pipinstall下载比较......
  • 【补充】软件开发模式对比(瀑布、迭代、螺旋、敏捷)
    【补充】软件开发模式对比(瀑布、迭代、螺旋、敏捷)【1】瀑布模式(WaterfallModel):介绍:瀑布模式是一种线性的开发模式,各个阶段按顺序依次执行,每个阶段严格依赖前一阶段的输出。开发过程划分为需求分析、系统设计、编码、测试和运维等阶段。每个阶段的结果都在下一个阶段开始......