您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
通过劫持webpack4打包代码方法,暴露游戏内置变量到全局window.game
当前为
// ==UserScript== // @name 拉卡尼休(Rakanishu)暴露内置变量到全局 // @version 1.0 // @description 通过劫持webpack4打包代码方法,暴露游戏内置变量到全局window.game // @author DreamNya // @match https://g1tyx.github.io/rakanishu/ // @match https://yx.g8hh.com/rakanishu // @grant none // @run-at document-start // @license MIT // @namespace http://greasyfork.icu/users/809466 // ==/UserScript== /* 【原理详解】 webpack4打包代码劫持方法探究 https://bbs.tampermonkey.net.cn/thread-2950-1-1.html */ let value; let hooked = false; Object.defineProperty(window, "webpackChunkrakanishu", { get() { return value }, set(newValue) { value = newValue if (!hooked && window.webpackChunkrakanishu.push && window.webpackChunkrakanishu.push != window.Array.prototype.push) { window.webpackChunkrakanishu.realPush = window.webpackChunkrakanishu.push window.webpackChunkrakanishu.push = function (...args) { if (typeof args[0]?.[1]?.[952] == "function") { let fucText = args[0][1][952].toString() //replace去头+slice去尾 fucText = fucText.replace("(me,_e,L)=>{", "").slice(0, -1) //暴露闭包对象到全局 fucText = fucText.replace("function Pd(t,n,e,i,r){", "function Pd(t,n,e,i,r){if(!window.game && n?.[15]?.[15]?.[8].data){window.game=n[15][15][8].data}") //构造劫持函数 args[0][1][952] = new Function("me,_e,L", fucText) //劫持成功后还原劫持 this.push = this.realPush } this.realPush(...args) } hooked = true } } })