您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Block users on a website by clicking a button
当前为
// ==UserScript== // @name Block_Zhihu_Users // @namespace your-namespace // @version 1.1 // @description Block users on a website by clicking a button // @match https://www.zhihu.com/question/* // @grant GM_addStyle // ==/UserScript== (function () { 'use strict'; function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } let executedUrls = []; async function blockUsers() { console.log('blockUsers...') let arr = document.querySelectorAll("div.ContentItem-meta > div.AuthorInfo.AnswerItem-authorInfo.AnswerItem-authorInfo--related") console.log(`加载完成...arr:${arr.length}`) let k = 0; let count = 0; let index = 0; for (let a of arr) { index += 1; let userUrl = null; try { let crr = a.querySelectorAll("a"); if (crr.length == 0) { k++; a.parentElement.parentElement.parentElement.remove(); } else { userUrl = crr[0].href; } } catch (e) { //a.remove(); continue; } let end = index >= arr.length - k - 3; let urlToken = ''; try { urlToken = userUrl.substring(userUrl.lastIndexOf('/') + 1); } catch (e) { console.log(`err:url:${userUrl}`); continue; } if (executedUrls.includes(urlToken)) { //console.log(`${index}/${arr.length}:Skipping ${userUrl} as it has already been blocked`); console.log(`${index}/${arr.length}`); try { let b = a.parentElement.parentElement.parentElement.parentElement; if (end) { b.style = 'display:none'; } else { b.remove(); } } catch (e) {} continue; } // 检查是否已执行过该 urlToken if (localStorage.getItem(urlToken)) { //console.log(`${index}/${arr.length}:Skipping ${userUrl} as it has already been blocked`); console.log(`${index}/${arr.length}`); try { let b = a.parentElement.parentElement.parentElement.parentElement; if (end) { b.style = 'display:none'; } else { b.remove(); } } catch (e) {} continue; } console.log(`${index}:${count}/${arr.length},屏蔽用户:${userUrl}`); const response = await fetch(`/api/v4/members/${urlToken}/actions/block`, { method: 'POST', headers: new Headers({ 'x-xsrftoken': document.cookie.match(/(?<=_xsrf=)[\w-]+(?=;)/)[0], }), }); try { let b = a.parentElement.parentElement.parentElement.parentElement; if (end) { b.style = 'display:none'; } else { b.remove(); } } catch (e) {} count += 1; executedUrls.push(urlToken); localStorage.setItem(urlToken, 'blocked'); // 将已执行过的 urlToken 存入 localStorage await sleep(200); } //debugger if (arr.length === 0 || executedUrls.length === 0 || executedUrls.length === arr.length) { console.log('No more data or all urlTokens have been blocked. Simulating page scroll to load more data...'); showMessage(`Block ${count} users,total:${executedUrls.length}! \n No more data or all urlTokens have been blocked. Click button or page scroll to load more data...`); } // 移动鼠标到最下面 //window.scrollTo(0, document.body.scrollHeight); window.focus(); // 聚焦到当前页面 for (let i = 0; i < 5; i++) { const event = new KeyboardEvent('keydown', { key: 'G', code: 'KeyG', shiftKey: true }); document.dispatchEvent(event); await sleep(10); } } // 创建消息框元素 function createAlertElement() { var alertElement = document.createElement('div'); alertElement.setAttribute('id', 'alert-box'); alertElement.style.display = 'none'; GM_addStyle(` #alert-box { position: fixed; top: 0; left: 0; width: 100%; padding: 10px; background-color: #f44336; color: white; font-size: 18px; text-align: center; z-index: 9999; opacity: 0; transition: opacity 0.3s ease-in-out; } #alert-box.show { opacity: 1; } `); document.body.appendChild(alertElement); return alertElement; } // 弹出消息框 function showMessage(message, timeout) { var alertElement = document.getElementById('alert-box') || createAlertElement(); alertElement.textContent = message; alertElement.style.display = 'block'; alertElement.classList.add('show'); setTimeout(function () { alertElement.classList.remove('show'); setTimeout(function () { alertElement.style.display = 'none'; }, 300); }, timeout || 1000); } // 创建悬浮按钮元素 const button = document.createElement('button'); button.textContent = '屏蔽用户'; button.style.position = 'fixed'; button.style.bottom = '20px'; button.style.right = '20px'; button.style.zIndex = '9999'; button.style.padding = '10px 20px'; button.style.border = 'none'; button.style.borderRadius = '10px'; button.style.color = '#fff'; button.style.fontSize = '16px'; button.style.fontWeight = 'bold'; button.style.background = 'red'; button.style.cursor = 'pointer'; // 添加点击事件监听器 button.addEventListener('click', async() => { await blockUsers(); }); // 将按钮添加到页面中 document.body.appendChild(button); document.addEventListener('keydown', async function (event) { if (event.key === 'b' || event.key === 'B') { await blockUsers(); } }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址