Fiddler抓取PC版微信公众所有文章数据的分析(多图)
本帖最后由 ingdear 于 2022-8-20 09:33 编辑[*]前言
——————————————————————————————————————————————————
由于新版本微信已经显示文章列表的功能,这里使用的还是微信2.9.5版本(文章后面有提供)
工作环境为:virtual box虚拟机+WIN10 LTSC+微信2.9.5+Fiddler4 v5.0.20204.45441,虚拟机没有安装其它软件
Fiddler需要开启支持HTTPS
如果本文内容及使用的样例有不合规定之处,麻烦版主删贴(也不知道有没发错版块,找了下不知道发哪个版块合适)。
[*]操作目的
——————————————————————————————————————————————————
主要是分析微信的文章列表获取方式,找出规律,然后实现获取指定的参数变量,来实现读取一个公众号下的所有文章
[*]抓包
————————————————————————————————————————————
先登录微信,然后找到文章历史记录位置,如下图:(这里以 吾爱破解论坛 公众号为例)
按上步骤进入公众号后,在下图2位置就是所有文章列表位置
打开Fiddler软件,然后再点击上图2的查看历史消息,然后向下翻页文章,等文章加载过两三次后就可以了。
加载多页后,能看到多个带有action=getmsg参数的地址,这些就是返回的文章信息,是JSON格式
把多个地址提取出来能发现,同一次同一公众号,多页列表只存在offset这个参数不同,其它参数都一样
而且offset能看到第一次翻页是10,第二次翻页是20,第三次是30,类推
从这里能发现,offset应该就是从新到旧的第几篇文章,从0开始
尝试拿其中的地址直接在另外一台没有登录微信的电脑上用浏览器打开,发现是能打开并且得到返回的JSON数据
也就是只需要参数对了,哪里都能打开并且返回数据
general_msg_list这个里面的数据把前后的 " 去掉,然后把 \" 替换成 " ,剩下的数据就是文章列表内容,解析后如下
还有一些其它参数具体查看JSON里对应的内容
上面基本上把一次的信息简要的分析了,接下来就是解决列表哪些参数是需要的,有效时间等问题。
[*]提取参数
——————————————————————————————————————————————
https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz={公众号编号}&f=json&offset={offset}&count=10&is_ok=1&scene=124&uin={访问者编号}&key={key}&pass_ticket={pass_ticket}&wxtoken=&appmsg_token={appmsg_token}&x5=0&f=json
从上面分析能得出获取文章列表的url地址,其中
标红的每次访问时获取的参数,半小时有效
标蓝的为固定,同一公众号固定,同一访问者固定
标粉的为页面数,从0开始,一次10篇;第一页为0,第二页为10,第三页为20,类推
说明:offset里的一篇指的是一次推送,一次推送里可以是一篇文章也可以是多篇文章。
在获取到了一次的链接后,提取出{公众号编号}、{访问者编号}、{key}、{pass_ticket}、{appmsg_token},然后只需要在链接里修改{offset},就能达到读取所有的文章。
还是以 吾爱破解论坛 为例,通过修改offset,把最开始发布的文件找出来。
经过多次测试,确定893为最开始的一篇文章,894就没有文章了
[*]新版本怎么操作
————————————————————————————————————————————————————————
上面使用的都是旧版本,一般使用中也没人特意一直用旧版本,那在新版本中如何处理?新版本已经没有那个查看历史消息的功能。
根据前面获取到的列表访问地址:
https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz={公众号编号}&f=json&offset={offset}&count=10&is_ok=1&scene=124&uin={访问者编号}&key={key}&pass_ticket={pass_ticket}&wxtoken=&appmsg_token={appmsg_token}&x5=0&f=json
那就是只需要获取到上面的参数,自然就可以直接使用地址替换参数了。
还是打开Fiddler,然后打开需要获取参数的公众号中的任意一篇文章访问,等文章访问完了,搜索:_biz、uin、key、pass_ticket、appmsg_token,就能获取到对应的参数,然后替换链接里对应信息,放到浏览器里试试,发现是能打开的,那么就完美解决了新版本没有历史记录的问题了。
在浏览器中浏览效果
[*]错误及其它
——————————————————————————————————————————————————
参数{key}、{pass_ticket}、{appmsg_token}的有效时间为从获取开始30分钟,那失效了会显示什么?
如果出现errmsg返回no session就表示参数过期了,需要重新替换参数{key}、{pass_ticket}、{appmsg_token}。
帖子写得有点乱,都是简单的分析。
至于分析出来后,能用来做什么,好像用处不大,最多就是用来下载某公众号的所有文件进行保存。
————————————————————————————————————————————————————————
微信2.9.5安装包,超过100M了,只能使用百度云了
链接: https://pan.baidu.com/s/1ZLbviKcpTr6C-qetpOWJ_w?pwd=hg85 提取码: hg85
以下为广告帖:{:1_918:} 2022/08/20
微信公众号文章下载器,用于下载微信公众号的所有文章
https://www.52pojie.cn/thread-1651719-1-1.html
(出处: 吾爱破解论坛)
本帖最后由 话痨司机啊 于 2022-6-30 09:47 编辑
ingdear 发表于 2022-6-29 17:04
这公众号这么多文章,抓了1万文章记录了。
我明天试下看会不会出现这个错误。
确实有点多,我只要我需要 的部分文章里的音频。。。,其他的文章链接和标题我就入库了,文章链接固定,到时候用啥直接在数据库里拿,可能前天我测试的时候爬数据没设置访问频率,我的uin,biz被服务器屏蔽了吧,旧接口跟新接口不一样,所以我用新的微信一样可以往下拉获取历史记录,估计旧微信就会报错,今天测试可以下载了。
谢谢大佬讲解,学习了 厉害,学习了 为什么要用虚拟机 感谢大佬的分析讲解学习了{:1_919:} zucker 发表于 2022-6-9 11:14
为什么要用虚拟机
因为分析的时候需要微信旧版本,本机安装的是新版本,不想卸载重装,就使用了虚拟机操作。 66666666 支持一下大佬说的好圣奥 666666666 厉害了,学习使我快乐