您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
移除手机版的123读书网中的广告,如果有同种类型的广告的网站可以适配到该脚本中。
// ==UserScript== // @name 123读书网去广告 // @namespace https://github.com/RANSAA // @version 0.0.3 // @description 移除手机版的123读书网中的广告,如果有同种类型的广告的网站可以适配到该脚本中。 // @author sayaDev // @license MIT License // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAHD0lEQVR4nNWaXWwUVRTHz+zsR3eh3Q9rWyiWEkFNFCgvRKMGXkwgmkBJCA8QqeEVA01oeQQe2ZIUAk8mhiISozHyEQ2oUZcHHyQxVvABBONaWShlW1ra/eru7PV/tp1hZ3ZmO7vdNvGXbPbcO7Mz53/vueeemVaiGiD6+wOTirJNEqJdCLFZELXjwu1UBPqiEn8kKSIkKVovy5el7u5xHJoXuGZ1sNNPs9m9MLtwkQ58V4wgGsTXQIPLda5aMbh3ZaT6+9tzudyBvBBd+HEAXfMGQsYdkjTgdDpPebu7o1QB8ME+k319R+D4QfyoJo4bmRVysr6n5xiatpDwmZOpcLhDITqLkzvQXHAgZNDtcnXamQ34VJ6n4XAXLtiPEwNolkVunX4ot2a8juXTAcmTJ6kuj144lHaQyDgo/8A9rsQ8KSXmXobusuCe47hnd0Nv7wCVAedYw84TRh4fS5yr08PO1xItzhcymsNzwYJy/3oo+0vDkPLQ1YaucnxQToSlgLmcdzRPj3s2TwScbRm0qic35KHMD8HhfNzZgqYVliJMBZRzXpIpVffuaN75cmoJmjUjd8ebSH3zHJFC5td1ODobDh26BEtHiYDZBfsTDgTQ1CH5c2Pe7aMhuSmLVu1RRlyU/rIxlk/IrWjqEFgTWNgbjAsbfuqZCId/Q2cHTB3DXpG81Zzz7dj5CK2Fg9dH4pOmMTHhDKGpAyIG/b29G2BqwNdnTBw/fhRb/RGYOnjkvwuI0PWfg7Rx4wTt3v0QvQtHQcRHy8ZERioVIcQx/+HDR2kWTQDvsNPZLI9+AE0NSRZp756ROg6bCxeW0Y0b/kURweGU/LQ5YVwTwhBK8HeGyXD4JA4egKmjbvsoudakYM2wmCIKC/vKczoBTPEsFATMFmZ/o6EbfU6VS94f0fUxiykicbalJMVioMdRAK7iAhA+I/b7+g6iFO6HqcO76zFZ5fnFEsH7ROrz52GVUNgbZgSYZB7eYb2dcZ1yI6qILVvitHVrHD0LQ/JC85DyQL9jYxYKGUni8JnMZp+gT4cx9q24erWRNm16Qj4fdo8Fwmot1LtcQclq11364QPbtQ1z/34dnTnzAq1dO6ULKe6/eLEJ1gyhUJY6O0cqEsxpder0clgGsDtLZtlHbsvEfbseN8K0BTvJzqdSMlqkWxc8Q9euNVJra4a8XoXu3fPBTlNvb5QqIXm++S9l2PUiTA3ORjwDESLahI+G+/XJtOftiTqYc6I6zwlt//4hun49WFgXHFY7djzSBPCxNWuSFImECjOitu2S+TEYnf51STvpuS5hAXP6bKci7MY/ozq4b1+M1q2bRA9ROLyKYjEPnTp1WzuuOnz3rg+C27S2XbJ/LKH01SCsZwh+SYAZwLeecunTiNFB5vTptkKo1FKAVTo1FeDb+4i4dLCD0UHmfymAF6bXO5O1OHx4QddSQKE2OtcMS4+pgGpCSM0yTCxWBwGOmgqwnAEs4qhEtBK2RjWLuNihhQih7M2lyfS3AR9MDUH0D89AhAxp1PPGZNr9lr00anSQMRPAKZVnKRIJ0q1b9dTTE6UVK9I42x6WaXS+G5nqoJUANe8Xo+4RlZA413w7P+J6BaaGupF10TxKidFRF42NuQqjq5YHvLnxGmBByaRc2Ni4zYt89epkRSPPlC0l5lvMVQtXsoxacpQj96cvkbocMi/m8E1P+/oGMR/rYWpUEkbVwAJ4ZorrJivMwock6feGnp6OgoBqHmhqgR0RVukTPHug4TDCI2UUDT+aGlaPlLVkLhGJj1vu58ecK2BqCIw5HinbtUdKxiwbMd5tYwnnS8mS+KslViJyd3wjqSshfQoDnH10D/XM7GuVQXT40XyGLFK+PSNeu6VFtRhFcOmQON80JeWlpTisgUGewGuVjpLXKky5F1sIpZCdtDofVBGb3nxC7zx0xmlaKkkixaPP6AQwZhmJWSwRX33RTK/GXPHlOSpxnmYzDyyNEgGzL3cjOOBHU49PmfLtjC9dqHDisEl+1mQ+8giQ4tBRgZ+lWO3OjJBF0vfeE1Hrhc0LNvl10GeMeQ3surZer6uUE8Fwiq3ZHzi+D5akSgOFnE8mWApg5hLByMszQ66NU20V/4npri+ZvemNKw88begqh6XzTFkBzNMTJ7aLfH4AJ5auCQMsRm7Nuh2N0y2SHyupCDEhU37EHcUf+BRl2K17PWKGQMxLDkeXWdgUA7/mhveIbC53ySw7LQjINi6nc7txwZphS4AK7xO4+EH8yI9mzeFRxyCdLM7zcwFfKoNnI5fNHszP/I9ETYSojrvd7gE7o14MfKiOQgGYy3XhAl24+Xp0VQ5CBb89ibr+Ehdm6KkY3H/+sJhJRdksFKUDpchmjGg7LrwShzQEP4DjTRpKgYgky4P1shyp1uli/gOacxHqmpNmgQAAAABJRU5ErkJggg== // @match *://m.123dua.com/* // @grant none // @compatible chrome // @compatible edge // @compatible firefox // @compatible opera // @compatible safari // @run-at document-end // ==/UserScript== /** * 说明: * * noframes: 禁止脚本在iframe中运行 * * compatible:gf.qytechs.cn脚本站点兼容性图标 * * run-at document-end:在文档结束时执行,但是在页面上的资源如图片和样式表加载完成之前。在DOM完全解析后立即执行。 * **/ const name = '123读书网去广告:'; (function() { 'use strict'; removeAD(); })(); function removeAD(){ // //移除顶部悬浮广告 // removeStyleFlexAD() // //移除底部ID为“nsws”的广告DIV标签 // removeAllDivWithID("nsws"); removeAllDIVNodesWithSpecifiedID(); removeAllDynamicStyleNodes(); } //----------------------------------------------------------------------------------------remove id div---------------------------------------------------------------------------------------- /** * 删除所有指定id的DIV节点 **/ function removeAllDIVNodesWithSpecifiedID(){ //移除底部ID为“nsws”的广告DIV标签 removeDIVNodeWithID("nsws"); } /** * 删除指定ID的DIV节点 **/ function removeDIVNodeWithID(id){ var divID = id; var isRemove = false; var allElements = document.querySelectorAll('*'); for (var i = allElements.length - 1; i >= 0; i--) { if (allElements[i].id === divID) { console.log(name+"移除id为:"+divID+"的DIV标签") console.log(allElements[i]) allElements[i].remove(); isRemove = true; } } if (!isRemove) { //console.log(name+"没有找到id为:"+id+"的DIV标签"); } } //----------------------------------------------------------------------------------------remove id div---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------remove style---------------------------------------------------------------------------------------- /** * 移除所有动态的style节点 */ function removeAllDynamicStyleNodes(){ //移除顶部悬浮广告 //123读书网动态广告style内容匹配正则表达式 const styleContentRegex1 = /body{margin: 0px;}#(\w+) ~ \.(\w+){display: block; width: 10%; position: fixed; z-index: 2147483646;}#(\w+) ~ /; removeStyleWithRegex(styleContentRegex1); //移除123读书网顶部悬浮广告 - 弃用的正则表达式 const styleContentRegex1_Deprecation = /body{margin-top:120px;padding-top:0 !important;}#(\w+){display:flex;}/; removeStyleWithRegex(styleContentRegex1_Deprecation); const styleContentRegex2 = /#(\w+) ~ \.(\w+){background-image: url\(/; removeStyleWithRegex(styleContentRegex2); //动态节点可能是由其它JS动态生成,所以想要移除,需要多次重复执行 //每0.2秒执行一次,共执行10次 let count = 0; const interval = setInterval(() => { // 执行目标函数 if (count > 2) { removeStyleWithRegex(styleContentRegex1); removeStyleWithRegex(styleContentRegex1_Deprecation); removeStyleWithRegex(styleContentRegex2); } count++; if (count >= 12) { clearInterval(interval); // 停止定时器 } }, 200); } /** * 利用正则表达式动态匹配style并删除style节点 **/ function removeStyleWithRegex(styleContentRegex){ // 指定要匹配的样式内容的正则表达式,例如匹配包含 ".target-class" 的样式 // const styleContentRegex = /body{margin: 0px;}#(\w+) ~ \.(\w+){display: block; width: 10%; position: fixed; z-index: 2147483646;}#(\w+) ~ /; // 获取所有 <style> 标签 const styleTags = document.querySelectorAll('style'); var isRemove = false; // 遍历每个 <style> 标签 styleTags.forEach(styleTag => { // 检查 <style> 标签的内容是否匹配正则表达式 if (styleContentRegex.test(styleTag.innerHTML)) { // 如果匹配,则移除该 <style> 标签 styleTag.remove(); isRemove = true; console.log(name+"查找到了动态AD style:") console.log(styleTag) // 获取并输出匹配的 <style> 标签的 id 属性 const styleId = styleTag.getAttribute('id'); console.log(name, "匹配的 <style> 标签 ID:", styleId); // 获取 <style> 标签中的所有类名(形如 .zXzyCei) const classRegex = /\.(\w[-\w]*)/g; const classes = [...styleTag.innerHTML.matchAll(classRegex)].map(match => match[1]); console.log(name, "style中匹配到的Class名称:", classes); classes.forEach( className => { //console.log(className); removeAllTagWithClass(className); }) // 获取 <style> 标签中的所有 ID 选择器(形如 #VoUnOkp) const idRegex = /#(\w[-\w]*)/g; const ids = [...styleTag.innerHTML.matchAll(idRegex)].map(match => match[1]); console.log(name, "style中匹配到的ID名称:", ids); ids.forEach( idName => { //console.log(idName); removeAllTagWithID(idName); }) } }); if (!isRemove) { //console.log(name+"动态AD style查找失败!"); } } //----------------------------------------------------------------------------------------remove style---------------------------------------------------------------------------------------- /** * 移除所有targetId的标签 */ function removeAllTagWithID(targetId){ //检查输入的ID选择器是否有效 if (!/^[a-zA-Z_]/.test(targetId)) { return; } // // 使用模板字符串构造选择器 // const divs = document.querySelectorAll(`div#${targetId}`); // // 遍历并移除每个匹配的 <div> 标签 // divs.forEach(div => div.remove()); // 使用模板字符串构造选择器,选择所有具有该 ID 的元素 const elements = document.querySelectorAll(`#${targetId}`); // 遍历并移除每个匹配的元素 elements.forEach(element => element.remove()); } /** * 移除所有targetClass的标签 **/ function removeAllTagWithClass(targetClass){ // 使用模板字符串构造选择器,选择所有具有该类名的元素 const elements = document.querySelectorAll(`.${targetClass}`); // 遍历并移除每个匹配的元素 elements.forEach(element => element.remove()); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址