美文网首页一起学起来
抓包获取微信文章阅读数实战

抓包获取微信文章阅读数实战

作者: SpiderV | 来源:发表于2018-07-20 17:49 被阅读237次

8月3日 更新

对于爬虫需求量较少的朋友 或者本身对爬虫技术不是很熟悉的朋友 可以私信我一下 我这里提供免费的爬虫API (API包含三个功能  1.获取公众号最近10条历史消息 , 2.获取文章阅读数/点赞数 3.获取搜狗永久链接) 

更新于2018年7月20日  目前有效

--------------------------------------------------------------------------------------------------

关于搜狗转永久链接 & 抓历史消息相关文章  近期会上线

有相关技术问题及批量化问题 请私信联系我 

之前写过几篇文章 貌似最近微信又改过一次验证规则 导致之前的不能用了

正文如下

首先需要获得一篇文章的地址

例如    https://mp.weixin.qq.com/s/S_g27h2KJPSb1NZ9DPM5Ig

我们在手机中访问 可以看到他的阅读数和点赞数 如下图

手机获取微信阅读数

如果在电脑浏览器中访问 是没有阅读数的  并且换了手机/微信的 user-agent 仍然不能获取到阅读数

为了解决这个问题 首先我们 配置好 抓包工具 看一下手机中访问这个页面的时候 究竟有哪些参数

首先配置好 类似 fiddler/charles之类的http/https抓包工具 如果不会配置 自行百度(不要忘记安装https证书   如果是ios10之后的设备 需要在设置中另外开启一个选项 切记!!!!!!!)

配置好抓包工具后 首先我们访问以下文章链接看一下请求

点击文章后的请求

如上图所示 出现了 很多很多的请求  第一个是文章的html连接 后面一次的还有 阅读数接口 和 评论信息接口 还有一个是公众号信息 还有几个不知道是做什么的接口

所以抓包后可以得出结论  阅读数是异步获取的  那就好办了 接下来我们继续看这个接口的参数就好了

https://mp.weixin.qq.com/mp/getappmsgext?f=json&mock=&uin=777&key=777&pass_ticket=QubwCfCA8tQmOKNy05WGE%25252FGdIeQ9xd5smXQdTUznrqfThf6SKZegV%25252BUoNtOHKXYT&wxtoken=777&devicetype=iOS12.0&clientversion=16070025&appmsg_token=966_UjA%252BvpGPcW4k3kPBneqR26gjfiQUlbb0tX_RWCeVBf7_ooOlyQYl1MfANvkqhiXnIy3JX4xFAhbfxM9j&x5=0&f=json

先来看一下这个链接   post传送的方式(我记得之前版本有一个 post参数  参数名为 is_read 值为 1 )

先拿到postman里访问一下尝试

尝试发送请求

结果如上图所示 竟然返回的是错误

继续看一下阅读数接口  发现除了 get的参数 和post的参数之外 还有cookie没做处理 

阅读数接口携带的cookie(部分)

那么这个cookie究竟是从哪里来的呢???

于是再往前翻一下 第一个接口 及文章的接口 

这个接口中 发现了 set-cookie

文章接口中的set-cookie(部分)

通过上图可以看出 微信的操作是 访问了文章接口 会set-cookie 给你 带这个cookie访问阅读数接口 才可以获得阅读数

那接下来我们手动处理一下cookie 再试试

最终成功请求后的结果如下图

阅读数接口

read_num 为阅读数 like_num为点赞数

另外经过我一番整理之后 我发现 cookie生成的方式 依赖于 文章接口中的 X-WECHAT-UIN 和 X-WECHAT-KEY这两个参数 这两个参数的的来源只能是点击文章获取   获取后来置换cookie 从而进行接下来的请求

这两个参数是微信那边生成的 目前不知道算法 而且存在过期时间

另外一个阅读数的关键参数 是 appmsg_token 

这个参数可以在文章页面的html中获取 用正则匹配一下即可

另外还有一点小发现 就是 一篇文章的 X-WECHAT-UIN 和 X-WECHAT-KEY 可以获取相同公众号下的文章的阅读数 

相关文章

网友评论

  • fe522989abc7:楼主,有没有api提供,收费的也行
    SpiderV:私聊我留下联系方式 我给你api
    SpiderV:你可以私聊我一下
  • icetong_k:你怎么实现批量api接口的,cookies时效最多大半天,要是拿cookies去获取阅读点赞等数量失效更快,难道每次失效cookies重新手机点一下,fiddler抓一下吗。
    SpiderV:其实归根结底 就是有许多的微信号 这个是根本 你有在高的手段 每个微信号的cookie 也只能抓当日上限的次数
    SpiderV:恩 uin和key 只有大约100分钟多一点的有效时间 你说的如果采集多时效快的原因是到达每日上限了 上限后cookies是无效 理论上来说 你说的 fiddler抓 确实是一种方式(打出请求中的header) 但不一定借助fiddler抓 例如 对windows / mac 客户端的微信做一些逆向 在通过一些手段获取

本文标题:抓包获取微信文章阅读数实战

本文链接:https://www.haomeiwen.com/subject/jpyqmftx.html