阻止 "阅读全文/readmore"

通过 GM_webRequest 阻止加载任何路径包含 readmore.js 的脚本文件。

  1. // ==UserScript==
  2. // @name 阻止 "阅读全文/readmore"
  3. // @name:en Block readmore.js Request
  4. // @namespace http://tampermonkey.net/
  5. // @version 1.0
  6. // @description 通过 GM_webRequest 阻止加载任何路径包含 readmore.js 的脚本文件。
  7. // @description:en Blocks requests to any script file whose path contains readmore.js using GM_webRequest.
  8. // @author AI Assistant & Your Name
  9. // @match *://*/*
  10. // @grant GM_webRequest
  11. // @run-at document-start
  12. // @icon https://www.google.com/s2/favicons?sz=64&domain=tampermonkey.net
  13. // @license MIT
  14. // ==/UserScript==
  15.  
  16. (function() {
  17. 'use strict';
  18.  
  19. // --- 配置 ---
  20. // 你可以在这里修改要阻止的脚本文件名或路径中的关键字
  21. const blockKeyword = 'readmore.js';
  22. // 是否在控制台输出阻止日志
  23. const enableLogging = true;
  24. // --- 配置结束 ---
  25.  
  26. // 检查 GM_webRequest 是否可用
  27. if (typeof GM_webRequest === 'undefined') {
  28. if (enableLogging) {
  29. console.error(`[阻止 ${blockKeyword}] 错误: GM_webRequest API 不可用。请确保您的用户脚本管理器(如 Tampermonkey)支持此功能,并且脚本已获得相应授权。`);
  30. }
  31. // 可以取消注释下一行以弹窗提示用户,但这可能会比较烦人
  32. // alert(`【${blockKeyword} 阻止脚本】需要 GM_webRequest API,您的环境可能不支持或未授权。`);
  33. return;
  34. }
  35.  
  36. if (enableLogging) {
  37. console.log(`[阻止 ${blockKeyword}] 脚本已启动,尝试添加规则以阻止包含 "${blockKeyword}" 的请求。`);
  38. }
  39.  
  40. // 定义 web 请求规则
  41. const rules = [
  42. {
  43. // 选择器:匹配所有 URL 路径中包含 blockKeyword 的请求
  44. // 语法 '*://*/*<keyword>*' 匹配任何协议、任何域名下,路径中包含 <keyword> 的 URL
  45. selector: `*://*/*${blockKeyword}*`,
  46. // 操作:取消(阻止)匹配到的请求
  47. action: { cancel: true }
  48. }
  49. ];
  50.  
  51. // 应用规则
  52. try {
  53. // GM_webRequest 的注册(不可用)函数本身可能返回一个包含 ruleId 的对象,或通过回调传递信息
  54. // Tampermonkey 文档建议使用回调方式处理结果
  55. GM_webRequest(rules, (info, message, details) => {
  56. // 这个回调主要用于确认规则添加/移除状态或报告错误
  57. // 它通常不会在每次请求被阻止时触发 (因为 action: { cancel: true } 直接处理了)
  58. if (message === 'ruleAdded') {
  59. if (enableLogging) {
  60. console.log(`[阻止 ${blockKeyword}] 规则添加成功: ${JSON.stringify(details.rule)} (ID: ${details.ruleId})`);
  61. }
  62. } else if (message === 'ruleRemoved') {
  63. if (enableLogging) {
  64. console.log(`[阻止 ${blockKeyword}] 规则已移除: ${JSON.stringify(details.rule)} (ID: ${details.ruleId})`);
  65. }
  66. } else if (message === 'error') {
  67. console.error(`[阻止 ${blockKeyword}] 应用规则时出错: ${details.error} - 规则: ${JSON.stringify(details.rule)}`);
  68. // alert(`应用请求阻止规则时出错: ${details.error}`);
  69. }
  70. // 注意:info, message, details 的具体内容和触发时机可能因用户脚本管理器和规则类型而异。
  71. // 对于 {cancel: true} 规则,主要关注 'ruleAdded' 和 'error' 消息。
  72. });
  73.  
  74. } catch (e) {
  75. console.error(`[阻止 ${blockKeyword}] 设置 GM_webRequest 时发生意外错误:`, e);
  76. alert(`【${blockKeyword} 阻止脚本】设置请求阻止规则时发生错误,请检查浏览器控制台获取详细信息。`);
  77. }
  78.  
  79. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址