Video Bypass (maxstream generic)

Bypasses Anti-AdBlock on maxstream-like streaming sites. On /watchfree/* pages, extracts the real video URL from iframes and redirects. On other pages, blocks alert/confirm/prompt dialogs.

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

You will need to install an extension such as Tampermonkey to install this script.

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

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

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

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

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

Advertisement:

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

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

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

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

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

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

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

Advertisement:

// ==UserScript==
// @name         Video Bypass (maxstream generic)
// @version      2.0.1
// @description  Bypasses Anti-AdBlock on maxstream-like streaming sites. On /watchfree/* pages, extracts the real video URL from iframes and redirects. On other pages, blocks alert/confirm/prompt dialogs.
// @author       antwal, ngi
// @license      MIT
// @match        https://*.maxstream.video/*
// @match        https://*/*watchfree/*
// @grant        none
// @run-at       document-start
// @homepage     https://gist.github.com/ngi/99134b4bc1f97ff87a7fa8be3b573514
// @namespace https://greasyfork.org/users/1440018
// ==/UserScript==

(function() {
    'use strict';

    function isWatchfreeUrl() {
        return window.location.pathname.startsWith("/watchfree");
    }

    // Generic pattern to recognize maxstream-like domains
    const DOMAIN_PATTERNS = [
        /max\w*\d*\.\w+$/,// maxs19.fun, maxmon23.online, maxv.lol, etc.
        /maxstream\.video$/,
        /fmax\d*\.\w+$/,
        /sumax\d*\.\w+$/,
        /samax\d*\.\w+$/,
    ];

    function isKnownDomain(hostname) {
        return DOMAIN_PATTERNS.some(pattern => pattern.test(hostname));
    }

    if (!isKnownDomain(window.location.hostname)) return;

    if (isWatchfreeUrl()) {
        const iframes = document.getElementsByTagName("iframe");
        for (let i = 0; i < iframes.length; i++) {
            const src = iframes[i].getAttribute("src") || iframes[i].src;
            if (src && src.includes("maxstream.video")) {
                window.location.replace(src);
                return;
            }
        }

        const observer = new MutationObserver((mutations) => {
            for (const mutation of mutations) {
                for (const node of mutation.addedNodes) {
                    if (node.tagName === "IFRAME") {
                        const src = node.getAttribute("src") || node.src;
                        if (src && src.includes("maxstream.video")) {
                            observer.disconnect();
                            window.location.replace(src);
                            return;
                        }
                    }
                }
            }
        });
        observer.observe(document.body || document.documentElement, {
            childList: true,
            subtree: true
        });
    } else {
        Object.defineProperty(window, 'alert', {
            value: function(message) {
                console.log("Blocked alert: " + message);
            },
            writable: false,
            configurable: false
        });

        Object.defineProperty(window, 'confirm', {
            value: function(message) {
                console.log("Blocked confirm: " + message);
                return true;
            },
            writable: false,
            configurable: false
        });

        Object.defineProperty(window, 'prompt', {
            value: function(message) {
                console.log("Blocked prompt: " + message);
                return null;
            },
            writable: false,
            configurable: false
        });
    }
})();