您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Cache les informations sensibles de l'onglet "Admissions" à l'écran (nom, prénom, établissements, formation ..), permet de screen sans divulguer d'infos perso
// ==UserScript== // @name ParcourSup Obfuscate // @namespace http://tampermonkey.net/ // @version 0.2 // @description Cache les informations sensibles de l'onglet "Admissions" à l'écran (nom, prénom, établissements, formation ..), permet de screen sans divulguer d'infos perso // @author ypetit // @license GNU GPLv3 // @match https://dossierappel.parcoursup.fr/Candidat/authentification // @match https://dossierappel.parcoursup.fr/Candidat/admissions?ACTION=0 // @match https://dossier.parcoursup.fr/Candidat/authentification // @match https://dossier.parcoursup.fr/Candidat/admissions?ACTION=0 // @icon https://www.google.com/s2/favicons?sz=64&domain=parcoursup.fr // @grant GM_addStyle // ==/UserScript== (function() { 'use strict'; document.querySelector(".psup-user-menu-btn--logged").innerHTML = "<Prénom NOM>"; document.querySelectorAll(".psup-wish-card__school").forEach(e => {e.innerHTML = "<Ecole/Université>";}); document.querySelectorAll(".psup-wish-card__course").forEach(e => {e.innerHTML = "<Formation>";}); document.querySelectorAll("#parcoursimple tbody td:first-child").forEach(e => {e.innerHTML = "<Ecole/Université>";}); document.querySelectorAll("#parcoursimple tbody td:nth-child(2)").forEach(e => {e.innerHTML = "<Formation>";}); GM_addStyle ( ` input.fr-input, .psup-user-menu-btn--logged, .psup-wish-card__school, .psup-wish-card__course, #parcoursimple tbody td:first-child, #parcoursimple tbody td:nth-child(2) { color: transparent; text-shadow: 0 0 10px #000; } ` ); function waitForKeyElements(selectorTxt, actionFunction, bWaitOnce) { let btargetsFound; const targetNodes = document.querySelectorAll(selectorTxt); if (targetNodes && targetNodes.length > 0) { btargetsFound = true; // Found target node(s). Go through each and act if they are new. targetNodes.forEach((e) => { const jThis = e; if (!jThis.alreadyFound) { //--- Call the payload function. if (actionFunction(jThis)) btargetsFound = false; else jThis.alreadyFound = true; } } ); } else btargetsFound = false; //--- Get the timer-control variable for this selector. const controlObj = waitForKeyElements.controlOb || {}; const controlKey = selectorTxt.replace(/\W/g, "_"); const timeControl = controlObj[controlKey]; //--- Now set or clear the timer as appropriate. if (btargetsFound && bWaitOnce && timeControl) { //--- The only condition where we need to clear the timer. clearInterval(timeControl); delete controlObj[controlKey] } else if (!timeControl) { controlObj[controlKey] = setInterval(() => waitForKeyElements(selectorTxt, actionFunction, bWaitOnce), 100); } waitForKeyElements.controlObj = controlObj; } function blur(jNode) { jNode.style.color = "transparent"; jNode.style["text-shadow"] = "0 0 10px #000"; } waitForKeyElements(".psup-user-menu-btn--logged", blur, true); waitForKeyElements("ul.fr-menu__list li p", blur, true); })();