惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
量子位
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
D
DataBreaches.Net
B
Blog
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
H
Help Net Security
The Cloudflare Blog
U
Unit 42

方永、南天紫雲

linux透明代理 技术的边界 停机问题通俗说明 Rust与oracle、redis集群的纠结 学习能力的增长 mac外接移动硬盘安装ArchLinux linux的死机问题 linux下全键盘操作 漂亮又好用的bspwm linux本机透明代理 ssh、mosh、autossh linux不能待机又一例 从WordPress切换到Hugo 折腾电脑开机 linux系统QQ新思路 Arch Linux的字体渲染 svn管理之submin OpenWrt自动fucking墙記錄 二维码(qrcode)名片的一些事儿 用lua nginx module搭建一个二维码(qr code)生成器 CentOS 7 安裝註記 php程序連接MySQL时只能127.0.0.1而localhost無法連接的問題 ThinkPad之FAN_ERROR、hi fi聲卡 jetty多端口部署 OpenWrt簡單暴力限網 linux中cron之PATH变量 OpenWrt的WDS無線橋接模式 再敘OpenWrt下的rtl8187無線中繼 sed之模擬tail 終端進化之二零一三
微信调试的原语
zola · 2016-10-12 · via 方永、南天紫雲

在微信中嵌入的网页,比如公众号的页面,如何查看日志,如PC浏览器一般调试页面?

有同事发了一个二维码,在微信里打开后就跳转到了一个调试页面。如下图:

一个名为“X5调试页面”的页面,http://debugx5.qq.com/,搜索后发现微信的webview引擎基于TBS(腾讯浏览服务)。 在这个调试页面“代理”一栏的最下方,有文件缓存清除功能,这是许多人寻找的微信清除缓存的功能。

而在“信息”一栏,TBS settings里的选项“是否打开TBS内核Inspector调试功能”,这又是一个非常重要的功能,选择开启,然后配合adb就可以在chrome的 chrome://inspect/#devices里看到需要调试的页面了。

然后用这个inspect调试一把http://debugx5.qq.com/,会看到这个页面的源码,js的注释里有写用的是js2java实现了javascript调用android的native code的功能, 看缓存清理的按钮,click事件关联到了一个叫clearCookieAndCache的全局函数,在控制台查看这个函数,如下:

	function clearCookieAndCache() {
        var cookiechecked = document.getElementById("id_clearcookie").checked;
        var filecachechecked = document.getElementById("id_clearfilecache").checked;
        var adfiltercachechecked = document.getElementById("id_clearadfiltercache").checked;
        var dnscachechecked = document.getElementById("id_cleardns").checked;
        
        var clearItems = (cookiechecked ? 1: 0)  + ( filecachechecked ? 2 : 0 )+
            (adfiltercachechecked ? 4 : 0) + (dnscachechecked ? 8 :0) ;
        if(clearItems == 0)
        {
            resultTips("请选择需要被清除的选项。", 1000);
            return ;
        }

        window.ProxyStatus.clearCookieAndCache(clearItems);
        resultTips((cookiechecked ? "[Cookie] ":"") + (filecachechecked ? "[文件缓存] ":"") +
                (adfiltercachechecked ? "[广告过滤缓存] ":"") + (dnscachechecked ? "[DNS缓存]" :"")
                + "被清空。" , 1000);

        document.getElementById("id_clearcookie").checked = false;
        document.getElementById("id_clearfilecache").checked = false;
        document.getElementById("id_clearadfiltercache").checked = false;
        document.getElementById("id_cleardns").checked = false;
    } 

核心代码window.ProxyStatus.clearCookieAndCache(clearItems);一句,ProxyStatus应该就是Native code暴露给js的,控制台 查看这个对象,拥有的方法挺多,都是可以望文生义的。

如此,就能知道,凡是基于tbs的webview,应该都会有ProxyStatus这个对象,在自己的页面里对ProxyStatus的方法进行调用,就 可以完成清除缓存之类的操作。(这个没有实验)