您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Intercepts Kongregate Flash API fetch() request to return a modified version that will function properly
- // ==UserScript==
- // @name Kong Flash API Patcher
- // @version 1.2
- // @author Colin969
- // @description Intercepts Kongregate Flash API fetch() request to return a modified version that will function properly
- // @license MIT
- // @match *://*.konggames.com/games/*/*/frame/*
- // @match *://www.kongregate.com/games/*/*
- // @match *://www.kongregate.com/*/games/*/*
- // @match *://www.kongregate.com/accounts/*/card_album*
- // @run-at document-start
- // @grant none
- // @namespace https://greasyfork.org/users/1296974
- // ==/UserScript==
- (function() {
- 'use strict';
- // Create JS replacement funcs
- window.flashApiSendMessage = (opcode, parameters) => {
- setTimeout(() => {
- kongregateAPI.messageConnection.sendMessage(opcode, decodeURIComponent(parameters));
- });
- };
- window.flashApiBootstrap = (swfId, apiUrl) => {
- console.log('Flash setting up from ' + swfId);
- setTimeout(() => {
- function setGameSwf(){
- if (typeof kongregateAPI !== 'undefined') {
- // Ruffle doesn't have Play function, removed from check
- kongregateAPI._isSwf = function(e) {
- return e && void 0 !== e.setConnectionObject;
- };
- // Modified to check for ruffle-player, not just objects and embeds
- kongregateAPI._findSwf = function(e) {
- var t = document.getElementById(e),
- n = this,
- s = function(e) {
- for (var s = 0; s < e.length; s++)
- if (t = e[s], n._isSwf(t)) return t
- };
- return this._isSwf(t) ? t : t = s(document.getElementsByName(e)) || s(document.querySelectorAll("[id='" + e + "']")) || s(document.getElementsByTagName("object")) || s(document.getElementsByTagName("embed")) || s(document.getElementsByTagName("ruffle-player"))
- };
- setTimeout(function(){ kongregateAPI._setGameSwf(swfId); }, 1);
- return true;
- }
- }
- function loadKongregateApi() {
- var s = document.createElement('script');
- s.type ='text/javascript';
- s.src = apiUrl;
- if(s.addEventListener) {
- s.addEventListener('load', setGameSwf)
- } else if(s.readyState) {
- s.onreadystatechange = setGameSwf;
- }
- document.getElementsByTagName('head')[0].appendChild(s);
- }
- if (!setGameSwf()) {
- loadKongregateApi();
- }
- return 'pending';
- });
- return "pending";
- };
- // Replace fetch so we can capture the api
- const originalFetch = window.fetch;
- window.fetch = function(req, options) {
- try {
- let request = new URL(req instanceof Request ? req.url : req);
- if (request.href.includes("API_AS3_d43c4b859e74432475c1627346078677.swf") || request.href.includes("/flash/API_AS3.swf")) {
- request.href = "https://colin969.github.io/Kongregate-Patched-APIs/API_AS3_MODIFIED.swf";
- }
- if (request.href.includes("API_f99fa1a5a43e48224ae2c0177064456d.swf") || request.href.includes("/flash/API.swf")) {
- request.href = "https://colin969.github.io/Kongregate-Patched-APIs/API_AS2_MODIFIED.swf";
- }
- return originalFetch(request, options);
- } catch {
- // Ignore, just pass through
- return originalFetch(req, options);
- }
- };
- })();