2020.6.18 反爬

发布于 15 天前  32 次阅读


1.复习内容

2.灵感代办

3.学习内容

  • python 爬虫知识

    • jsonpath模块(字典的正则)

      • 使用:
        • 三方库,需要安装
        • jsonpath可以解决复杂的字典,嵌套层数较多的书写问题
      • 常用语法:
        • $ 根节点
        • . 直接子节点
          • $.key1.key2.key3.key4
        • .. 任意位置
          • $.key4
      • 返回值(注意)
        • 返回值是一个列表
    • 常见反爬手段和解决思路

      • 服务器反爬原因

        • 爬虫站总PV过高(虚假流量,访问刷新一次页面,就算一个pv)
        • 公司的数据,被爬虫批量抓走,丧失竞争力
        • 爬虫在国内还是擦边球,技术保障比较靠谱
      • 服务器常反什么爬虫

        • 毕业生-简单粗暴,不管服务器
        • 低级创业公司-数据分析,各处爬取数据
        • 失控爬虫 - 爬不到数据,一直访问服务器,造成压力
        • 成型商业对手-有钱有技术,爬虫无法预防
        • 抽风的搜索引擎-搜索引擎会造成服务器压力增大
      • 反爬虫领域的常见概念

        • 爬虫:任何技术手段,批量获取网站信息
        • 反爬:任何技术手段,阻止别人批量获取
        • 误伤:误伤,将普通用户屏蔽了
        • 拦截:成功组织爬虫访问
        • 资源:机器成本与人力成本(反爬是让爬虫工程师加班才是王道,提高对方付出)
      • 反爬的三个方向

        • 基于身份识别反爬
          • headers中的字段反爬
            • User-Agent
            • referer字段
            • cookie反爬
          • 通过请求参数反爬
            • 从html静态文件中获取请求数据
            • 通过发送请求-获取请求数据
            • 通过js生成请求数据
            • 通过验证码来反爬
        • 基于爬虫行为进行反爬
          • 基于请求频率或请求数量
            • 根据ip/账号,单位时间内总请求数据数量(做一定延时模拟人,购买ip、账号)
            • 通过同一账号/请求之间间隔进行反爬
              • 文本内容,需要阅读,随机的读取(控制随机时间)
            • 通过请求ip/账号每天请求次数设置进行反扒
              • 账号/ip 每天被限制次数,使用代理,多账号
          • 根据爬虫行为进行反爬(爬虫步骤)
            • 通过js实现跳转反爬
              • 翻页用js来生成,(计算步骤)分析请求的规律
            • 通过蜜罐(陷阱)或者ip进行反爬
              • js中有一个陷阱,正常浏览看不到,爬虫却访问了(dispaly)
            • 通过假数据反爬
              • 数据提取中增加了难度,需要比对数据
            • 阻塞任务队列
              • 多个无效网址,导致爬虫浪费资源时间
            • 阻塞网络IO
              • 在url中,混入一个大文件url,爬虫请求时会占用网络IO
              • 计时线程
            • 运维平台综合审计
              • 运维平台综合管理,使用复合型反爬虫策略
        • 基于数据加密进行反爬
          • 对响应中含有的数据特殊化处理
            • 自定义字体(自定义编码):用手机访问,或者拷贝字体,做一个翻译
            • css偏移:放一些假的数据,然后让真实数据覆盖在假的数据上
            • js动态:生成一些js动态数据
            • 通过数据图片化反爬(58 手机号变成了图片)
            • 通过编码格式进行反爬(不使用utf-8,解析编程乱码)
      • 图片验证码

        • 原理:
          • 验证码(CAPTCHA)全自动区分计算机和人类的图灵测试
        • 作用:
          • 防止恶意破解密码,刷票,论坛灌水,刷页
        • 图片验证码使用场景
          • 注册,登录,频繁请求
        • 验证码处理方案
          • 手动输入
          • 图像识别引擎OCR,常用在图片中提取数据
          • 打码平台
      • chrome 调试

        • preserve log 可以防止刷新log不存在
        • 寻找post的数据(web端不如移动端好寻找)
          • 1.多次抓包分析固定值
          • 2.静态页面中的值
          • 3.js中查找数据
        • 定位加密js文件
          • 通过chrome-网络-发起程序,查看发起js程序
          • 通过搜索,搜索关键字排查,找到js文件
          • 通过前端,查找登录调用代码(元素绑定的事件来查找)
        • 执行js文件
          • js2py pyv8 execjs
      • python 去重url

        • url = 存放集合里
        • url-hash = md5之后存放集合
        • 布隆过滤器 = 加强md5,更省内存
      • 文本内容去重
        • 编辑距离
        • simhash去重

4.扩展延伸知识

  • js2py使用方法

  • 关联源映射

  • JavaScript 逗号表达式

    • 每个表达式都执行,但是只返回最后一个
  • 服务器异步模块 define

    • 语法:define(id?,dependencies?,factory)
      • id:字符串,模块名称(可选)
      • dependencies:依赖模块,需要相对路径,数组类型 ,可选
      • factory:工厂方法,返回一个模块函数 return {obj1,obj2}

5.知识内容个人梳理

6.今天都复习了之前的什么内容


Ares个人进阶之路