首先浏览器需要安装篡改猴 (Tampermonkey)。如果没有安装点击https://www.tampermonkey.net/ 安装。
安装完毕后
1.点击油猴图标,选择篡改猴。
2.添加新脚本。
3.将代码内容全部复制粘贴进去,然后点击文件-保存。
代码
// ==UserScript==
// @name 123云盘下载辅助
// @namespace https://github.com/Bao-qing/123pan
// @version 0.3
// @description 123 Cloud Drive Unlimited Flow
// @match https://www.123pan.com/*
// @match https://www.123pan.cn/*
// @match https://www.123865.com/*
// @match https://www.123684.com/*
// @grant none
// @author Qing
// @downloadURL https://update.greasyfork.org/scripts/510621/123%E4%BA%91%E7%9B%98%E4%B8%8B%E8%BD%BD%E8%BE%85%E5%8A%A9.user.js
// @updateURL https://update.greasyfork.org/scripts/510621/123%E4%BA%91%E7%9B%98%E4%B8%8B%E8%BD%BD%E8%BE%85%E5%8A%A9.meta.js
// ==/UserScript==
(function () {
// 重写 XMLHttpRequest
const originalXHR = window.XMLHttpRequest;
function newXHR() {
const realXHR = new originalXHR();
realXHR.open = function (method, url, async, user, password) {
this._url = url; // 记录请求的 URL
return originalXHR.prototype.open.apply(this, arguments);
};
realXHR.setRequestHeader = function (header, value) {
let headers = {
"user-agent": "123pan/v2.4.0(Android_7.1.2;Xiaomi)",
//"loginuuid": generateUUIDHex(),
"platform": "android",
"app-version": "61",
"x-app-version": "2.4.0"
}
// 如果header在列表中,则修改
if (header.toLowerCase() in headers) {
value = headers[header.toLowerCase()];
} else {
console.log('header:', header);
}
return originalXHR.prototype.setRequestHeader.apply(this, arguments);
};
// 拦截响应内容,修改 DownloadUrl以适应网页端下载
realXHR.send = function () {
const xhrInstance = this;
this.addEventListener('readystatechange', function () {
let origin_url;
let new_url_no_redirect;
let base64data;
if (xhrInstance.readyState === 4 && xhrInstance.status === 200) {
// 解析响应的 JSON
let responseText = xhrInstance.responseText;
let responseJSON = JSON.parse(responseText);
console.log('Original Response:', responseJSON);
// 修改 DownloadUrl
if (responseJSON.data && responseJSON.data.DownloadUrl) {
origin_url = responseJSON.data.DownloadUrl;
new_url_no_redirect = origin_url + "&auto_redirect=0";
base64data = btoa(new_url_no_redirect);
responseJSON.data.DownloadUrl = "https://web-pro2.123952.com/download-v2/?params=" + base64data + "&is_s3=0";
console.log('Modified DownloadUrl:', responseJSON.data.DownloadUrl);
}
// 将修改后的 JSON 转为字符串
let modifiedResponseText = JSON.stringify(responseJSON);
// 使用 defineProperty 重写 responseText
Object.defineProperty(xhrInstance, 'responseText', {
get: function () {
return modifiedResponseText;
}
});
console.log('Modified Response:', modifiedResponseText);
}
});
return originalXHR.prototype.send.apply(this, arguments);
};
return realXHR;
}
window.XMLHttpRequest = newXHR;
})();