【🏠作者主页】:吴秋霖
【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作!
【🌟作者推荐】:对爬虫领域以及JS逆向分析感兴趣的朋友可以关注《爬虫JS逆向实战》《深耕爬虫领域》
未来作者会持续更新所用到、学到、看到的技术知识!包括但不限于:各类验证码突防、爬虫APP与JS逆向分析、RPA自动化、分布式爬虫、Python领域等相关文章
作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!
目前很多小伙伴可能或多或少都需要一些基础的笔记或者评论数据进行分析!有的可能想要通过一些关键词进行搜索,获取一些精准领域的笔记内容。有的则希望监测某篇笔记下面新增的评论内容。从技术角度来说,在作者之前的文章中我们除了通过对x-s、x-s-common参数进行逆向分析还原外,还可以通过JS注入免扣加密算法的RPC方案去提取获取到加密参数,再通过协议请求获取数据!
但是,不管哪一种方案对于没有爬虫以及编程经验的人来说无疑是有一定难度与门槛的!
所以,在此前的一段时间内。作者也是尝试并封装了一些API进行过测试,比如:
- 关键词搜索
- 笔记获取
- 评论获取
- 旋转滑块验证码
如果你是一名开发者且有爬虫相关的经验!可以去看看作者之前的文章,相关参数加密分析及完整的一些算法及密钥信息以及如何定位都在这篇文章:x-s、x-s-common加密纯算法还原(2024-9-1更新)
RPC跟注入怎么进行?当然需要先找到加密入口,可以看到上图断点处l包含x-s跟x-t的返回,那么加密操作就在上面完成。看下面这行代码:
window._webmsxyw函数内即加密逻辑,在自执行函数内部并添加在了window属性中
该函数接受两个参数,s是api接口的路径,i是请求提交的参数
这是一种实现思路,提供大家进行参考!相对于纯自动化效率肯定要好,具体方案可以考虑使用Playwright或者pyppeteer实现,通过浏览器的Javascript注入来获取到加密参数,实现方案Demo分别如下所示:
- Playwright实现示例
- pyppeteer实现示例
上面的stealth.min.js脚本是一位大佬开源的!注入的作用是为了防止被检测,另外CK参数需要设置属性来避免Web端出现滑动验证码
当然,这个都是最终工程化需要考虑的事情,这里主要还是通过非逆向分析的方式去解决加密参数问题!
window.localStorage在之前加密分析的文章中已经详细介绍了,localStorage是一个在浏览器中存储键值对的API,通常用于持久化地存储数据,所需的b1参数就在其中
x-s跟x-t的加密参数通过注入的方式能够直接拿到,但是x-s-common的参数仍需要通过加密算法生成!但是这个参数目前适用的并不多,仍然以x-s参数检测为主
Python版本的sign加密算法在之前的加密分析文章中已分享!注入的方式主要为了获取到这些个参数:x-s、x-t、b1
JS注入的方式对于有前端基础及经验的小伙伴,就很简单了。通过上面的方式获取到所有的加密参数后,接下来就是爬虫的工程化(下图是feed接口)
以笔记搜索为例,下面对数据的抓取的示例是采用的协议(非浏览器自动化或注入)的方式。需要注意一下search_id是动态生成的!完整的爬虫代码实现如下所示:
最后,如果没有编程与爬虫经验的小伙伴!有研究、学习的需求也可以找作者领取开箱即用的完整项目源码进行学习!当然大家有兴趣的也可以根据文章所提供分享的思路自己进行研究与实现,没有太大难度!可以找作者给予必要的技术指导~
关于数据的获取,像笔记关键词搜索出来的所有笔记内容在抓取完成后均会自动存储到本地的Excel文件内,如下所示:
笔记所对应的所有评论内容在抓取完成后同样也会存储在本地的Excel文件内,如下所示:
获取只需要笔记下面所有的全量一级、二级评论内容,可以直接去指定笔记ID然后获取,如下所示: