@yiero/gmlib
Version:
GM Lib for Tampermonkey/ScriptCat
33 lines (32 loc) • 1.4 kB
TypeScript
/**
* 劫持 XMLHttpRequest 的响应数据
*
* 拦截指定 URL 的 XHR 请求,修改或读取响应内容。
* 支持 JSON 对象、HTML Document 和纯文本格式的响应。
*
* @param hookUrl URL 匹配函数,返回 true 表示需要劫持该 URL 的请求
* @param callback 响应处理回调函数
* - 参数1: 解析后的响应数据
* - 参数2: 当前请求的 URL
* - 返回值: 字符串则替换响应内容,undefined 则保持原响应
*
* @warn 此函数会修改全局 XMLHttpRequest 的行为,请在页面脚本执行前注入
* @warn 请一次处理完所有需要劫持的请求,多次使用可能导致页面网络请求出现问题
* @warn 无法劫持二进制响应(如图片)或 http-only 等特殊 Cookie
*
* @example
* ```ts
* // 修改 B 站动态主页的直播用户列表(添加黑名单过滤)
* hookXhr(
* (url) => url.includes('/polymer/web-dynamic/v1/portal'),
* (response, url) => {
* const blackList = [1, 2];
* response.data.live_users.items = response.data.live_users.items.filter(
* item => !blackList.includes(item.mid)
* );
* return JSON.stringify(response);
* }
* );
* ```
*/
export declare const hookXhr: <T extends string | Record<string, unknown> | Document>(hookUrl: (url: string) => boolean, callback: (response: T, requestUrl: string) => undefined | string) => void;