B站网页多P:没权限也能投分P

大类
VTB
技术标签
逆向-JS
开发-HookPatch-JS
优先级
Low
开始日期
Apr 3, 2021
状态
Monitoring
Public
Public
最后更新
Apr 3, 2021
利用互动视频绕开了分p限制
// ==UserScript== // @name B站网页多P // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author Misty // @match https://member.bilibili.com/platform/upload/video/frame* // @match https://member.bilibili.com/video/upload.html* // @grant GM_xmlhttpRequest // @run-at document-start // ==/UserScript== const injectStyle1 = ` .file-add-btn.disabled { display: block !important; cursor: pointer !important; opacity: unset !important; } `; (() => { window.InitXHRHook = function() { //'use strict'; // Your code here... console.log("hooking xhr!") var oldOpen, oldSend, i; if( XMLHttpRequest.callbacks ) { return; // we've already overridden send() so just add the callback //XMLHttpRequest.callbacks.push( callback ); } else { console.log("hooked xhr!") // create a callback queue XMLHttpRequest.callbacks = true; oldOpen = XMLHttpRequest.prototype.open; // override the native send() var newOpen = function(){ this.url = arguments[1]; oldOpen.apply(this, arguments); } XMLHttpRequest.prototype.open = newOpen // store the native send() oldSend = XMLHttpRequest.prototype.send; // override the native send() var newSend = function(){ var orichange = this.onreadystatechange this.onreadystatechange = function(a, e) { console.log(this.url) if (!this.url) {} else if (this.url.includes('/web/white')) { if (this.readyState == 4 && this.status == 200) { //console.log("got resp: " + this.responseText) var response = this.responseText; Object.defineProperty(this, 'response', {writable: true}); Object.defineProperty(this, 'responseText', {writable: true}); response = response .replace('"have_permission_of_p":false', '"have_permission_of_p":true') .replace('"new_web":true', '"new_web":false') .replace('"is_grey":true', '"is_grey":false') .replace('"one_video":true', '"one_video":false'); this.response = this.responseText = response; //console.log("to resp: " + this.responseText) } } return orichange(a, e) } if (this.url.includes("/x/vu/web/edit")) { var oriBody = arguments[0]; arguments[0] = oriBody.replace('"interactive":0', '"interactive":1') } oldSend.apply(this, arguments); } XMLHttpRequest.prototype.send = newSend; var newtimer = window.setInterval(function(){ XMLHttpRequest.prototype.open = newOpen; XMLHttpRequest.prototype.send = newSend; }, 50); window.setTimeout(function(){ window.clearInterval(newtimer)}, 8000) } }; /*const style = document.createElement('style'); style.type = 'text/css'; style.id = "addStyleMisty1"; style.innerHTML = injectStyle1; document.head.appendChild(style);*/ })(); window.InitXHRHook();