最近用 Chrome 越用越卡,排查了一下后发现是 Golink 扩展导致的,在其插件评论中也发现了类似的反馈:
出于好奇,我解包了扩展,想看看到底是在做什么能这么卡。
反混淆 background.fc3f2dbe.js
得到
import { r as o, g as t } from './util.eef45f49.js';
chrome.webRequest.onCompleted.addListener(function (e) {
o(e.url);
}, { urls: ['<all_urls>'] });
可以看出每次 chrome 请求结束后都会把 url 传到一个叫 o
的函数里,也就是 util.js
里的 r
。
反混淆 util.eef45f49.js
得到
const Sn = async e => {
if (await S('user') == null)
return;
let n = await S('urls');
if (!n) { n = []; }
//...
//{
//...
var u = true;
n.forEach(function (l) {
if (l === i[1]) {
u = false;
}
});
if (u) {
n.push(i[1]);
await J('urls', n);
}
}
};
export {
//...
Sn as r,
//...
};
省略了一部分代码,但是基本逻辑是从chrome.storage.local
取出一个叫urls
的数组,然后将当前访问的 url 加入到这个数组里,再放回存储。因为要遍历整个数组来去重,所以当访问很多网站后就会很卡。
通过 chrome devtool 验证:
注意:
urls
包括了所有 chrome 进行过的请求,即使未启用扩展的加速功能,只要你登录了就会收集请求 URL
这些 URL 中除了访问历史记录以外还很可能包括了 token 之类的敏感信息。
进一步分析发现一个叫做Rn
的函数会调用Me
把 urls 发送到/report/extension-visit-log
。具体调用时机懒得分析了,直接开 chrome 用自带的开发者工具抓包得到以下结果
解包的扩展,如果有人想分析的话: https://drive.google.com/file/d/1PHxNWanTJ9WKgv88jvgbdB-WMT6ZDIpV/view
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.