F95Zone.to - Pixeldrain No Limit DL

Want unlimited Download on Pixeldrain? This script integrates a raw pd.cybar.xyz URL into F95Zone threads

נכון ליום 18-07-2025. ראה הגרסה האחרונה.

// ==UserScript==
// @name         F95Zone.to - Pixeldrain No Limit DL
// @namespace    https://greasyfork.org/fr/users/1468290-payamarre
// @version      1.2
// @icon         https://www.google.com/s2/favicons?sz=64&domain=f95zone.to
// @description  Want unlimited Download on Pixeldrain? This script integrates a raw pd.cybar.xyz URL into F95Zone threads
// @author       NoOne
// @license MIT
// @match        https://f95zone.to/*
// @grant        GM_xmlhttpRequest
// @connect      f95zone.to
// ==/UserScript==

/*
 * >> 🔓 -> Click to generate the bypass link.
 * >> ❌ -> Link couldn't be generated due to a CAPTCHA. Open the Pixeldrain link, complete the CAPTCHA, close the window, then click ❌ again.
 * >> [DIRECT LINK] -> The direct link has been generated. Left-click to download instantly, or right-click to copy the link.
 */



(function () {
    'use strict';

    const style = document.createElement('style');
    style.textContent = `
        .cybar-unlock-btn {
            margin-left: 5px;
            cursor: pointer;
            background: #444;
            color: #ec5555;
            border: none;
            border-radius: 5px;
            margin: 5px;
            font-family: Verdana, sans-serif !important;
            align-items: center;
            gap: 0.2em;
            height: 30px;
        }
        .cybar-unlock-btn-text {
            text-decoration: none;
        }
        .cybar-unlock-btn:hover .cybar-unlock-btn-text {
            color: #f5a3a3;
            text-decoration: underline;
        }
        .cybar-direct-link {
            display: inline-block;
            align-items; center;
            color: #a4be8c;
            margin-left: 5px;
            margin: 5px;
            height: 30px;
            line-height: 25px;
            font-family: Verdana, sans-serif;
            text-decoration: none;
        }
        .cybar-direct-link:hover {
            text-decoration: underline;
            color: #c7e7a4;
        }
    `;
    document.head.appendChild(style);

    const CYBAR_BASE = "https://pd.cybar.xyz/";

    if (window.location.hostname === 'f95zone.to' && !window.location.pathname.startsWith('/masked/')) {
        const addManualButtons = () => {
            const links = document.querySelectorAll('a[href*="/masked/pixeldrain.com/"]');

            links.forEach(link => {
                if (link.dataset.cybarManual) return;
                link.dataset.cybarManual = "true";

                const fetchButton = document.createElement('button');
                fetchButton.className = "cybar-unlock-btn";

                const emojiSpan = document.createElement('span');
                emojiSpan.textContent = "🔓";

                const textSpan = document.createElement('span');
                textSpan.className = "cybar-unlock-btn-text";
                textSpan.textContent = "UNLOCK LINK";

                fetchButton.appendChild(emojiSpan);
                fetchButton.appendChild(textSpan);

                fetchButton.addEventListener('click', () => {
                    emojiSpan.textContent = "";
                    textSpan.textContent = "⏳...";

                    GM_xmlhttpRequest({
                        method: "POST",
                        url: link.href,
                        headers: {
                            "Content-Type": "application/x-www-form-urlencoded"
                        },
                        data: "xhr=1&download=1",
                        onload: function (res) {
                            try {
                                const json = JSON.parse(res.responseText);
                                const match = json.msg.match(/pixeldrain\.com\/u\/([\w\d]+)/);
                                if (match && match[1]) {
                                    const cybarLink = document.createElement('a');
                                    cybarLink.href = CYBAR_BASE + match[1];
                                    cybarLink.className = "cybar-direct-link";
                                    cybarLink.textContent = `[DIRECT LINK]`;
                                    cybarLink.target = "_blank";
                                    fetchButton.replaceWith(cybarLink);
                                } else {
                                    emojiSpan.textContent = "";
                                    textSpan.textContent = "❌ CAPTCHA";
                                }
                            } catch {
                                emojiSpan.textContent = "";
                                textSpan.textContent = "⚠️ JSON INVALID";
                            }
                        },
                        onerror: () => {
                            emojiSpan.textContent = "";
                            textSpan.textContent = "❌ ERROR HTTP";
                        }
                    });
                });

                link.insertAdjacentElement('afterend', fetchButton);
            });
        };

        addManualButtons();
        const observer = new MutationObserver(addManualButtons);
        observer.observe(document.body, { childList: true, subtree: true });
    }
})();