X/ Twitter 清空收藏夹,浏览器打开 https://x.com/i/history 登录 F12 控制台执行:
(async () => { const sleep = ms => new Promise(r => setTimeout(r, ms)); const KEY = 'bm_removed_total_v3'; let removed = +(sessionStorage.getItem(KEY) || 0); const before = removed; let idle = 0, skipped = 0; while (idle < 10) { const students = [...document.querySelectorAll('button[data-testid="removeBookmark"]')]; const btn = students.find(b => { const row = b.closest('article, [data-testid="cellInnerDiv"]'); return row && !row.dataset.bmSkip; }); if (!btn) { if (students.length > 0) break; // 剩下的都是失败跳过项 idle++; const el = document.scrollingElement; el.scrollTop = el.scrollHeight; await sleep(2500); continue; } idle = 0; const row = btn.closest('article, [data-testid="cellInnerDiv"]'); btn.click(); let ok = false; for (let i = 0; i < 12 && !ok; i++) { // 最多等 3 秒确认状态变化 await sleep(250); ok = !document.contains(row) || !row.querySelector('button[data-testid="removeBookmark"]'); } if (ok) { removed++; sessionStorage.setItem(KEY, removed); if (removed % 10 === 0) console.log('累计已取消 ' + removed + ' 条'); } else { row.dataset.bmSkip = '1'; skipped++; console.warn('有一条取消后状态没变,已标记跳过(可能是限流),稍后可重跑'); } } console.log('本轮取消 ' + (removed - before) + ' 条,累计 ' + removed + ' 条,失败跳过 ' + skipped + ' 条'); console.log('请刷新页面确认;如果还有书签,再跑一遍即可'); })();收藏支持反对打赏个性签名vps.gift | vps.gripe
我缺的不是脚本,是收藏夹内容~
批量执行前最好先确认确实不需要这些收藏,脚本里的间隔也可以适当调大,避免触发平台限流。
共 1 条回复好
来支持一下
个性签名搏一搏,单车变摩托,赌一赌,摩托变路虎。不怕输的苦,就怕断了赌。小赌养家糊口,大赌发家致富!
bd
倒是 Telegram 被杜叔叔冻结过(申诉回来了