专栏名称: 信息时代的犯罪侦查
一切行为皆有犯罪的可能性,而在信息时代,这一过程变得更加复杂或者隐晦了。本号致力于传播打击和预防犯罪的手段、方法、理念,并希望能够推动侦查犯罪的机制变革,而这需要了解方方面面的信息。
目录
相关文章推荐
51好读  ›  专栏  ›  信息时代的犯罪侦查

【深度分析】微信公众号文章阅读进度的保存原理

信息时代的犯罪侦查  · 公众号  ·  · 2018-11-22 00:00

正文

案例

随笔

知识

声音

其他


编者按

这篇文章 从代码的角度 ,分析了 微信公众号文章的阅读进度保存原理。感谢“麻辣牛肉粉”、“波哥”、“=_=”、 “iqiqiya”等作出的 贡献。

本文原作者:波哥。

微信公众号文章的阅读进度保存功能, 通过第一期“限期挑战”,吸收了很多人的实验和分析。这篇小文也算是一个总结。

言归正传,怎么开始来具体分析呢?下面作者大家一一解开!


一、使用Chrome浏览器

下载 “微信Web开发者工具”并安装:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455784140,可以根据情况选择下载 32 位或者 64 位的版本。



二、登陆


双击打开这个工具,出现扫码登陆的界面:



用你的微信号扫描后,登陆成功见下图:



三、详细分析


我们随便找一片文章进行分析,以《沙特记者失踪的事,那秀文笔的狗尿苔》为例吧。地址这里:

https://mp.weixin.qq.com/s/ZdlvbTL8iC33IFKzNoheuQ,

把这个地址复制到开发工具的地址栏,Chrome浏览器需要你按一下键盘的 F12。最后打开的效果如下:



重点关注一下右侧红色框框部分。


阅读进度应该是个 scroll 值,到底保存在 cookie ,还是 Local Storage 里面呢?我们首先来看看 cookie 里面是否存在。


红色框框内的第一行中有一个 Resources 的选项卡,点击进去后左侧会列出很多本地存储方式的选项,选择我们说的 Cookie 一栏,见下图:



就那么简单两行数据,并没有我们需要的scroll pos 值;那我们再看看 Local Storage 里面呐,见下图:



好家伙!你看滚动条,居然这里藏着这么多东西,而且滚动条还自动滚动最下面了,而且还会看到这个“ __WXLS__page_pos ,这个是什么鬼? 不就是我们的 scroll pos 么?


(哈哈,此处有 掌声 ,或许同时伴随着您的“ 赞赏金额 ”。)


让我们来验证一下。切换到红色框内的 console 选项卡中,在有 “>” 这个提示符后面,输入 window.localStorage.getItem('__WXLS__page_pos') ,回车后,得到如下效果:



上图是我输入了 2 次进行值的对比,可见我们拖到左边文章位置之后,val 值就发生了改变,如果我们有 2 篇文章会是什么效果呐? 见下图:



可见,这个里面存储的就是非常简单的 键值对。 key 是文章唯一标识,value 是一个带过期时间的阅读进度位置。



四、微信的LocalStorage在哪里?







请到「今天看啥」查看全文