小红书小程序爬虫抓包分析

小红书小程序爬虫小红书爬虫
小红书是有 APP 和 小程序两个入口。今天介绍小红书小程序的爬虫。

主要流程是以下几步
1.搭建抓包环境
2.抓包分析
3.模拟构造请求
4.大规模验证
5.小红书滑块解决

搭建抓包环境
这里不多说,我主要使用 IOS 手机 charles 。有时候也会使用 mitmproxy。
基本上就是证书安装,还有 ios 信任证书, 就可以抓到 HTTPS 的包了。有时间详细介绍下。
特别提示 mitmproxy 有一个定制代码功能。mitmdump 这个非常好用。可以在代码里面进行中间数据串改。
抓包分析
第一步配置好抓包环境后,第二步就是抓包了。在微信里面搜索小红书小程序,然后打开。
下面就是看到的内容。这里选了旅行的 tag。

点开任意一篇文章进行抓包,这里我们点击右上角的美女(我就喜欢美女嘿嘿)。
在 charles 中查看访问的链接。下图就可以看到请求的链接和返回的数据了。
进行测试:在链接上右键,Copy cURL Reqest 就可以得到 curl 的请求。复制到 iterm 中执行就可以得到数据了。

这只是单一的一个数据验证。没问题了。接下来就是小规模验证数据。
上面的图,中间有两个标红的地方需要特别关注,第一个是 x-sign 第二个是我打码的 authorization 。
模拟构造请求
模拟构造请求的时候,就需要关注上一步的 x-sign 和 authorization。authorization 是固定的,每一个用户一个 authorization。相当于登录的 session。这个是不会变得。但是大量请求会出滑块。这个后面再说。接下来就是 x-sign 验证。
多抓包几个链接分析查看 x-sign 都是 33 为的,而且首位都是 X。那么很容易联想到 x-sign 就是 X+md5 的结果。
既然是 md5 就可以在代码所有请求里面搜索 md5 。然后找到详细的位置分析后进行编码就行了。
这里分析到了详细的算法。算法实现方式也有了。详细的代码逻辑就不展示了。
大概就是 将所有参数组合再加上一个盐值(slat)进行 md5. 最后在首位加上一个 X。(仅供交流,需要加v:feilang235)。
获得上面两个参数后,接下来就是用代码进行模拟请求了。这个简单。python requests 一把梭验证 x-sign 没问题就行。
大规模验证少量抓取没问题后,接下来就是大规模验证下。将相关接口都写完后

1.小书进行搜索
2.搜索得到的笔记,进入笔记详情
3.查看笔记的评论
4.获取评论的用户信息
以上就是一个全链路循环。
代码完成后,开始抓取,结果跑了一会后,出现滑块了,程序错误。
滑块分析,这个过程比较难。折腾了很久才搞定。这里说一下大致原理。

1.模拟请求小红书滑块滑块接口
2.得小红书滑块的图片
3.对小红书滑块图片进行处理,对颜色做处理,分析出滑块位置
4.使用 js 进行模式拖动,完成滑块的滑动动作。
5.对结果进行提交,并且轨道需要加密。
6.完成小红书滑块验证

通过上面的步骤就可以完成滑块处理了。然后又可以愉快的抓点数据了。当然如果量太大了估计也会对账号产生影响。不过目前我还没有遇到过。

补充说明
文章仅对小红书小程序抓包进行了分析,作为技术交流。如果对小红书造成了影响请联系我删除。有技术交流也可以联系ping0206guo

后续尽量带来 快手爬虫,抖音爬虫等 APP的分析。期待。

你可能感兴趣的:(程序员)