修复模板字面量吃掉正则反斜杠: \\d{6,} 改为 [0-9]{6,}

- 引导脚本为 TS 模板字面量, 编译时 \\d 被当作无效转义吞掉反斜杠,
  运行时正则退化为字面量 d{6,} 永不匹配, 动态id泛化从未真正生效
- 此前端到端验证直接注入源码原文绕过了模板编译, 故未暴露
- 改用 [0-9] 从根源规避转义问题; 已用 bundle 提取的真实运行时脚本验证通过
This commit is contained in:
yu 2026-11-05 12:24:56 +08:00
parent 3e4ded9f5f
commit 4af6bd0693

View File

@ -298,7 +298,7 @@ export class BrowserSession implements BrowserLike {
const stable = (item) => {
if (item.id) {
// 长数字结尾的唯一 id 多为动态记录 id(如淘宝 item_id_1087512368188),泛化为前缀匹配以命中所有同类卡片
const dynamic = /^(.*?[-_])\d{6,}$/.exec(item.id);
const dynamic = /^(.*?[-_])[0-9]{6,}$/.exec(item.id);
if (dynamic) {
const generalized = '[id^="' + cssEscape(dynamic[1]) + '"]';
try { if (root.querySelectorAll(generalized).length >= 1) return generalized; } catch {}
@ -1298,7 +1298,7 @@ const PICKER_BOOTSTRAP_SOURCE = `(() => {
const stable = (item) => {
if (item.id) {
// 长数字结尾的唯一 id 多为动态记录 id(如淘宝 item_id_1087512368188),泛化为前缀匹配以命中所有同类卡片
const dynamic = /^(.*?[-_])\d{6,}$/.exec(item.id);
const dynamic = /^(.*?[-_])[0-9]{6,}$/.exec(item.id);
if (dynamic) {
const generalized = '[id^="' + cssEscape(dynamic[1]) + '"]';
try { if (root.querySelectorAll(generalized).length >= 1) return generalized; } catch {}