您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
it can hook all ajax
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/372706/932799/Hook%20all%20ajax.js
- // ==UserScript==
- // @name Hook all ajax
- // @namespace https://gitee.com/HGJing/everthing-hook/
- // @version 0.1.018
- // @description it can hook all ajax
- // @include *
- // @require https://gf.qytechs.cn/scripts/372672-everything-hook/code/Everything-Hook.js?version=632910
- // @author Cangshi
- // @match *://*/*
- // @run-at document-start
- // @grant none
- // ==/UserScript==
- (function (global) {
- 'use strict';
- if (global.eHook) {
- global.eHook.plugins({
- name: 'NetHook',
- /**
- * 插件装载
- * @param util
- */
- mount: function (util) {
- var cbObject = {
- resp: {},
- parseScript: function (m, args) {
- if (args[0].localName !== 'script') {
- return;
- }
- var src = decodeURI(args[0].src);
- var isPass = true;
- if (ajaxObject.filterPatten) {
- isPass = util.urlUtils.urlMatching(src, ajaxObject.filterPatten);
- }
- if (!isPass || !ajaxChange.cb.req) {
- return;
- }
- var urls = src.split(',');
- if (urls.length > 1) {
- return;
- }
- args[0].requestParams = util.urlUtils.getParamFromUrl(src);
- args[0].requestUrl = util.urlUtils.getUrlWithoutParam(src);
- ajaxChange.cb.req.call(this, args[0], util);
- var aimedUrl = util.urlUtils.margeUrlAndParams(args[0].requestUrl, args[0].requestParams);
- if (aimedUrl !== src) {
- args[0].src = aimedUrl;
- }
- var cbName = undefined;
- args[0].requestParams.map(function (kv) {
- if (kv.key.toLowerCase() === 'cb' || kv.key.toLowerCase() === 'callback') {
- cbName = kv.value;
- }
- });
- if (!cbName || !ajaxChange.cb.resp) {
- return;
- }
- if (window[cbName]) {
- global.eHook.removeHookMethod(window, cbName);
- global.eHook.hookBefore(window, cbName, function (m, args) {
- ajaxChange.cb.resp.call(window, args, util);
- // console.log('Hooking call back: ' + cbName + ' success.')
- }, false);
- } else {
- var isDelete = false;
- try {
- isDelete = delete window[cbName]
- } catch (e) {
- isDelete = false;
- }
- if (isDelete) {
- Object.defineProperty(window, cbName, {
- set: function (v) {
- global.eHook.unHook(cbObject.resp, cbName, true);
- cbObject.resp[cbName] = v;
- global.eHook.hookBefore(cbObject.resp,
- cbName, function (m, args) {
- ajaxChange.cb.resp.call(this, args, util);
- });
- },
- get: function () {
- return cbObject.resp[cbName];
- }
- });
- console.log('Hooking(proxy) call back: ' + cbName + ' success.')
- } else {
- console.log('Hooking call back: ' + cbName + ' failed.')
- }
- }
- }
- };
- var isAutoInit = localStorage.getItem('__hook_all_auto_init');
- if (!isAutoInit) {
- localStorage.setItem('__hook_all_auto_init', JSON.stringify(true));
- isAutoInit = localStorage.getItem('__hook_all_auto_init');
- }
- var ajaxObject = {
- filterPatten: '',
- isAutoInit: isAutoInit && isAutoInit !== 'false'
- };
- var ajaxChange = {
- filter: function (pattern) {
- ajaxObject.filterPatten = pattern;
- return this;
- },
- ajax: {
- req: undefined,
- resp: undefined,
- send: undefined
- },
- cb: {
- req: undefined,
- resp: undefined
- },
- setting: {
- autoInit: function (b) {
- ajaxObject.isAutoInit = b;
- localStorage.setItem('__hook_all_auto_init', JSON.stringify(b));
- }
- },
- init: function () {
- // hook jsonp
- // global.eHook.hookBefore(Node.prototype, 'appendChild', function (m, args) {
- // cbObject.parseScript(m, args);
- // }, false);
- // global.eHook.hookBefore(Node.prototype, 'insertBefore', function (m, args) {
- // cbObject.parseScript(m, args);
- // }, false);
- global.aHook.register('.*', {
- hookResponse: function () {
- var isPass = true;
- if (ajaxObject.filterPatten) {
- isPass = util.urlUtils.urlMatching(this.responseURL, ajaxObject.filterPatten);
- }
- return !isPass ? undefined : ajaxChange.ajax.resp && ajaxChange.ajax.resp.call(this, arguments, util);
- },
- hookSend: function (args) {
- var isPass = true;
- if (ajaxObject.filterPatten) {
- isPass = util.urlUtils.urlMatching(this.requestURL, ajaxObject.filterPatten);
- }
- return !isPass ? undefined : ajaxChange.ajax.send && ajaxChange.ajax.send.call(this, arguments, util);
- },
- hookRequest: function (args) {
- window.util = util;
- var isPass = true;
- if (ajaxObject.filterPatten) {
- isPass = util.urlUtils.urlMatching(args.fullUrl, ajaxObject.filterPatten);
- }
- this.requestURL = args.fullUrl;
- return !isPass ? undefined : ajaxChange.ajax.req && ajaxChange.ajax.req.call(this, arguments, util);
- }
- }
- );
- },
- onInit: function () {
- }
- };
- ajaxChange.onInit();
- // if (ajaxObject.isAutoInit) {
- ajaxChange.init();
- // }
- return ajaxChange;
- }
- });
- }
- })(window);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址