NGA Agent

非常时期的非常手段

目前為 2022-10-06 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name NGA Agent
  3. // @namespace https://gf.qytechs.cn/users/263018
  4. // @version 1.2.4
  5. // @author snyssss
  6. // @description 非常时期的非常手段
  7. // @license MIT
  8.  
  9. // @match *://bbs.nga.cn/*
  10. // @match *://ngabbs.com/*
  11. // @match *://nga.178.com/*
  12.  
  13. // @noframes
  14. // ==/UserScript==
  15.  
  16. (({ commonui: ui }) => {
  17. !function(t,r){for(var n in r)t[n]=r[n]}(window,function(t){function r(e){if(n[e])return n[e].exports;var o=n[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n={};return r.m=t,r.c=n,r.i=function(t){return t},r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:e})},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,"a",n),n},r.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},r.p="",r(r.s=2)}([function(t,r,n){"use strict";function e(t,r){var n={};for(var e in t)n[e]=t[e];return n.target=n.currentTarget=r,n}function o(t,r){function n(r){return function(){var n=this.hasOwnProperty(r+"_")?this[r+"_"]:this.xhr[r],e=(t[r]||{}).getter;return e&&e(n,this)||n}}function o(r){return function(n){var o=this.xhr,i=this,u=t[r];if("on"===r.substring(0,2))i[r+"_"]=n,o[r]=function(u){u=e(u,i),t[r]&&t[r].call(i,o,u)||n.call(i,u)};else{var c=(u||{}).setter;n=c&&c(n,i)||n,this[r+"_"]=n;try{o[r]=n}catch(t){}}}}function i(r){return function(){var n=[].slice.call(arguments);if(t[r]){var e=t[r].call(this,n,this.xhr);if(e)return e}return this.xhr[r].apply(this.xhr,n)}}return r=r||window,r[c]=r[c]||r.XMLHttpRequest,r.XMLHttpRequest=function(){for(var t=new r[c],e=0;e<a.length;++e){var f="on"+a[e];void 0===t[f]&&(t[f]=null)}for(var s in t){var l="";try{l=u(t[s])}catch(t){}"function"===l?this[s]=i(s):Object.defineProperty(this,s,{get:n(s),set:o(s),enumerable:!0})}var h=this;t.getProxy=function(){return h},this.xhr=t},Object.assign(r.XMLHttpRequest,{UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4}),r[c]}function i(t){t=t||window,t[c]&&(t.XMLHttpRequest=t[c]),t[c]=void 0}Object.defineProperty(r,"__esModule",{value:!0});var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};r.configEvent=e,r.hook=o,r.unHook=i;var c="__xhr",a=r.events=["load","loadend","timeout","error","readystatechange","abort"]},,function(t,r,n){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ah=void 0;var e=n(0);r.ah={hook:e.hook,unHook:e.unHook}}]));
  18. //# sourceMappingURL=ajaxhook.core.min.js.map
  19.  
  20. // User Agent
  21. const USER_AGENT = "Nga_Official/80024(Android12)";
  22.  
  23. // RedirectUri
  24. const redirectUri = (() => {
  25. const params = new URLSearchParams(location.search);
  26.  
  27. return params.get("redirectUri");
  28. })();
  29.  
  30. // Skip
  31. if (!document.title) {
  32. return;
  33. }
  34.  
  35. // Hook
  36. const hooked = (() => {
  37. if (location.pathname === "/") {
  38. ah.hook(
  39. {
  40. open: (args, xhr) => {
  41. xhr._url = args[1];
  42.  
  43. return false;
  44. },
  45. send: (_, xhr) => {
  46. const url = xhr._url || "";
  47.  
  48. if (url.indexOf("/") === 0 || url.indexOf(location.host) >= 0) {
  49. xhr.setRequestHeader("X-User-Agent", USER_AGENT);
  50. }
  51.  
  52. return false;
  53. },
  54. },
  55. ui._w
  56. );
  57.  
  58. const f = __NUKE.doRequest;
  59.  
  60. __NUKE.doRequest = (args) => {
  61. if (args.u.a) {
  62. return f(args);
  63. }
  64.  
  65. return f({
  66. ...args,
  67. xr: 1,
  68. u: {
  69. u: args.u,
  70. },
  71. });
  72. };
  73.  
  74. return true;
  75. }
  76.  
  77. return false;
  78. })();
  79.  
  80. // Redirect
  81. if (!hooked && redirectUri === null) {
  82. location.href = `/?redirectUri=${encodeURI(location.href)}`;
  83. return;
  84. }
  85.  
  86. // Clear body event
  87. (() => {
  88. const temp = document.createElement("DIV");
  89.  
  90. temp.append(...document.body.childNodes);
  91.  
  92. document.body.outerHTML = document.body.outerHTML;
  93. document.body.innerHTML = "";
  94. document.body.append(...temp.childNodes);
  95. })();
  96.  
  97. // Reload lib
  98. __SCRIPTS.syncLoad("forum", "loaderRead", () => {
  99. if (_LOADERREAD) {
  100. _LOADERREAD.init();
  101.  
  102. // Reload page
  103. if (redirectUri) {
  104. ui.htmlLoader.go(33, {
  105. url: encodeURI(decodeURI(redirectUri)),
  106. });
  107. }
  108. }
  109. });
  110. })(window);

QingJ © 2025

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