聊聊在工作中的python爬虫

最近做得爬虫相关的work较多、就此来聊聊关于python爬虫吧!爬虫一般分为垂直爬虫和通用爬虫 。
通用爬虫:比如我们常见的爬取新闻网站、各种论坛帖子、财经类信息等都是属于通用爬虫 。
此类爬虫的特点是量大、简单,有规律可循 。技术难点在于怎么样优雅得去适配需要提取的内容,以及翻页的逻辑 。因为你不可能每一个详情页都去写一个匹配规则 。
所以对于通用爬虫,我们更注重于它的框架层面上的东西 。至于框架的考虑 , 爬虫调度逻辑 。去重、翻页、解析、存储、失败重试、代理ip、数据清洗等 。比较好用的框架我是推荐scrapy 。它适合高并发,而且功能多 , 也支持自己扩展功能等 。是一个可以快速上手的,功能全面的框架!
scrapy架构图
至于垂直爬虫:
【聊聊在工作中的python爬虫】一般特点是一个应用一个爬虫,其中应用指的是app、一个网站等!难点在于与反爬虫做斗争,要破解其中的加密参数以及风控点 。
博主曾经做过简单的,也有加密比较复杂的,这里就举例说明比较难的吧 。国内比较难的如淘宝、抖音、快手、小红书、大众点评等 。其中抖音难点在于它的加密参数有很多,不仅如此还有防抓包,你用传统的xposed方式无法绕过 。最新版,需要使用frida hook的方式 , 去hook到网络关键点,才能继续抓包!无法抓包也就意味着后续工作无法进行 。
抖音流量包
用户接口详情数据
当我们获取到想要的流量包以后 , 你又会发现X-Gorgon 、X-Khronos 、X-Tyhon 、x-tt-token等加密参数接踵而至 。这些加密参数都是放在So层的 , 你得逆向app然后找到关键代码 , 进行hook,这不是Java 层得hook,所以你得看懂一些c代码或汇编语言,各种指令集 。因为它得逻辑都是存放在这里静态网页的爬取思路,所以对你得基本工要求比较高 。app逆向推荐jeb或者jadx这样的工具 。
frida远程调用得到加密参数
接下来有两种思路,对于需要破解的参数,你需要手动实现加密逻辑,这种显然不现实,而且工作量巨大 。这里采用frida rpc 远程调用的方式 。直接利用app自身的加密函数,进行远程调用 。每次请求时得到加密参数即可,然后爬虫脚本携带上就可以获取自己想要的数据了 。
这里面还有一点比较难静态网页的爬取思路,就是数据量大了 , 抖音会封你设备 。这是它的风控点,我们就需要去注册很多个合法设备id 。所以怎么得到合法的设备id又是一大难点 , 下期再提供思路 。
本文到此结束,希望对大家有所帮助!

猜你喜欢