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

推荐订阅源

P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
腾讯CDC
人人都是产品经理
人人都是产品经理
小众软件
小众软件
V
Visual Studio Blog
S
Secure Thoughts
J
Java Code Geeks
V
V2EX
量子位
The Hacker News
The Hacker News
酷 壳 – CoolShell
酷 壳 – CoolShell
Security Latest
Security Latest
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
博客园 - 叶小钗
T
Threat Research - Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Tailwind CSS Blog
Cloudbric
Cloudbric
S
SegmentFault 最新的问题
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Application and Cybersecurity Blog
Application and Cybersecurity Blog
IT之家
IT之家
T
Tenable Blog
S
Security @ Cisco Blogs
月光博客
月光博客
雷峰网
雷峰网
博客园 - 【当耐特】
Know Your Adversary
Know Your Adversary
C
Cybersecurity and Infrastructure Security Agency CISA
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
Attack and Defense Labs
Attack and Defense Labs
博客园 - 三生石上(FineUI控件)
Hacker News - Newest:
Hacker News - Newest: "LLM"
有赞技术团队
有赞技术团队
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
TaoSecurity Blog
TaoSecurity Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Cloudflare Blog
K
Kaspersky official blog

方永、南天紫雲

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 終端進化之二零一三 linux下的郵件服務器:postfix_dovecot_roundcube 一次性密碼/動態口令卡原理 xl2tp之VPN靜態地址分配 rtl2838U2832试用记 linux中pptp协议VPN搭建 glances监控工具安装 CentOS6.4硬盘安装 Debian Wheezy硬盤/U盤安裝小記 Kirby小試 zsh shell怎么打开常用的目录? OpenWrt SSH免密码使用密钥登录 linux中的vsftpd的匿名(anonymous)用户配置 無光驅無USB無軟驅,怎麼修復硬盤MBR? 那些個人網站 linuxFreeBSD下的dnspod动态域名客户端 Windows系统盘的32K之殇 一枚Chrome插件引起的大量磁盤IO問題 用批處理切換網卡的IP(適用Win7、Win8) Windows中的DHCP服务器 Win8啓動時出現“您的電腦需要修復”問題的解決辦法 Windows8睡眠(待机)模式异常处理 最强大好用而又小巧的计算器 Windows8運行不能保存歷史命令 Win8下的红警2尤里复仇 为cmd添加readline,如Bash Shell般使用cmd 手动添加修改win8 win+x菜单 Win8運行卸載程序時提示2503之解決一法 烽火HG110提权一法 缓解眼疲劳有效的办法 mintty乱码解决办法 糟糠美妾 免费易用的Win8 ArchLinux的類box環境音量調節二三事 使用OpenWrt与curl挂QQ OpenWrt的安全 OpenWrt BCM63xx rtl8187使用注意事项 Arch Linux之systmed使用简介 Archlinux 2012.07.15之后发布的镜像新手安装完全向导 FreeBSD 9.0 安装简记 记一由FreeBSD引发的午夜惊魂 Jekyll or handmade wi-fi无线破解过程与原理简要介绍 修复QQ影音异常卸载后的文件关联 吐槽一下000webhost 为OpenWrt的luci Web界面加速 最小的sed for Windows linux的磁盘自动挂载 OpenWrt中crontab -e的使用 sddns(dnspod client for OpenWrt)使用说明 OpenWrt中vsftp添加新用户 php+markdown写博客 linux arp防火墙之p2p终结者 墙外的世界很精彩 OpenWrt使用dnspod的动态域名解析(ddns)功能 OpenWrt架设nginx php网站 openwrt架设uhttpd+php+sqlite网站 vim自动跳到上次离开的光标位置 OpenWrt无线中继配置文件 修行八支 漫步者R201T打摩升级改造 阿里(Ali)3328系dvb接收机软件升级方法 db120刷OpenWrt固件并使用ppp方式ADSL拨号 移动短信助手 chrome tips一则 cdate,显示中国传统农历日期 更改硬盘模式为AHCI后Windows及linux的调整 使用grub2加载软盘和光盘镜像 电脑用数据线连接手机上网 电脑通过蓝牙连接手机GPRS上网 我与我的语言
微信调试的原语
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的方法进行调用,就 可以完成清除缓存之类的操作。(这个没有实验)