mirror of
https://github.com/Bao-qing/123pan.git
synced 2025-11-13 20:26:09 +08:00
123云盘下载辅助油猴脚本
This commit is contained in:
parent
557e8efc25
commit
1e02b86fa0
83
123download.js
Normal file
83
123download.js
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
// ==UserScript==
|
||||||
|
// @name 123云盘下载辅助
|
||||||
|
// @namespace https://github.com/Bao-qing/123pan
|
||||||
|
// @version 0.1
|
||||||
|
// @description 123 Cloud Drive Unlimited Flow
|
||||||
|
// @match https://www.123pan.com/*
|
||||||
|
// @grant none
|
||||||
|
// @author Qing
|
||||||
|
// ==/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;
|
||||||
|
})();
|
||||||
Loading…
Reference in New Issue
Block a user