Pixverse NSFW Video Bypass

test

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name Pixverse NSFW Video Bypass
// @match https://app.pixverse.ai/*
// @run-at document-start
// @description test
// @version 3.2
// @license MIT
// @author cptdan
// @namespace https://greasyfork.org/users/1458338
// ==/UserScript==
(function () {
 'use strict';
 const DEBUG_PREFIX = '[Pixverse Bypass]';
 const MAX_ATTEMPTS = 20;
 let savedMediaPath = null;
 let isInitialized = false;
 function log(message, ...args) {
 console.log(`${DEBUG_PREFIX} ${message}`, ...args);
 }
 function error(message, ...args) {
 console.error(`${DEBUG_PREFIX} ${message}`, ...args);
 }
 // Safe XHR Override
 function overrideXHR() {
 if (!window.XMLHttpRequest) {
 error('XMLHttpRequest not supported');
 return;
 }
 try {
 const originalOpen = XMLHttpRequest.prototype.open;
 const originalSend = XMLHttpRequest.prototype.send;
 XMLHttpRequest.prototype.open = function (method, url) {
 this.requestUrl = url;
 log('Opening request:', url);
 try {
 return originalOpen.apply(this, arguments);
 } catch (e) {
 error('Open error:', e);
 throw e;
 }
 };
 XMLHttpRequest.prototype.send = function (body) {
 log('Sending request:', this.requestUrl);
 // Capture media path
 if (this.requestUrl.includes('/media/') && body) {
 try {
 let data = body;
 if (body instanceof FormData) {
 data = Object.fromEntries(body);
 } else if (typeof body === 'string') {
 data = JSON.parse(body || '{}');
 }
 savedMediaPath = extractMediaPath(data, this.requestUrl);
 log('Captured media path:', savedMediaPath);
 } catch (e) {
 error('Error parsing request body:', e);
 }
 }
 // Handle response
 const loadHandler = function () {
 if (this.status >= 200 && this.status < 300) {
 try {
 const response = parseResponse(this);
 const modifiedData = modifyResponse(response, this.requestUrl);
 if (modifiedData) {
 Object.defineProperties(this, {
 response: { value: modifiedData, writable: true, configurable: true },
 responseText: { value: JSON.stringify(modifiedData), writable: true, configurable: true }
 });
 log('Response modified successfully for:', this.requestUrl);
 }
 } catch (e) {
 error('Response processing error:', e);
 }
 } else {
 log('Request failed with status:', this.status);
 }
 }.bind(this);
 this.addEventListener('load', loadHandler, { once: true });
 try {
 return originalSend.apply(this, arguments);
 } catch (e) {
 error('Send error:', e);
 throw e;
 }
 };
 log('XHR overrides initialized successfully');
 } catch (e) {
 error('Failed to initialize XHR overrides:', e);
 }
 }
 function extractMediaPath(data, url) {
 if (url.includes('/media/batch_upload_media')) {
 return data?.images?.[0]?.path;
 } else if (url.includes('/media/upload')) {
 return data?.path;
 }
 return null;
 }
 function parseResponse(xhr) {
 try {
 return xhr.responseType === 'json' ? xhr.response : JSON.parse(xhr.responseText || '{}');
 } catch (e) {
 error('Failed to parse response:', e);
 return {};
 }
 }
 function modifyResponse(data, url) {
 if (!data || typeof data !== 'object') return null;
 if (url.includes('/video/list/personal')) {
 return modifyVideoList(data);
 } else if (url.includes('/media/batch_upload_media')) {
 return modifyBatchUpload(data);
 } else if (url.includes('/media/upload')) {
 return modifySingleUpload(data);
 }
 return null;
 }
function modifyVideoList(data) {
 if (!data?.Resp?.data) return data;
 const videoList = JSON.parse(localStorage.getItem("videoList")) || {}
 return {
 ...data,
 Resp: {
 ...data.Resp,
 data: data.Resp.data.map(item => {
 const video_path = videoList[item.video_id] || item.video_path
 if (!videoList[item.video_id] && video_path) {
 videoList[item.video_id] = video_path
 localStorage.setItem("videoList",JSON.stringify(videoList))
 }
 return ({
 ...item,
 video_status: item.video_status === 7 ? 1 : item.video_status,
 first_frame: (item.extended === 1 && item.customer_paths?.customer_video_last_frame_url) ||
 item.customer_paths?.customer_img_url || '',
 url: video_path ? `https://media.pixverse.ai/${video_path}` : ''
 })
 })
 }
 };
 }
 function modifyBatchUpload(data) {
 if (data?.ErrCode === 400 && savedMediaPath) {
 const imageId = Date.now();
 const imageName = savedMediaPath.split('/').pop() || 'uploaded_media';
 return {
 ErrCode: 0,
 ErrMsg: "success",
 Resp: {
 result: [{
 id: imageId,
 category: 0,
 err_msg: "",
 name: imageName,
 path: savedMediaPath,
 size: 0,
 url: `https://media.pixverse.ai/${savedMediaPath}`
 }]
 }
 };
 }
 return data;
 }
 function modifySingleUpload(data) {
 if (data?.ErrCode === 400040 && savedMediaPath) {
 return {
 ErrCode: 0,
 ErrMsg: "success",
 Resp: {
 path: savedMediaPath,
 url: `https://media.pixverse.ai/${savedMediaPath}`
 }
 };
 }
 return data;
 }
 // Watermark Button Setup
 function setupWatermarkButton() {
 let attempts = 0;
 function attemptReplace() {
 try {
 const watermarkDiv = Array.from(document.querySelectorAll('div'))
 .find(el => el.textContent?.trim() === 'Watermark-free');
 if (watermarkDiv && watermarkDiv.parentNode) {
 const newButton = createWatermarkButton();
 watermarkDiv.parentNode.replaceChild(newButton, watermarkDiv);
 log('Watermark button replaced successfully');
 return true;
 } else if (attempts < MAX_ATTEMPTS) {
 attempts++;
 log('Attempting to find watermark button:', attempts);
 setTimeout(attemptReplace, 500);
 return false;
 } else {
 error('Max attempts reached for watermark button');
 return false;
 }
 } catch (e) {
 error('Error in button replacement:', e);
 return false;
 }
 }
 if (document.readyState === 'complete') {
 attemptReplace();
 } else {
 document.addEventListener('DOMContentLoaded', attemptReplace);
 }
 }
 function createWatermarkButton() {
 const button = document.createElement('button');
 button.textContent = 'Watermark-free';
 button.addEventListener('click', (e) => {
 e.preventDefault();
 e.stopPropagation();
 const videoElement = document.querySelector('.component-video > video');
 if (videoElement?.src) {
 downloadVideo(videoElement.src);
 } else {
 error('No video element found');
 alert('No video available to download');
 }
 });
 return button;
 }
 function downloadVideo(url) {
 try {
 const link = document.createElement('a');
 link.href = url;
 link.download = url.split('/').pop() || 'video.mp4';
 document.body.appendChild(link);
 link.click();
 document.body.removeChild(link);
 log('Video download initiated:', url);
 } catch (e) {
 error('Download error:', e);
 alert('Failed to download video');
 }
 }
 // Initialization
 function initialize() {
 if (isInitialized) return;
 try {
 overrideXHR();
 setupWatermarkButton();
 isInitialized = true;
 log('Script initialized successfully');
 } catch (e) {
 error('Initialization failed:', e);
 }
 }
 if (document.readyState === 'loading') {
 document.addEventListener('DOMContentLoaded', initialize);
 } else {
 initialize();
 }
})();