0%

爬虫需要学什么,怎么学?

爬虫需要学什么,怎么学?小子不才,今日与诸位妄谈爬虫需要学什么,怎么学? 这一话题,个人拙见将自我的学习路程分为如下几个阶段

  • 第一层:编程语言
  • 第二层:网络知识,各工具熟练使用
  • 第三层:高性能的爬虫
  • 第四层:JS逆向
  • 第五层:小程序逆向
  • 第六层:Android逆向
  • 第七层:分布式爬虫
  • 第八层:爬虫架构
  • 第九层:工具链构建

第一层:编程语言

编程语言自然不必多说,至少得会一门语言。推荐的语言有Java、Python、Go、JS

编程语言可简单细分为如下步骤

  • 语言背景与历史
  • 环境搭建
  • 常量变量
  • 基础数据类型(bytes、String、int、bool)等
  • 运算与运算符(+、-、*、÷、|、&、^、)、位运算
  • 条件分支语句(if、switch等)
  • 循环语句(forloop、while loop)
  • 函数、匿名函数、嵌套函数、闭包
  • 常见算法(递归、分治、回溯)、排序算法、动态规划、贪心算法、遍历算法
  • 错误、异常处理
  • 文件操作
  • 并发编程
  • 网络编程
  • 面向对象
  • runtime
  • gc
  • 数据库与中间件(MySQL、MongoDB、Redis、ES)

广度优先,重复学

第二层:网络知识与各工具使用

  • 网络模型,ISO、TCP/IP
  • 网络协议:HTTP、HTTPS
  • 网络知识:URN、URI、URL
  • 认证:cookie、session、Token、JWT

工具

浏览器:Chrome

抓包工具:Fiddler、Charles、Mitmproxy(中间人抓包原理,网络原理)

Postman

学完这部分,恭喜你。你已经可以独立开发一个简单的爬虫了

爬虫基本开发步骤如下:

网络抓包,确定目标地址(URN)

发送请求,获取响应

解析响应、获取数据

数据存储(将提取的数据存储到txt或JSON、MySQL、MongoDB、Redis、ES)

第三层:高性能的爬虫

在完成了第二层之后,在其到基础上加速爬虫

  • 进程、线程、协程
  • 并发并行
  • 阻塞非阻塞、I/O模型

第四层:JS逆向

——“想爬?偏不给你爬!”

  • 反抓包

    • 证书

    • 双向验证

    • 竟然不用HTTP(S)!RPC来搅局?

反请求

  • 请求头反抓

    • UA
    • Sign、token、sale
    • Header
  • 代码防护

    • 布局混淆
    • 数字混淆
    • 字符串混淆
    • 控制流混淆
    • 预防混淆
  • 验证码

    • 识别点选或输入型

    • 滑轨、滑块型

    • 计算型

    • 空值补齐型

    • 空间推理型

    • 短信或语音验证型

  • 数据防护

    • 动态字体
    • CSS偏移
    • 内容加密映射
    • SVG映射等
    • 内容图片化
  • 反调试

    • 控制台检测
    • 无限debugger来了!
    • 函数居然被重写?
    • 不讲武德,参数生产后删除js!
  • 其他反抓

    • 风控(如IP、用户行为)
    • 浏览器指纹
    • 代码运行环境检测等
    • JS虚拟机、jsvm、jsvmp
    • wasm

金盆洗手?自动化工具来助威! RPC半真半假远程调用

加密算法怎么定位?奇银技巧来助威! Hook、各种搜索断点、debug(XHR、事件)中场休息助一臂之力

插桩妙调,算法自吐

代码怎么扣?环境怎么补?加密算法怎么还原??

AST混淆代码对抗,逐一击破,稳扎稳扎。相信自己会逐渐强大

第五层:小程序逆向

在完成第四层JS逆向的基础上,来看看新宠儿小程序?

小程序包如何来,小程序又是如何验证的?

小程序项目结构又如何?

静态调试,全局游走gank

第六层:Android逆向

新的征程?!

Android正向开发也要学!apk、四大组件、项目布局、配置

反编译神器jadx初尝

又抓不到包了啊!

  • 不走代理端口了啊
  • 证书校验
  • 居然魔改网络协议?

居然还有代码壳,保护代码

“强盗打劫!,移花接木”

  • Frida

  • ratel

  • Xpose

smail、汇编、C/C++、So

IDA动静调试一探究竟

AOSP

完了,芭比扣了

补补Java、JNI、Android吧

第七层:分布式爬虫

任务过多,工人不够?

消息队列抽离任务全局可用,一代多

任务supervisor一带多

配上docker虚拟化,K8s虚拟化,一起拥抱云源生

有始有终,奴奴++

第八层:爬虫架构

跑在云上等,网络角逐者

云监控:thanosgrafana

日志监控:KafkaElasticSearchFileBaetkibana

第九层:工具链构建

UA Pool

Proxy Pool

Account Pool

DL识别验证码

智能解析算法