您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Skrývá anonymní č****, které si nelze jinak zablokovat díky incestnímu správci.
// ==UserScript== // @name Facebook Fuck-Off Pseudoanonymní Mrdky. // @namespace http://tampermonkey.net/ // @version 6.7.0 // @description Skrývá anonymní č****, které si nelze jinak zablokovat díky incestnímu správci. // @description:en Hides anonymous members that cannot be blocked due to the incestuous admin. // @author Projekt Darkside - DevIT Brno - EU // @icon https://github.githubassets.com/images/icons/emoji/unicode/1f480.png // @license Darkside; // @match *://*.facebook.com/* // @grant none // @run-at document-idle // @require https://code.jquery.com/jquery-3.7.1.min.js // ==/UserScript== /* global $ */ (function () { 'use strict'; // Jméno Scriptu pro přehled v logování const USR_SCRIPT_NAME = " FCK ANONYMOUS "; // Vytvoříme si CSS design pro náš LOG v console const USR_CSS_SCRIPT_NAME = [ 'color: lime;', 'background: black;', 'font-size: 15px;', 'border: 1px solid red;', 'font-weight: bold;', ].join(';'); const USR_CSS_FUNC_NAME = [ 'color: red;', 'background: black;', 'font-size: 15px;', 'border: 1px solid red;', 'font-weight: bold;', ].join(';'); // Texty, které hledáme const Wlang = [ "Anonymous member", // Angličtina "Anonymní člen", // Čeština "Anonymný člen", // Slovenština "Membre anonyme", // Francouzština "Miembro anónimo", // Španělština "Anonymer Mitglied", // Němčina "Membro anonimo", // Italština "Membro anônimo", // Portugalština "Анонимный участник", // Ruština "匿名メンバー", // Japonština "Anonymní účastník", // Čeština (správně přeloženo) "Anonymný účastník", // Slovenština (správně přeloženo) "Membre anonyme", // Francouzština (překlad je stejný) "Miembro anónimo", // Španělština (překlad je stejný) "Anonymer Teilnehmer", // Němčina (správně přeloženo) "Membro anonimo", // Italština (překlad je stejný) "Membro anônimo", // Portugalština (překlad je stejný) "Анонимный участник", // Ruština (překlad je stejný) "匿名のメンバー" // Japonština (správně přeloženo) ]; // Texty, které hledáme pro různé jazyky (Komentář od) const anonymousLabels = [ "Anonymous member", // Angličtina "Anonymní člen", // Čeština "Anonymný člen", // Slovenština "Membre anonyme", // Francouzština "Miembro anónimo", // Španělština "Anonymer Mitglied", // Němčina "Membro anonimo", // Italština "Membro anônimo", // Portugalština "Анонимный участник", // Ruština "匿名メンバー", // Japonština "Anonymní účastník", // Čeština (správně přeloženo) "Anonymný účastník", // Slovenština (správně přeloženo) "Membre anonyme", // Francouzština (překlad je stejný) "Miembro anónimo", // Španělština (překlad je stejný) "Anonymer Teilnehmer", // Němčina (správně přeloženo) "Membro anonimo", // Italština (překlad je stejný) "Membro anônimo", // Portugalština (překlad je stejný) "Анонимный участник", // Ruština (překlad je stejný) "匿名のメンバー" // Japonština (správně přeloženo) ]; // Console logy v multilang :) const languageLabels = { en: { anonymousComment: "Comment from Anonymous member", hideSection: "Hidden anonymous member section on the main page", hideComment: "Hidden anonymous member comment section" }, cs: { anonymousComment: "Komentář od Anonymní člen", hideSection: "Skrytá sekce anonymního člena na hlavní stránce", hideComment: "Skrytá sekce anonymního člena v komentáři" }, sk: { anonymousComment: "Komentár od Anonymný člen", hideSection: "Skrytá sekcia anonymného člena na hlavnej stránke", hideComment: "Skrytá sekcia anonymného člena v komentári" }, fr: { anonymousComment: "Commentaire de membre anonyme", hideSection: "Section du membre anonyme masquée sur la page principale", hideComment: "Section du commentaire du membre anonyme masquée" }, es: { anonymousComment: "Comentario de miembro anónimo", hideSection: "Sección de miembro anónimo oculta en la página principal", hideComment: "Sección de comentario de miembro anónimo oculta" }, de: { anonymousComment: "Kommentar von Anonymer Mitglied", hideSection: "Verborgenes anonymes Mitgliederbereich auf der Hauptseite", hideComment: "Verborgener anonymer Mitgliederkommentarbereich" }, it: { anonymousComment: "Commento di membro anonimo", hideSection: "Sezione di membro anonimo nascosta nella pagina principale", hideComment: "Sezione di commento di membro anonimo nascosta" }, pt: { anonymousComment: "Comentário de membro anônimo", hideSection: "Seção de membro anônimo oculta na página principal", hideComment: "Seção de comentário de membro anônimo oculta" }, ru: { anonymousComment: "Комментарий от анонимного члена", hideSection: "Скрытая секция анонимного члена на главной странице", hideComment: "Скрытая секция комментария анонимного члена" }, ja: { anonymousComment: "コメントから匿名メンバー", hideSection: "メインページで非表示の匿名メンバーセクション", hideComment: "コメントセクションの匿名メンバーが非表示" } }; // Funkce pro detekci jazyka prohlížeče // Získá jazyk prohlížeče a vrátí jazykový kód (např. 'en' pro angličtinu, 'cs' pro češtinu). // Pokud není jazyk k dispozici, vrátí angličtinu jako výchozí jazyk. function getBrowserLanguage() { const language = navigator.language || navigator.userLanguage; // Získání jazyka prohlížeče const languageCode = language.substring(0, 2); // Extrahování prvních dvou znaků (jazykový kód) return languageLabels[languageCode] ? languageCode : 'en'; // Pokud jazyk existuje v našem seznamu, vrátí ho, jinak 'en' } // Funkce pro překlad textu podle detekovaného jazyka // Přijímá klíč (např. 'hideSection') a vrací odpovídající překlad v aktuálním jazyce prohlížeče. // Pokud není překlad k dispozici pro daný jazyk, použije angličtinu jako fallback. function translate(key) { const browserLanguage = getBrowserLanguage(); // Získání detekovaného jazyka return languageLabels[browserLanguage][key] || languageLabels['en'][key]; // Vrácení překladu, nebo angličtiny pokud není k dispozici } // Funkce pro skrytí anonymních členů podle textu začínajícího na "Anonymní člen" a následovaného číslem function hideAnonymousMembers() { // Regulární výraz pro hledání "Anonymní člen" následovaného číslem const anonPattern = new RegExp('^' + Wlang.join('|') + '\\s+\\d+$'); // Například: Anonymní člen 868 // Pro každý text, který hledáme $.each(Wlang, function (index, ExistedWords) { document.querySelectorAll('div[role="button"]').forEach(button => { if (anonPattern.test(button.innerText.trim())) { let parentDiv = button.closest('div'); // Změněno na closest() // Pokud chceš jít výš, změníš číslo v nth-of-type // Tato část ladí dynamiku webu for (let i = 0; i < 15; i++) { if (parentDiv && parentDiv.parentElement) { parentDiv = parentDiv.parentElement; } } // Skrytí divu if (parentDiv) { parentDiv.style.display = 'none'; console.log('%c ' + USR_SCRIPT_NAME + ' %c ' + translate('hideSection') + ': ', USR_CSS_SCRIPT_NAME, USR_CSS_FUNC_NAME, parentDiv); } } }); }); } // Funkce pro skrytí komentářů s atributy aria-hidden a role="link" obsahujících anonymní text function hideAnonymousComments() { // Pro každý jazyk v anonymousLabels $.each(anonymousLabels, function (index, label) { // console.log(`Hledám divy s aria-label začínající na: ${label}`); // Hledáme divy podle aria-label document.querySelectorAll('div[aria-label^="' + label + '"][role="article"]').forEach(link => { console.log('Nalezený prvek:', link); let targetDiv = link.closest('div'); // Začínáme u aktuálního divu console.log('Začínáme od divu s closest:', targetDiv); // Procházíme rodiče zpětně (max. 15 kroků) for (let i = 0; i < 2; i++) { if (targetDiv && targetDiv.parentElement) { targetDiv = targetDiv.parentElement; // Procházíme rodiče console.log(`Procházím rodiče: ${targetDiv}`); } else { console.log('Nenalezen více rodičů'); break; // Když nejsou žádní rodiče } } // Skrytí divu if (targetDiv) { // targetDiv.style.display = 'none'; // Skrytí divu targetDiv.remove(); // Smazání divu console.log('%c ' + USR_SCRIPT_NAME + ' %c ' + translate('hideComment') + ': ', USR_CSS_SCRIPT_NAME, USR_CSS_FUNC_NAME, parentDiv); } else { console.log('Nenašel jsem žádný platný rodič'); } }); }); } // Spustí skenování každé 2 sekundy pro dynamické změny setInterval(() => { hideAnonymousMembers(); // Skrytí anonymních členů hideAnonymousComments(); // Skrytí anonymních komentářů }, 1500); // První skrytí při načtení hideAnonymousMembers(); hideAnonymousComments(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址