美文网首页
微信沙盒目录学习系列二:公众号数据存储

微信沙盒目录学习系列二:公众号数据存储

作者: iOS代码搬运工 | 来源:发表于2020-04-13 11:53 被阅读0次

上一节我们说了如何导出微信沙盒目录,这一节我们来看看沙盒里面存储的公众号数据。

恢复完成示意图
这里我们主要来看看AppDomain-com.tencent.xin目录。数据库查看我们用 DB Browser for SQLite

Documents目录

如上图所示,我们可以看到有一个32个0组成的一个文件夹。下面紧接着也有一个32个字符串的文件夹。我猜想,这应该是每个用户的文件夹,用来存储当前用户的一些数据。经测验,命名方式目测是用唯一的微信号进行MD5值来进行。而当用户登录时,创建当前用户目录,并将初始文件夹内的资料复制到当前用户目录下。我们重点来看看当前用户目录下的资料。


Documents目录

我们来看看Brand目录下的BrandMsg.db,因数据库没有加密可以直接打开。这里一般存的是公众号相关的信息。

BrandMsg.db
我们可以看到有87张表和215个索引。

87张表

87张表除去一个用来记录当前最大自增id的sqlite_sequence,其他表都是有一个附表存在,表名依旧是chat_(公众号userName的MD5码)。也就是说每个公众号有一个表存储他们推送过来的订阅消息。我们来看看建表语句(随意一个,我找了Cocoa开发者社区的.userName: gh_d9c2fdea6f2a MD5(userName):1a26fd6c1f0dac7cf220cd58c7e59574)

CREATE TABLE Chat_1a26fd6c1f0dac7cf220cd58c7e59574(
CreateTime INTEGER DEFAULT 0,  --时间戳 单位秒
Des INTEGER,  -- 暂时未知
ImgStatus INTEGER DEFAULT 0,  --图片状态
MesLocalID INTEGER PRIMARY KEY AUTOINCREMENT, --本地消息ID
Message TEXT, --消息内容
MesSvrID INTEGER DEFAULT 0, --远程消息
Status INTEGER DEFAULT 0,--状态
TableVer INTEGER DEFAULT 1, --表版本
Type INTEGER --类型
)

CREATE TABLE ChatExt2_1a26fd6c1f0dac7cf220cd58c7e59574(
ConIntRes1 INTEGER DEFAULT 0, 
ConIntRes2 INTEGER DEFAULT 0,
ConIntRes3 INTEGER DEFAULT 0, 
ConStrRes1 TEXT, 
ConStrRes2 TEXT, 
ConStrRes3 TEXT, 
MesLocalID INTEGER PRIMARY KEY, 
msgFlag INTEGER DEFAULT 0, 
MsgIdentify TEXT, 
MsgSource TEXT
)
Coaco开发社区公众号推送的订阅消息记录
可以看出表中共16条记录。
iPhone端Cocoa开发者社区
现在我们来看看ChatExt2_1a26fd6c1f0dac7cf220cd58c7e59574表中最后一条记录的Message字段(时间戳1586429880转化时间:2020-04-09 18:58:00,大家可以参考下)。内容如下:
<msg>
    <appmsg appid="" sdkver="0">
        <title><![CDATA[大龄程序员再就业:美国州长急聘,精通上古语言COBOL,需尽快到岗]]></title>
        <des><![CDATA[年纪大的程序员还能「下岗再就业」?]]></des>
        <action></action>
        <type>5</type>
        <showtype>1</showtype>
        <content><![CDATA[]]></content>
        <contentattr>0</contentattr>
        <url><![CDATA[http://mp.weixin.qq.com/s?__biz=MjM5OTM0MzIwMQ==&mid=2652567581&idx=1&sn=819937915388ab72be02b421c24a13be&chksm=bcd2bd138ba53405f80ac6b7411a99e6619cc78b61ca11019c26109af371e06285f7e3cf7f53&scene=0&xtrack=1#rd]]></url>
        <lowurl><![CDATA[]]></lowurl>
        <appattach>
            <totallen>0</totallen>
            <attachid></attachid>
            <fileext></fileext>
        </appattach>
        <extinfo></extinfo>
        <mmreader>
            <category type="20" count="2">
                <name><![CDATA[Cocoa开发者社区]]></name>
                <topnew>
                    <cover><![CDATA[https://mmbiz.qpic.cn/mmbiz_jpg/foPACGrddJ0nvlzQTSC8GugiaDZIicmt3JRsttq6RoU02Y9lNricB37eU51gSWkJKVFBh1ibTgn3XyY1bMIpiaicfS2g/640?wxtype=jpeg&wxfrom=0]]></cover>
                    <width>0</width>
                    <height>0</height>
                    <digest><![CDATA[年纪大的程序员还能「下岗再就业」?]]></digest>
                </topnew>
                
                <item>
                    <itemshowtype>0</itemshowtype>
                    <title><![CDATA[大龄程序员再就业:美国州长急聘,精通上古语言COBOL,需尽快到岗]]></title>
                    <url><![CDATA[http://mp.weixin.qq.com/s?__biz=MjM5OTM0MzIwMQ==&mid=2652567581&idx=1&sn=819937915388ab72be02b421c24a13be&chksm=bcd2bd138ba53405f80ac6b7411a99e6619cc78b61ca11019c26109af371e06285f7e3cf7f53&scene=0&xtrack=1#rd]]></url>
                    <shorturl><![CDATA[]]></shorturl>
                    <longurl><![CDATA[]]></longurl>
                    <pub_time>1586429864</pub_time>
                    <cover><![CDATA[https://mmbiz.qpic.cn/mmbiz_jpg/foPACGrddJ0nvlzQTSC8GugiaDZIicmt3JRsttq6RoU02Y9lNricB37eU51gSWkJKVFBh1ibTgn3XyY1bMIpiaicfS2g/640?wxtype=jpeg&wxfrom=0]]></cover>
                    <tweetid></tweetid>
                    <digest><![CDATA[年纪大的程序员还能「下岗再就业」?]]></digest>
                    <fileid>505083919</fileid>
                    <sources>
                        <source>
                            <name><![CDATA[Cocoa开发者社区]]></name>
                        </source>
                    </sources>
                    <styles></styles>
                    <native_url></native_url>
                    <del_flag>0</del_flag>
                    <contentattr>0</contentattr>
                    <play_length>0</play_length>
                    <play_url><![CDATA[]]></play_url>
                    <player><![CDATA[]]></player>
                     
                    
                    <music_source>0</music_source>
                    <pic_num>0</pic_num>
                    <vid></vid>
                    <author><![CDATA[]]></author>
                    <recommendation><![CDATA[]]></recommendation>
                    <pic_urls></pic_urls>
                    <comment_topic_id>1289120887735762945</comment_topic_id>
                    <cover_235_1><![CDATA[]]></cover_235_1>
                    <cover_1_1><![CDATA[]]></cover_1_1>
                    <appmsg_like_type>2</appmsg_like_type>
                    <video_width>0</video_width>
                    <video_height>0</video_height>
                    <is_pay_subscribe>0</is_pay_subscribe>
                </item>
                
                <item>
                    <itemshowtype>0</itemshowtype>
                    <title><![CDATA[2020 年 4月全国程序员工资出炉!]]></title>
                    <url><![CDATA[http://mp.weixin.qq.com/s?__biz=MjM5OTM0MzIwMQ==&mid=2652567581&idx=2&sn=a8bcf6d82f58c521a883eb802a222eda&chksm=bcd2bd138ba53405d0909af724b6a74772041540a9e416e09dbc1309259d53e34cf4dfa5a2ab&scene=0&xtrack=1#rd]]></url>
                    <shorturl><![CDATA[]]></shorturl>
                    <longurl><![CDATA[]]></longurl>
                    <pub_time>1586429864</pub_time>
                    <cover><![CDATA[https://mmbiz.qpic.cn/mmbiz_jpg/foPACGrddJ0nvlzQTSC8GugiaDZIicmt3JTVI26SdPk9mSecV2AdZkN7CMmRC3nzBVvZjKrEtH1SnNIGGRiaArfYw/300?wxtype=jpeg&wxfrom=0]]></cover>
                    <tweetid></tweetid>
                    <digest><![CDATA[你拖后腿了吗?]]></digest>
                    <fileid>0</fileid>
                    <sources>
                        <source>
                            <name><![CDATA[Cocoa开发者社区]]></name>
                        </source>
                    </sources>
                    <styles></styles>
                    <native_url></native_url>
                    <del_flag>0</del_flag>
                    <contentattr>0</contentattr>
                    <play_length>0</play_length>
                    <play_url><![CDATA[]]></play_url>
                    <player><![CDATA[]]></player>
                     
                    
                    <music_source>0</music_source>
                    <pic_num>0</pic_num>
                    <vid></vid>
                    <author><![CDATA[]]></author>
                    <recommendation><![CDATA[]]></recommendation>
                    <pic_urls></pic_urls>
                    <comment_topic_id>1289120888473960448</comment_topic_id>
                    <cover_235_1><![CDATA[https://mmbiz.qpic.cn/mmbiz_jpg/foPACGrddJ0nvlzQTSC8GugiaDZIicmt3JTVI26SdPk9mSecV2AdZkN7CMmRC3nzBVvZjKrEtH1SnNIGGRiaArfYw/300?wxtype=jpeg&wxfrom=0]]></cover_235_1>
                    <cover_1_1><![CDATA[https://mmbiz.qpic.cn/mmbiz_jpg/foPACGrddJ0nvlzQTSC8GugiaDZIicmt3JTVI26SdPk9mSecV2AdZkN7CMmRC3nzBVvZjKrEtH1SnNIGGRiaArfYw/300?wxtype=jpeg&wxfrom=0]]></cover_1_1>
                    <appmsg_like_type>2</appmsg_like_type>
                    <video_width>0</video_width>
                    <video_height>0</video_height>
                    <is_pay_subscribe>0</is_pay_subscribe>
                </item>
                
            </category>
            <publisher>
                <username><![CDATA[gh_d9c2fdea6f2a]]></username>
                <nickname><![CDATA[Cocoa开发者社区]]></nickname>
            </publisher>
            <template_header></template_header>
            <template_detail></template_detail>
            <forbid_forward>0</forbid_forward>
        </mmreader>
        <thumburl><![CDATA[https://mmbiz.qpic.cn/mmbiz_jpg/foPACGrddJ0nvlzQTSC8GugiaDZIicmt3JRsttq6RoU02Y9lNricB37eU51gSWkJKVFBh1ibTgn3XyY1bMIpiaicfS2g/640?wxtype=jpeg&wxfrom=0]]></thumburl>
    </appmsg>
    <fromusername><![CDATA[gh_d9c2fdea6f2a]]></fromusername>
    <appinfo>
        <version></version>
        <appname><![CDATA[Cocoa开发者社区]]></appname>
        <isforceupdate>1</isforceupdate>
    </appinfo>  
</msg>

剩下的工作就是解析这个XML数据了。这块的解析就暂时不贴出了,留给工友们自己摸索。
PS:在微信单个公众号页面,微信采取的数据加载方式是先加载三条最近的推送消息,每次下拉再加载两条,直至本地数据加载完毕。
下一篇我们来看看订阅号消息页面的数据存储。
不得不说,微信数据存储的思路还是很清晰,将复杂的事情拆分成多个简单的部分,值得借鉴。

相关文章

网友评论

      本文标题:微信沙盒目录学习系列二:公众号数据存储

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