whatsapp, web 版本 localStorage,怎么获取用户昵称。

62 天前
 ifoto

web 版本 localStorage ,存了用户昵称。

但是 key 是动态生成的。本人愚钝,没 debug 出来。有大佬能指点一二吗

1000 次点击
所在节点    程序员
5 条回复
eBMm8zIi0Zq3
62 天前
建议把 localStorage 的 key 全读出来,然后把没用的都去了,剩下的就是昵称了,昵称是以"开头的,其余以"开头的类似于"ACCEPTED"可以去掉
eBMm8zIi0Zq3
62 天前
让 GPT 写了下,在我这是可行的

function extractNicknames() {
const nicknames = [];

const bannedValues = new Set([
'', 'true', 'false', 'null', 'undefined',
'ACCEPTED', 'NOT_ACCEPTED'
]);

for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
const value = localStorage.getItem(key);

if (
typeof value === 'string' &&
value.startsWith('"') &&
value.endsWith('"')
) {
const inner = value.slice(1, -1); // 去除引号

// 排除无效值
if (
bannedValues.has(inner) ||
inner.includes('@') ||
inner.includes(':') ||
inner.includes('/') ||
inner.includes('=') ||
/^[\d_]+$/.test(inner) || // 全数字或下划线
/^unknown[-\d]+$/.test(inner) || // unknown-123
/^en_[A-Z]{2}$/.test(inner) // en_US
) {
continue;
}

// 可能的昵称:包含字母,允许空格、连字符、撇号
if (/^[A-Za-z][A-Za-z\s\-']{1,30}$/.test(inner)) {
nicknames.push(inner);
}
}
}

return nicknames;
}

// 调用
console.log(extractNicknames());
ifoto
62 天前
@eBMm8zIi0Zq3 我这不行
eBMm8zIi0Zq3
51 天前
ifoto
43 天前
谢谢,用别的办法取到了

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

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

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

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

© 2021 V2EX