您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Lets you download files as a binary stream, and upload them as multipart/form-data. Userscript library.
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/7079/28932/Binary%20library.js
// ==UserScript== // @name Binary library // @namespace [email protected] // @description Lets you download files as a binary stream, and upload them as multipart/form-data. Userscript library. // @include * // @grant GM_xmlhttpRequest // @license cc-by-sa // ==/UserScript== BinaryRes = {}; BinaryRes.get = function (object) { var request = { method: 'GET', url: object.url, overrideMimeType: 'text/plain; charset=x-user-defined', binary: true, onload: object.callback, }; if (object.override) { for (var attr in object.override) request[attr] = object.override[attr] } GM_xmlhttpRequest(request); } BinaryRes._clean = function (bytes) { var binarray = []; [].forEach.call(bytes, function (byte) { binarray.push(String.fromCharCode(byte.charCodeAt(0) & 0xff)); }); return binarray.join(''); } BinaryRes._bound = function() { var z = 98729145294692; var a = 12400722650394; return Array(28).join('-') + Math.floor(Math.random() * (z - a)) + a; } BinaryRes._typeof = function(value) { // from crockford var s = typeof value; if (s === 'object') { if (value) { if (typeof value.length === 'number' && !(value.propertyIsEnumerable('length')) && typeof value.splice === 'function') { s = 'array'; } } else { s = 'null'; } } return s; } BinaryRes.post = function (obj) { // url, callback, data var build = []; var boundary = BinaryRes._bound(); for (var name in obj.data) { if (obj.data.hasOwnProperty(name)) { build.push('--' + boundary); var disp = 'Content-Disposition: form-data; name="' + name + '"'; if (BinaryRes._typeof(obj.data[name]) == 'object') { var value = BinaryRes._clean(obj.data[name].value); if (obj.data[name].filename) disp += '; filename="' + obj.data[name].filename + '"'; build.push(disp); build.push('Content-type: ' + obj.data[name].type); } else { var value = obj.data[name]; build.push(disp); } build.push(''); build.push(value); } } build.push('--' + boundary + '--'); var data = build.join('\r\n'); var request = { method: 'POST', url: obj.url, binary: true, headers: { "Content-Type": 'multipart/form-data; boundary=' + boundary, "Content-Length": data.length }, data: data, onload: obj.callback }; if (obj.override) { for (var attr in obj.override) request[attr] = obj.override[attr] } GM_xmlhttpRequest(request); } BinaryRes.guessType = function(stream) { if (!stream) return; var dict = [ [0, 3, '\xFF\xD8\xFF', 'image/jpeg'], [1, 4, 'PNG', 'image/png'], [0, 3, 'GIF', 'image/gif'], [0, 4, '%PDF', 'application/pdf'], ] stream = BinaryRes._clean(stream); for (var ii = 0; ii < dict.length; ii++) { if (stream.slice(dict[ii][0], dict[ii][1]) === dict[ii][2]) return dict[ii][3]; } }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址