V2EX Polish 2.5.5 异常占用

7 小时 21 分钟前
 knightgao2

今天感觉浏览器特别大的卡,查了下 确认高 CPU 来自 V2EX Polish 2.5.5 的后台进程 禁用后恢复,大家卡的可以看下禁用下是不是好了

1256 次点击
所在节点    问与答
19 条回复
giter
7 小时 18 分钟前
原来是这样,也是卡的受不了
longaiwp
7 小时 17 分钟前
不应该赶紧用 AI 查一下是为啥么,听着像有故事
python35
7 小时 15 分钟前
发现了 , 只要打开 v 站就卡
mengdu
7 小时 13 分钟前
有 2.5.6 了
leokun
7 小时 13 分钟前
原来是这个问题,我说为啥这么卡 cpu 一直 100%
JeffreyChen8848
7 小时 12 分钟前
alphato1o
7 小时 11 分钟前
今早自动升级到 2.5.5 ,有个自动签到的功能,但估计 vibe 出了个死循环。在好几个 profile 里全中:浏览器( Phi )主进程 147% CPU ,每个 profile 的 Service Worker 各占 37% 左右,实测 chrome.storage.local 里的 daily 每秒被写 2500 次左右 🫠

原因在 background 的 reconcileCheckInAlarm:
1. 存储里的 daily 没有 memberName 时,normalizeCheckInState 每次都走 createScheduledState(undefined, now, 随机 jitter),返回一个全新的对象,targetAt 每次都不一样。
2. reconcileCheckInAlarm 用 state !== storage.daily 判断,新对象永远不相等,于是 setStorage("daily", state)。
3. 写入触发 chrome.storage.onChanged ,监听里又调 scheduleCheckInAlarm ,回到第 1 步,无限循环。

触发条件:升级到 2.5.5 之后还没打开过 V2EX 页面( content script 还没把用户名报给 background ),或者没登录。关掉自动签到也没用,因为写入发生在判断 autoCheckIn.enabled 之前。

临时解决:在每个装了插件的浏览器 profile 里,登录状态下打开一次 v2ex.com 任意页面,memberName 写进去之后循环就停了。没登录的 profile 先把插件停用。


我看 GitHub 上 #158 、#159 报的是同一个问题。作者看到的话,辛苦尽快发个 2.5.6 。
xyooyx
7 小时 8 分钟前
难怪了,我今天电脑巨烫
LightningAlpaca
7 小时 5 分钟前
卸载再装了一遍,看版本变成 2.5.6 了 似乎修复了
leokun
7 小时 5 分钟前
禁用后好了,然后再看 v 站原本的 UI(我是暗色) 确实不如 V2EX Polish 来的顺眼
Livid
7 小时 1 分钟前
实质上就变成用签到功能通过用户的电脑发动 DDoS 攻击。
hakuya7
7 小时 1 分钟前
AI 分析了下,自动签到功能死循环了,现在更新到 2.5.6 应该是修复了。重启一下浏览器,先禁用再启用就好了。
oppoic
6 小时 59 分钟前
没安装插件,这一刻体现价值了。不过话说回来,这个插件是很漂亮的
loginv2
6 小时 59 分钟前
自动签到我自己写的 可以试试
//自动签到
(function() {
// 检查 src 是否包含 '/mission/daily' 避免 iframe 无限套娃
const iframeSrc = window.location.href;
if ((window.self !== window.top) && iframeSrc.includes('/mission/daily')) {
//console.log('当前在 iframe 中,且 src 包含 /mission/daily');
return ;
}

// 检查是否已登录(没有注册/登录链接)
var signupLinks = document.querySelectorAll('a[href="/signup"], a[href="/signin"]');
var isLoggedIn = signupLinks.length === 0 && !document.body.innerHTML.includes(';</span> 创建新回复</div>');

if (isLoggedIn) {
var userLink = document.querySelector('a[href^="/member/"]');
if (!userLink){
return;
}

// 创建不可见的 iframe
var iframe = document.createElement('iframe');
iframe.src = '/mission/daily';
iframe.id = 'qiandao';
// 隐藏 iframe
//iframe.style.display = 'none';
iframe.style.width = '0';
iframe.style.height = '0';
iframe.style.border = 'none';
iframe.style.visibility = 'hidden';
iframe.style.position = 'absolute';
// 当 iframe 加载完成后执行
iframe.onload = function() {
// 获取 iframe 内的文档对象
var iframe = document.querySelector('#qiandao');
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
var 签到状态 = iframeDoc.querySelector('div#Main>div.box').innerText.indexOf("每日登录奖励已领取");

if (签到状态 > -1) {
//今天已经签到了
document.querySelector("#search").placeholder = "签到已经完成";
// 完成后移除 iframe
document.body.removeChild(iframe);
// 隐藏签到提示
const targetLinks = Array.from(document.querySelectorAll("#Rightbar > div.box a")).filter(a => {
return a.textContent.trim() === '领取今日的登录奖励';
});
if (targetLinks.length>0) {
// 获取第一个匹配 a 标签的父级 div.box
const parentBox = targetLinks[0].closest('div.box');
// 隐藏这个 div.box
if (parentBox) {
parentBox.style.display = 'none';
}
}
}else{
var 签到按钮 = iframeDoc.querySelector("input[type=button][value='领取 X 铜币']");
var 签到地址 = "/mission/daily/redeem?"+签到按钮.getAttribute('onclick').match(/once=[^']+/)[0];
iframe.src = 签到地址;
}
};

// 将 iframe 添加到页面
document.body.appendChild(iframe);
}
})();
Anarchy
6 小时 58 分钟前
@Livid 这种情况多了是封 IP 报 403 么,我有个使用代理的环境这几天访问 v 站大部分时间都处于这个状态。
Livid
6 小时 55 分钟前
@Anarchy 是的,插件导致的这种大量看起来像是攻击的访问,会触发 Cloudflare 的 403 。
v21984
6 小时 43 分钟前
我这个自动签到一直没问题,双端都可以 https://github.com/git710/V2EX-Pro
freeair
4 小时 21 分钟前
firefox 上同样问题,升级到 2.5.7 后正常。
ylsc633
1 小时 38 分钟前
怪不得我打开电脑,我今天的 活动线 已经是黄线了

现在我的线已经快黑了,赶紧禁了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1254935

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX