[Premium] Faucet Monitor with Faucetpay ReCaptcha/Antibot Rotator

Elevate your Faucet claiming experience with advanced automation, seamlessly handling form filling, button clicks, and ReCaptcha/Antibot challenges. Boost your efficiency and maximize earnings.

当前为 2024-02-06 提交的版本,查看 最新版本

在您安装前,Greasy Fork 希望您知道此脚本声明其包含了一些负面功能。这些功能也许会使脚本作者获利,而不能给您带来任何直接的金钱收益。

作者可从这份脚本获得佣金,例如通过修改链接地址或提供优惠券代码以包含推荐或附属代码。 脚本作者的说明: Referral-Link is in this Script integrated.

此脚本会在您访问的网站中插入广告。 脚本作者的说明: Advertisment Button with sites from friends.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         [Premium] Faucet Monitor with Faucetpay ReCaptcha/Antibot Rotator
// @namespace    https://greasyfork.org/users/1162863
// @version      2.7.1
// @description  Elevate your Faucet claiming experience with advanced automation, seamlessly handling form filling, button clicks, and ReCaptcha/Antibot challenges. Boost your efficiency and maximize earnings.
// @author       Andrewblood
// @match        https://*.coinfinity.top/*
// @match        https://*.sollcrypto.com/*
// @match        https://*.cryptoclaps.com/*
// @match        https://*.baltoniearn.com/claim/tron/*
// @match        https://*.vptron.online/TRX/*
// @match        https://*.claimcoins.site/reward/*
// @match        https://*.bnbminers.site/earns/*
// @match        https://*.ltcmines.site/earns/*
// @match        https://*.tronxminer.com/rewards/*
// @match        https://*.etcoin.site/earn/*
// @match        https://*.autofaucet.dutchycorp.space/*
// @match        https://*.freebitco.in/*
// @match        https://*.freebitcoin.io/*
// @match        https://*.freebinancecoin.com/*
// @match        https://*.free-doge.com/*
// @match        https://*.freetether.com/*
// @match        https://*.freecardano.com/*
// @match        https://*.freedash.io/*
// @match        https://*.freeethereum.com/*
// @match        https://*.freebfg.com/*
// @match        https://*.freebittorrent.com/*
// @match        https://*.freepancake.com/*
// @match        https://*.freematic.com/*
// @match        https://*.freeshibainu.com/*
// @match        https://*.coinfaucet.io/*
// @match        https://*.freenem.com/*
// @match        https://*.freeusdcoin.com/*
// @match        https://*.free-tron.com/*
// @match        https://*.freesteam.io/*
// @match        https://*.freeneo.io/*
// @match        https://*.free-ltc.com/*
// @match        https://*.freecryptom.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=faucetpay.io
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @grant        GM_listValues
// @grant        window.close
// @antifeature  referral-link     Referral-Link is in this Script integrated.
// @antifeature  ads               Advertisment Button with sites from friends.
// @license      Copyright Andrewblood
// ==/UserScript==
/*
Experience the next level of Faucet claiming with unparalleled features:

- User Interface: You can use http://coinfinity.top for the interface/buttons for managing websites, installing requirements, saving Faucetpay email address, and handling stored URLs
- Requirements Integration: Provides extension and script recommendations with install buttons for enhanced functionality.
- ReCaptcha/Antibot Handling: Intelligently tackles security challenges, ensuring a smooth claiming process.
- Advanced Automation: Seamlessly fills forms and clicks buttons on Faucetpay Faucet sites, reducing manual effort.
- Efficient Navigation: Automatically moves through supported Faucet URLs, preventing revisits site until next day if it is empty or dayli limit reached for strategic claiming.
- Error Handling: Reloads pages, ensuring up-to-date claiming and avoiding downtime.

Unstable ReCaptcha sites that can add advnced users to the var urls list:

        "https://cryptoclaps.com/earn/dogecoin/",
        "https://cryptoclaps.com/earn/tron/",
        "https://cryptoclaps.com/earn/litecoin/",
        "https://cryptoclaps.com/earn/binance/",
        "https://cryptoclaps.com/earn/solana/",
        "https://cryptoclaps.com/earn/ethereum/",
        "https://cryptoclaps.com/earn/bch/",
        "https://cryptoclaps.com/earn/xrp/",
        "https://cryptoclaps.com/earn/dash/",
        "https://cryptoclaps.com/earn/polygon/",
        "https://cryptoclaps.com/earn/usdt/",
        "https://cryptoclaps.com/earn/zcash/",
        "https://etcoin.site/earn/tron/",
        "https://etcoin.site/earn/doge/",
        "https://etcoin.site/earn/litecoin/",
        "https://etcoin.site/earn/binance/",
        "https://etcoin.site/earn/ripple/",
        "https://etcoin.site/earn/ethereum/",
        "https://etcoin.site/earn/bitcoin/",
        "https://sollcrypto.com/home/page/bitcoin/",
        "https://sollcrypto.com/home/page/doge/",
        "https://sollcrypto.com/home/page/tron/",
        "https://sollcrypto.com/home/page/digibyte/",
        "https://sollcrypto.com/home/page/litecoin/",
        "https://sollcrypto.com/home/page/binance/",
        "https://sollcrypto.com/home/page/solana/",
        "https://sollcrypto.com/home/page/ethereum/",
        "https://sollcrypto.com/home/page/bch/",
        "https://sollcrypto.com/home/page/xrp/",
        "https://sollcrypto.com/home/page/dash/",
        "https://sollcrypto.com/home/page/zcash/",

*/
(function() {
    'use strict';

    var urls = [
        "https://baltoniearn.com/claim/tron/",
        "https://vptron.online/TRX/",
        "https://claimcoins.site/reward/tron/",
        "https://claimcoins.site/reward/doge/",
        "https://claimcoins.site/reward/litecoin/",
        "https://claimcoins.site/reward/binance/",
        "https://claimcoins.site/reward/ripple/",
        "https://claimcoins.site/reward/bitcoin/",
        "https://bnbminers.site/earns/tron/",
        "https://bnbminers.site/earns/litecoin/",
        "https://bnbminers.site/earns/feyorra/",
        "https://bnbminers.site/earns/binance/",
        "https://bnbminers.site/earns/ripple/",
        "https://bnbminers.site/earns/ethereum/",
        "https://bnbminers.site/earns/bitcoin/",
        "https://ltcmines.site/earns/tron/",
        "https://ltcmines.site/earns/doge/",
        "https://ltcmines.site/earns/litecoin/",
        "https://ltcmines.site/earns/binance/",
        "https://ltcmines.site/earns/ripple/",
        "https://ltcmines.site/earns/ethereum/",
        "https://ltcmines.site/earns/bitcoin/",
        "https://tronxminer.com/rewards/tron/",
        "https://tronxminer.com/rewards/doge/",
        "https://tronxminer.com/rewards/feyorra/",
        "https://tronxminer.com/rewards/binance/",
        "https://tronxminer.com/rewards/ripple/",
        "https://tronxminer.com/rewards/bitcoin/",
    ];

    // Function to click a button
    function clickButton(selector) {
        var button = document.querySelector(selector);
        if (button) {
            button.click();
        }
    }

    // Function to check if the captcha is activated
    function isCaptchaChecked() {
        return grecaptcha && grecaptcha.getResponse().length !== 0;
    }

    function visibleCheck(elm) {
        if (!elm.offsetHeight && !elm.offsetWidth) { return false; }
        if (getComputedStyle(elm).visibility === 'hidden') { return false; }
        return true;
    }

    // Function to check if an element is visible
    function isElementVisible(selector) {
        var element = document.querySelector(selector);
        return element && element.offsetWidth > 0 && element.offsetHeight > 0;
    }

    // Function to open a website
    function openWebsite(url) {
        window.open(url, '_blank');
    }

    // Email overlay creation
    var overlay = document.createElement('div');
    overlay.id = 'emailInputOverlay';
    overlay.style.position = 'fixed';
    overlay.style.bottom = '10px';
    overlay.style.right = '10px';
    overlay.style.zIndex = '10000';

    // Create a button for other requirements
    var otherRequirementsButton = document.createElement('button');
    otherRequirementsButton.id = 'otherRequirementsButton';
    otherRequirementsButton.style.padding = '5px';
    otherRequirementsButton.style.marginLeft = '5px';
    otherRequirementsButton.textContent = 'Requirements';

    var isRequirementsOverlayOpen = false;
    var isStoredUrlsOverlayOpen = false;

    // Event listener for otherRequirementsButton
    otherRequirementsButton.addEventListener('click', function() {
        // Check if requirements overlay is already open
        if (isRequirementsOverlayOpen) {
            // Close the overlay
            closeOverlay(otherRequirementsOverlay);
            isRequirementsOverlayOpen = false;
            return;
        }

        // Create an overlay for other requirements
        var otherRequirementsOverlay = document.createElement('div');
        otherRequirementsOverlay.style.position = 'fixed';
        otherRequirementsOverlay.style.top = '50%';
        otherRequirementsOverlay.style.left = '50%';
        otherRequirementsOverlay.style.transform = 'translate(-50%, -50%)';
        otherRequirementsOverlay.style.zIndex = '10001';
        otherRequirementsOverlay.style.backgroundColor = '#fff';
        otherRequirementsOverlay.style.border = '1px solid #ddd';
        otherRequirementsOverlay.style.padding = '20px';
        otherRequirementsOverlay.style.maxHeight = '80%';
        otherRequirementsOverlay.style.overflowY = 'auto';

        // Add the heading
        var heading = document.createElement('h2');
        heading.textContent = 'Requirements';
        heading.style.textAlign = 'center';
        heading.style.marginBottom = '15px';
        otherRequirementsOverlay.appendChild(heading);

        // Define the list of extensions and scripts with install buttons
        var requirementsList = [
            { name: '<b>ReCaptcha:</b> hektCaptcha: hCaptcha Solver', installUrl: 'https://github.com/Wikidepia/hektCaptcha-extension' },
            { name: '<b>Antibot Words:</b> AB Links Solver', installUrl: 'https://greasyfork.org/de/scripts/459453-ab-links-solver' }
        ];

        // Create a list element
        var list = document.createElement('ul');
        list.style.listStyleType = 'none';
        list.style.padding = '0';

        // Populate the list with requirements and install buttons
        requirementsList.forEach(function(requirement) {
            var listItem = document.createElement('li');

            var installButton = document.createElement('button');
            installButton.textContent = 'Install';
            installButton.addEventListener('click', function() {
                // Open a new tab with the install URL
                window.open(requirement.installUrl, '_blank');
            });

            // Create a span element for styling
            var styledText = document.createElement('span');
            styledText.innerHTML = requirement.name; // Use innerHTML to interpret HTML tags

            // Append the span and install button to the list item
            listItem.appendChild(styledText);
            listItem.appendChild(installButton);
            list.appendChild(listItem);
        });

        // Create a close button for the overlay
        var closeRequirementsButton = document.createElement('button');
        closeRequirementsButton.textContent = 'Close';
        closeRequirementsButton.style.padding = '8px';
        closeRequirementsButton.style.marginTop = '10px';
        closeRequirementsButton.addEventListener('click', function() {
            // Close the overlay when the close button is clicked
            document.body.removeChild(otherRequirementsOverlay);
        });

        // Function to save Faucetpay email
        function saveFaucetpayEmail() {
            // Save entered email address
            var newEmail = emailInput.value;
            GM_setValue('storedEmail', newEmail);

            // Success notification (can be customized)
            alert('Faucetpay email address saved successfully!');
        }

        // Add input field and label for Faucetpay email to the requirements overlay
        var emailInputLabel = document.createElement('label');
        emailInputLabel.textContent = 'Enter Faucetpay Email:';
        emailInputLabel.style.display = 'block';
        emailInputLabel.style.marginTop = '10px';

        var emailInput = document.createElement('input');
        emailInput.type = 'text';
        emailInput.id = 'emailInput';
        emailInput.placeholder = 'Faucetpay Email';
        emailInput.style.padding = '5px';
        emailInput.style.width = '100%';

        // Abrufen und Einsetzen des gespeicherten Werts
        var storedEmail = GM_getValue('storedEmail', '');
        emailInput.value = storedEmail;

        // Add "Save Faucetpay email" button to the requirements overlay
        var saveFaucetpayEmailButton = document.createElement('button');
        saveFaucetpayEmailButton.id = 'saveFaucetpayEmailButton';
        saveFaucetpayEmailButton.style.padding = '5px';
        saveFaucetpayEmailButton.style.marginTop = '5px';
        saveFaucetpayEmailButton.style.width = '100%';
        saveFaucetpayEmailButton.textContent = 'Save Faucetpay Email';

        // Add event listener for saveFaucetpayEmailButton
        saveFaucetpayEmailButton.addEventListener('click', saveFaucetpayEmail);


        // Append the list and close button to the overlay
        otherRequirementsOverlay.appendChild(list);
        // Append the input field, label, and "Save Faucetpay email" button to the requirements overlay
        otherRequirementsOverlay.appendChild(emailInputLabel);
        otherRequirementsOverlay.appendChild(emailInput);
        otherRequirementsOverlay.appendChild(saveFaucetpayEmailButton);
        otherRequirementsOverlay.appendChild(closeRequirementsButton);
        var closeButton = createCloseButton(otherRequirementsOverlay);
        otherRequirementsOverlay.appendChild(closeButton);

        // Set flag to indicate that requirements overlay is open
        isRequirementsOverlayOpen = true;

        // Add the overlay to the body
        document.body.appendChild(otherRequirementsOverlay);

        // Add an event listener to reset the flag when the overlay is closed
        otherRequirementsOverlay.addEventListener('click', function() {
            isRequirementsOverlayOpen = false;
        });
    });

    // Create a button to show stored URLs
    var showStoredUrlsButton = document.createElement('button');
    showStoredUrlsButton.id = 'showStoredUrlsButton';
    showStoredUrlsButton.style.padding = '5px';
    showStoredUrlsButton.style.marginLeft = '5px';
    showStoredUrlsButton.textContent = 'Faucetpay Rotator Sites';

    showStoredUrlsButton.addEventListener('click', function() {
        // Check if stored URLs overlay is already open
        if (isStoredUrlsOverlayOpen) {
            // Close the overlay
            closeOverlay(overlayTable);
            isStoredUrlsOverlayOpen = false;
            return;
        }
        // Display stored pages in an overlay
        var storedUrls = GM_getValue('storedUrls', []);

        // Combine stored URLs with the original URLs
        var allUrls = urls.map(function(url) {
            var storedUrlEntry = storedUrls.find(function(storedUrl) {
                return storedUrl.url === url;
            });

            return {
                url: url,
                timestamp: storedUrlEntry ? storedUrlEntry.timestamp : null
            };
        });

        // Create an overlay for the table
        var overlayTable = document.createElement('div');
        overlayTable.style.position = 'fixed';
        overlayTable.style.top = '50%';
        overlayTable.style.left = '50%';
        overlayTable.style.transform = 'translate(-50%, -50%)';
        overlayTable.style.zIndex = '10001';
        overlayTable.style.backgroundColor = '#fff';
        overlayTable.style.border = '1px solid #ddd';
        overlayTable.style.padding = '20px';
        overlayTable.style.maxHeight = '80%';
        overlayTable.style.overflowY = 'auto';

        // Add the heading for Faucetpay Rotator Sites
        var heading = document.createElement('h2');
        heading.textContent = 'Faucetpay Rotator Sites';
        heading.style.textAlign = 'center';
        heading.style.marginBottom = '15px';
        overlayTable.appendChild(heading);


        // Create a close button for the overlay
        var closeButton = document.createElement('button');
        closeButton.textContent = 'Close';
        closeButton.style.padding = '8px';
        closeButton.style.marginTop = '10px';
        closeButton.addEventListener('click', function() {
            // Close the overlay when the close button is clicked
            document.body.removeChild(overlayTable);
        });

        // Create a button to delete all stored URLs
        var deleteAllButton = document.createElement('button');
        deleteAllButton.id = 'deleteAllButton';
        deleteAllButton.style.padding = '5px';
        deleteAllButton.style.marginLeft = '5px';
        deleteAllButton.style.float = 'right'; // Align the button to the right
        deleteAllButton.textContent = 'Set All Active';

        // Add an event listener for the deleteAllButton
        deleteAllButton.addEventListener('click', function() {
            // Clear all stored URLs
            GM_deleteValue('storedUrls');

            // Refresh the table
            showStoredUrlsButton.click();
        });

        // Create a table element
        var table = document.createElement('table');
        table.style.borderCollapse = 'collapse';
        table.style.width = '100%';

        // Create table headers
        var headers = ['Connect', 'URL', 'Status', 'Delete'];
        var headerRow = table.insertRow();
        for (var i = 0; i < headers.length; i++) {
            var headerCell = headerRow.insertCell(i);
            headerCell.style.border = '1px solid #ddd';
            headerCell.style.padding = '8px';
            headerCell.style.textAlign = 'left';
            headerCell.textContent = headers[i];

            // Add click event for sorting
            if (i === 1 || i === 2) {
                headerCell.addEventListener('click', function() {
                    sortTable(table, this.cellIndex);
                });
            }
        }

        // Populate table with all URLs, timestamps, and delete buttons
        for (var j = 0; j < allUrls.length; j++) {
            var urlEntry = allUrls[j];
            var row = table.insertRow();

            // Add "Connect" button to each row
            var connectCell = row.insertCell(0);
            connectCell.style.border = '1px solid #ddd';
            connectCell.style.padding = '8px';

            var connectButton = document.createElement('button');
            connectButton.textContent = 'Connect';
            connectButton.addEventListener('click', createConnectHandler(urlEntry.url)); // Attach a handler with the URL
            connectCell.appendChild(connectButton);

            var urlCell = row.insertCell(1);
            urlCell.style.border = '1px solid #ddd';
            urlCell.style.padding = '8px';
            urlCell.textContent = urlEntry.url;

            var statusCell = row.insertCell(2);
            statusCell.style.border = '1px solid #ddd';
            statusCell.style.padding = '8px';
            statusCell.style.color = getStatusColor(urlEntry);
            statusCell.textContent = getStatusText(urlEntry);

            var deleteCell = row.insertCell(3);
            deleteCell.style.border = '1px solid #ddd';
            deleteCell.style.padding = '8px';

            // Create delete button for each row
            var deleteButton = document.createElement('button');
            deleteButton.textContent = 'Set Active';
            deleteButton.addEventListener('click', createDeleteHandler(urlEntry));

            deleteCell.appendChild(deleteButton);
        }

        // Append the table and close button to the overlay
        overlayTable.appendChild(table);
        overlayTable.appendChild(closeButton);
        overlayTable.appendChild(deleteAllButton);
        var closeButtontop = createCloseButton(overlayTable);
        overlayTable.appendChild(closeButtontop);

        // Set flag to indicate that stored URLs overlay is open
        isStoredUrlsOverlayOpen = true;

        // Add the overlay to the body
        document.body.appendChild(overlayTable);

        // Add an event listener to reset the flag when the overlay is closed
        overlayTable.addEventListener('click', function() {
            isStoredUrlsOverlayOpen = false;
        });
    });

    // Function to close the overlay
    function closeOverlay(overlay) {
        // Close the overlay when the close button is clicked
        document.body.removeChild(overlay);
    }

    // Funktion zum Erstellen des "X"-Buttons
    function createCloseButton(overlay) {
        var closeButton = document.createElement('button');
        closeButton.innerHTML = 'X';
        closeButton.style.position = 'absolute';
        closeButton.style.top = '5px';
        closeButton.style.right = '5px';
        closeButton.style.padding = '5px';
        closeButton.style.cursor = 'pointer';
        closeButton.addEventListener('click', function() {
            // Rufe die Funktion zum Schließen des Overlays auf
            closeOverlay(overlay);
        });
        return closeButton;
    }

    // Function to get the status text based on the urlEntry
    function getStatusText(urlEntry) {
        var currentTime = Date.now();

        if (urlEntry.timestamp) {
            var timestamp = Date.parse(urlEntry.timestamp.replace(/-/g, '/'));
            if (timestamp > currentTime) {
                // Not Active Until
                return 'Not Active Until ' + urlEntry.timestamp;
            } else {
                // Active
                return 'Active';
            }
        } else {
            return 'Active';
        }
    }

    // Function to get the status color based on the urlEntry
    function getStatusColor(urlEntry) {
        var currentTime = Date.now();

        if (urlEntry.timestamp) {
            var timestamp = Date.parse(urlEntry.timestamp.replace(/-/g, '/'));
            return (timestamp > currentTime) ? 'red' : 'green';
        } else {
            return 'green'; // Assuming 'Active' state when timestamp is not present
        }
    }

    // Function to create a delete handler with a specific urlEntry
    function createDeleteHandler(urlEntry) {
        return function() {
            // Find the corresponding URL and delete it from stored pages
            var urlToDelete = urlEntry.url;
            var storedUrls = GM_getValue('storedUrls', []);
            storedUrls = storedUrls.filter(function(storedUrl) {
                return storedUrl.url !== urlToDelete;
            });

            // Update stored pages
            GM_setValue('storedUrls', storedUrls);

            // Refresh the table
            showStoredUrlsButton.click();
        };
    }

    // Function to create a connect handler with a specific URL
    function createConnectHandler(url) {
        return function() {
            // Redirect to the selected URL
            window.open(url, '_blank');
        };
    }

    // Function to sort the table by column index
    function sortTable(table, columnIndex) {
        var rows = Array.from(table.rows).slice(1); // Exclude header row
        var sortOrder = 1;

        // Determine sorting order based on the current order of the column
        if (table.rows[0].cells[columnIndex].classList.contains('ascending')) {
            sortOrder = -1;
        }

        // Remove sorting classes from all columns
        for (var i = 0; i < table.rows[0].cells.length; i++) {
            table.rows[0].cells[i].classList.remove('ascending', 'descending');
        }

        // Sort the rows based on the content of the selected column
        rows.sort(function(a, b) {
            var textA = a.cells[columnIndex].textContent.trim().toUpperCase();
            var textB = b.cells[columnIndex].textContent.trim().toUpperCase();

            if (textA < textB) {
                return -1 * sortOrder;
            } else if (textA > textB) {
                return 1 * sortOrder;
            } else {
                return 0;
            }
        });

        // Clear and rebuild the table with the sorted rows
        while (table.rows.length > 1) {
            table.deleteRow(1);
        }

        for (var j = 0; j < rows.length; j++) {
            table.appendChild(rows[j]);
        }

        // Add sorting class to the header cell
        if (sortOrder === 1) {
            table.rows[0].cells[columnIndex].classList.add('ascending');
        } else {
            table.rows[0].cells[columnIndex].classList.add('descending');
        }
    }

    const websites = [
        { name: 'Freebitco.in - Claim/1000% BTC Bonus/WoF', url: 'https://freebitco.in', active: GM_getValue('Freebitco.in', true), script: freebitcoScript },
        { name: 'Dutchycorp - Claim/PTC', url: 'https://autofaucet.dutchycorp.space', active: GM_getValue('Dutchycorp', true), script: dutchycorpScript },
        { name: 'CF Freebitcoin - Shortlinks', url: 'https://app.freebitcoin.io', active: GM_getValue('CF Freebitcoin', true), script: CFfaucetsScript },
        { name: 'CF Freebinancecoin - Shortlinks', url: 'https://app.freebinancecoin.com', active: GM_getValue('CF Freebinancecoin', true), script: CFfaucetsScript },
        { name: 'CF Freedoge - Shortlinks', url: 'https://app.free-doge.com', active: GM_getValue('CF Freedoge', true), script: CFfaucetsScript },
        { name: 'CF Freetether - Shortlinks', url: 'https://app.freetether.com', active: GM_getValue('CF Freetether', true), script: CFfaucetsScript },
        { name: 'CF Freecardano - Shortlinks', url: 'https://app.freecardano.com', active: GM_getValue('CF Freecardano', true), script: CFfaucetsScript },
        { name: 'CF Freedash - Shortlinks', url: 'https://app.freedash.io', active: GM_getValue('CF Freedash', true), script: CFfaucetsScript },
        { name: 'CF Freeethereum - Shortlinks', url: 'https://app.freeethereum.com', active: GM_getValue('CF Freeethereum', true), script: CFfaucetsScript },
        { name: 'CF Freebfg - Shortlinks', url: 'https://app.freebfg.com', active: GM_getValue('CF Freebfg', true), script: CFfaucetsScript },
        { name: 'CF Freebittorrent - Shortlinks', url: 'https://app.freebittorrent.com', active: GM_getValue('CF Freebittorrent', true), script: CFfaucetsScript },
        { name: 'CF Freepancake - Shortlinks', url: 'https://app.freepancake.com', active: GM_getValue('CF Freepancake', true), script: CFfaucetsScript },
        { name: 'CF Freematic - Shortlinks', url: 'https://app.freematic.com', active: GM_getValue('CF Freematic', true), script: CFfaucetsScript },
        { name: 'CF Freeshibainu - Shortlinks', url: 'https://app.freeshibainu.com', active: GM_getValue('CF Freeshibainu', true), script: CFfaucetsScript },
        { name: 'CF Coinfaucet - Shortlinks', url: 'https://app.coinfaucet.io', active: GM_getValue('CF Coinfaucet', true), script: CFfaucetsScript },
        { name: 'CF Freenem - Shortlinks', url: 'https://app.freenem.com', active: GM_getValue('CF Freenem', true), script: CFfaucetsScript },
        { name: 'CF Freeusdcoin - Shortlinks', url: 'https://app.freeusdcoin.com', active: GM_getValue('CF Freeusdcoin', true), script: CFfaucetsScript },
        { name: 'CF Free-tron - Shortlinks', url: 'https://app.free-tron.com', active: GM_getValue('CF Free-tron', true), script: CFfaucetsScript },
        { name: 'CF Freesteam - Shortlinks', url: 'https://app.freesteam.io', active: GM_getValue('CF Freesteam', true), script: CFfaucetsScript },
        { name: 'CF Freeneo - Shortlinks', url: 'https://app.freeneo.io', active: GM_getValue('CF Freeneo', true), script: CFfaucetsScript },
        { name: 'CF Free-ltc - Shortlinks', url: 'https://app.free-ltc.com', active: GM_getValue('CF Free-ltc', true), script: CFfaucetsScript },
        { name: 'CF Freecryptom - Shortlinks', url: 'https://app.freecryptom.com', active: GM_getValue('CF Freecryptom', true), script: CFfaucetsScript }
        // Add more websites if needed
    ];


    // Create the menu
    const menu = document.createElement('div');
    menu.style.position = 'fixed';
    menu.style.bottom = '50px';
    menu.style.left = '50%'; // Setze den linken Rand auf 50%
    menu.style.transform = 'translateX(-50%)'; // Zentriere das Menü
    menu.style.backgroundColor = '#fff';
    menu.style.padding = '10px';
    menu.style.border = '1px solid #ccc';
    menu.style.display = 'none';
    menu.style.zIndex = '9999';
    menu.style.maxHeight = '300px'; // Zum Beispiel, setze die maximale Höhe auf 300px
    menu.style.overflowY = 'auto'; // Aktiviere das vertikale Scrollen, falls benötigt

    // Create buttons for each website with activation status
    websites.forEach(website => {
        const button = document.createElement('button');
        button.textContent = website.name + (website.active ? ' (Activated)' : ' (Deactivated)');
        button.style.display = 'block';
        button.style.marginBottom = '5px';
        button.style.zIndex = '9999';

        // Click event for left-click (opens the URL)
        button.addEventListener('click', (event) => {
            if (event.button === 0) {
                openWebsite(website.url);
            }
        });

        // Context menu for right-click (activates/deactivates)
        button.addEventListener('contextmenu', (event) => {
            event.preventDefault();
            website.active = !website.active;
            GM_setValue(website.name, website.active);
            button.textContent = website.name + (website.active ? ' (Activated)' : ' (Deactivated)');
        });

        menu.appendChild(button);
    });

    // Create the main button
    const mainButton = document.createElement('button');
    mainButton.textContent = "Faucet Monitor";
    mainButton.style.position = 'fixed';
    mainButton.style.bottom = '10px';
    mainButton.style.left = '50%'; // Setze den linken Rand auf 50%
    mainButton.style.transform = 'translateX(-50%)'; // Zentriere den Button
    mainButton.style.padding = '10px';
    mainButton.style.zIndex = '9999';

    // Show/hide the dropdown menu when the advertisement button is clicked
    mainButton.addEventListener('click', () => {
        if (menu.style.display === 'none') {
            menu.style.display = 'block';
        } else {
            menu.style.display = 'none';
        }
    });

    // Close the menu when a link is clicked
    menu.addEventListener('click', (event) => {
        if (event.target.tagName === 'BUTTON') {
            menu.style.display = 'none';
        }
    });

    // Create the advertisement button
    const advertisementButton = document.createElement('button');
    advertisementButton.textContent = 'Advertisement';
    advertisementButton.style.position = 'fixed';
    advertisementButton.style.bottom = '10px';
    advertisementButton.style.left = '10px';
    advertisementButton.style.padding = '7px'; // Kleinerer Padding-Wert für einen kleineren Button
    advertisementButton.style.fontSize = '14px'; // Kleinerer Schriftgröße für den kleineren Button
    advertisementButton.style.zIndex = '9999';

    // Create the dropdown menu for the advertisement
    const advertisementDropdown = document.createElement('div');
    advertisementDropdown.style.position = 'absolute';
    advertisementDropdown.style.display = 'none';
    advertisementDropdown.style.bottom = '50px'; // Anpassung der Position des Dropdown-Menüs
    advertisementDropdown.style.left = '10px';
    advertisementDropdown.style.backgroundColor = '#fff';
    advertisementDropdown.style.border = '1px solid #ccc';
    advertisementDropdown.style.padding = '5px'; // Anpassung des Padding-Werts für das Dropdown-Menü
    advertisementDropdown.style.fontSize = '14px'; // Anpassung der Schriftgröße für das Dropdown-Menü
    advertisementDropdown.style.zIndex = '9999';

    // Define the advertisement links
    const advertisementLinks = [
        { name: 'Free Cash', url: 'https://freecash.com/r/91a3b4d34b' },
        // Add more advertisement links as needed
    ];

    // Populate the dropdown menu with advertisement links
    advertisementLinks.forEach(advertisement => {
        const linkItem = document.createElement('div');
        linkItem.textContent = advertisement.name;
        linkItem.style.cursor = 'pointer';
        linkItem.addEventListener('click', () => {
            openWebsite(advertisement.url);
            advertisementDropdown.style.display = 'none'; // Hide the dropdown after clicking a link
        });
        advertisementDropdown.appendChild(linkItem);
    });

    // Show/hide the dropdown menu when the advertisement button is clicked
    advertisementButton.addEventListener('click', () => {
        if (advertisementDropdown.style.display === 'none') {
            advertisementDropdown.style.display = 'block';
        } else {
            advertisementDropdown.style.display = 'none';
        }
    });

    // About overlay content
    var aboutContent = `
    <h2>About Faucet Monitor with Faucetpay Rotator</h2>
    <p>This Faucet Monitor is a tool designed to help users manage and monitor various faucets and rotator sites efficiently.</p>
    <p>Developed by Andrewblood.</p>
`;

    // Create About button
    var aboutButton = document.createElement('button');
    aboutButton.textContent = 'About';
    aboutButton.style.padding = '5px';
    aboutButton.style.marginLeft = '5px';

    // Event listener for About button
    aboutButton.addEventListener('click', function() {
        // Create overlay for About
        var aboutOverlay = document.createElement('div');
        aboutOverlay.style.position = 'fixed';
        aboutOverlay.style.top = '50%';
        aboutOverlay.style.left = '50%';
        aboutOverlay.style.transform = 'translate(-50%, -50%)';
        aboutOverlay.style.zIndex = '10001';
        aboutOverlay.style.backgroundColor = '#fff';
        aboutOverlay.style.border = '1px solid #ddd';
        aboutOverlay.style.padding = '20px';
        aboutOverlay.style.maxHeight = '80%';
        aboutOverlay.style.overflowY = 'auto';

        // Add content to About overlay
        aboutOverlay.innerHTML = aboutContent;

        // Create close button for About overlay
        var closeButton = createCloseButton(aboutOverlay);
        aboutOverlay.appendChild(closeButton);

        // Add About overlay to the body
        document.body.appendChild(aboutOverlay);
    });





    // Add elements to the overlay
    overlay.appendChild(showStoredUrlsButton);
    overlay.appendChild(otherRequirementsButton);
    // Add About button to overlay
    overlay.appendChild(aboutButton);
    // Add overlay to the body
    document.body.appendChild(overlay);
    // Add buttons to the document
    document.body.appendChild(menu);
    document.body.appendChild(mainButton);
    // Add the advertisement button and dropdown menu to the document
    document.body.appendChild(advertisementButton);
    document.body.appendChild(advertisementDropdown);



    var currentURL = window.location.href;
    if (currentURL.includes("https://sollcrypto.com/home/page/") || currentURL.includes("https://cryptoclaps.com/earn/") || currentURL.includes("https://baltoniearn.com/claim/tron/") || currentURL.includes("https://vptron.online/TRX/") || currentURL.includes("https://claimcoins.site/reward/") || currentURL.includes("https://bnbminers.site/earns/") || currentURL.includes("https://ltcmines.site/earns/") || currentURL.includes("https://tronxminer.com/rewards/") || currentURL.includes("https://etcoin.site/earn/")) {

        setTimeout(function () {
            location.reload();
        }, 330000);

        var currentPageUrl = window.location.href;

        var indexOfRParameter = currentPageUrl.indexOf("?r=");
        if (indexOfRParameter !== -1) {
            currentPageUrl = currentPageUrl.substring(0, indexOfRParameter);
        }

        var storedUrls = GM_getValue('storedUrls', []) || [];

        // Erster Selector: The faucet does not have sufficient funds for this transaction
        var selector1 = ".alert.alert-danger.fade.show";
        if (isElementVisible(selector1) && document.querySelector(selector1)?.innerText === ' The faucet does not have sufficient funds for this transaction.') {
            var reason1 = 'sufficient funds';
            var timestamp1 = new Date(new Date().getTime() + 24 * 60 * 60 * 1000).toISOString().slice(0, 19).replace('T', ' ');
            saveUrl(currentPageUrl, timestamp1, reason1);
        }

        // Zweiter Selector: Your daily claim limit has been reached. Please come back in tomorrow.
        var selector2 = ".alert.alert-danger.fade.show";
        if (isElementVisible(selector2) && document.querySelector(selector2)?.innerText === ' Your daily claim limit has been reached. Please come back in tomorrow.') {
            var reason2 = 'daily claim limit';
            // Berechne die Zeit für den nächsten Tag um 01:00 Uhr
            var tomorrow = new Date();
            tomorrow.setDate(tomorrow.getDate() + 1);
            tomorrow.setHours(2, 0, 0, 0);
            var timestamp2 = tomorrow.toISOString().slice(0, 19).replace('T', ' ');
            saveUrl(currentPageUrl, timestamp2, reason2);
        }

        function saveUrl(url, timestamp, reason) {
            var urlWithTimestamp = { url: url, timestamp: timestamp, reason: reason };

            var existingUrlIndex = storedUrls.findIndex(function (storedUrl) {
                return storedUrl.url === url;
            });

            if (existingUrlIndex !== -1) {
                storedUrls[existingUrlIndex].timestamp = timestamp;
                storedUrls[existingUrlIndex].reason = reason;
            } else {
                storedUrls.push(urlWithTimestamp);
            }

            GM_setValue('storedUrls', storedUrls);
        }

        // Check if the element with the text "satoshi" or specific error messages is visible
        if ((isElementVisible(".alert.alert-success.fade.show") &&
             document.querySelector(".alert.alert-success.fade.show").innerText.includes('satoshi')) ||
            (isElementVisible(".alert.alert-danger.fade.show") &&
             document.querySelector(".alert.alert-danger.fade.show").innerText === ' The faucet does not have sufficient funds for this transaction.') ||
            (isElementVisible(".alert.alert-danger.fade.show") &&
             document.querySelector(".alert.alert-danger.fade.show").innerText === ' Session invalid, try again') ||
            (isElementVisible(".alert.alert-danger.fade.show") &&
             document.querySelector(".alert.alert-danger.fade.show").innerText === ' Your daily claim limit has been reached. Please come back in tomorrow.')) {
            // Vorhandene URLs mit Timestamps
            var storedUrls = GM_getValue('storedUrls', []) || [];
            // Funktion zum Überprüfen und Verbinden mit der nächsten gültigen URL
            function checkAndConnectNextUrl() {
                // Aktuelle URL ohne den Referral-Code
                var currentUrl = window.location.href.includes('?r=') ? window.location.href.split('?r=')[0] : window.location.href;

                console.log("Current URL:", currentUrl);

                // Suche nach der Position der aktuellen URL in der Liste
                var currentIndex = urls.indexOf(currentUrl);

                console.log("Current Index:", currentIndex);

                var validUrlFound = false;

                // Überprüfe die nächste URL in der Liste
                for (var i = currentIndex + 1; i < currentIndex + urls.length; i++) {
                    var nextUrl = urls[i % urls.length]; // Modulo verwendet, um wieder von vorne zu beginnen

                    console.log("Checking next URL:", nextUrl);

                    // Überprüfe, ob die URL bereits in storedUrls vorhanden ist
                    var storedUrlInfo = storedUrls.find(function (storedUrl) {
                        return storedUrl.url === nextUrl;
                    });

                    console.log("Stored URL Info:", storedUrlInfo);

                    // Wenn die URL nicht in storedUrls vorhanden ist oder das Datum in der Zukunft liegt
                    if (!storedUrlInfo || new Date() > new Date(storedUrlInfo.timestamp)) {
                        // Verbinde mit der gültigen URL
                        console.log("Connecting to the next valid URL:", nextUrl);

                        // Führe hier deine Verbindungslogik durch
                        window.location.href = nextUrl;

                        // Markiere, dass eine gültige URL gefunden wurde
                        validUrlFound = true;

                        // Verlasse die Schleife, da eine gültige URL gefunden wurde
                        break;
                    }
                }

                // Wenn keine gültige URL gefunden wurde, zeige einen Alert
                if (!validUrlFound) {
                    alert("All sites are empty or daily limit reached. Please start the script tomorrow again. You can also change the Faucetpay E-Mail and set all a new time Active");
                    // Schließe das Fenster nach 3 Sekunden (3000 Millisekunden)
                }
            }

            // Beispielaufruf der Funktion
            checkAndConnectNextUrl();
        } else {
            // Element is not visible, so proceed with the actions
            // Check if the Referral Code is in the URL, if not, add it
            var currentURL = window.location.href;
            var referralCode = '[email protected]';

            if (!currentURL.includes(referralCode)) {
                currentURL += referralCode;
                window.location.href = currentURL; // Redirect with the updated URL
            } else {
                // Continue with actions as the Referral Code is already present
                // If the Faucetpay email field is found, fill it with the saved email address
                var faucetpayEmailInput = document.querySelector("#address");
                if (faucetpayEmailInput) {
                    // Abrufen und Einsetzen des gespeicherten Werts
                    var storedEmail = GM_getValue('storedEmail', '');
                    faucetpayEmailInput.value = storedEmail;

                    var loginbutton = document.querySelectorAll('button[data-target="#captchaModal"]');
                    loginbutton[0].click();

                    if (document.querySelector("#captchaModal").innerText.includes('AntiBot links')) {
                        // Check if the pop-up/overlay appears and click the login button if conditions are met
                        var intervalId = setInterval(function() {
                            var antibotLinksValue = document.querySelector("#antibotlinks").value.length;
                            var recaptchaResponseValue = document.querySelector("#g-recaptcha-response").value.length;

                            if (antibotLinksValue > 1 && recaptchaResponseValue > 1) {
                                clearInterval(intervalId);

                                // Click the login button
                                clickButton("#login");
                            }
                        }, 1000);
                    } else {
                        // Check if the pop-up/overlay appears and click the login button if conditions are met
                        var intervalId2 = setInterval(function() {
                            var recaptchaResponseValue = document.querySelector("#g-recaptcha-response").value.length;

                            if (recaptchaResponseValue > 1) {
                                clearInterval(intervalId2);

                                // Click the login button
                                clickButton("#login");
                            }
                        }, 1000);
                    }
                }

            }
        }
    }



    function freebitcoScript() {
        if (window.location.href.includes("https://freebitco.in/signup/?op=s")) {
            if (window.location.href != ("https://freebitco.in/signup/?op=s&r=3595810")) {
                window.location.replace("https://freebitco.in/signup/?op=s&r=3595810");
            }
        }

        if (window.location.href.includes("https://freebitco.in/?op=home")) {
            if (document.querySelector("#free_play_form_button").style.display == "none") {
                console.log("Wait for next Roll.");
                setTimeout(function() {
                    window.close();
                }, 1000 * 30);
            } else {
                if (document.querySelector("#free_wof_spins_msg > a:nth-child(3)")) {
                    console.log("Make the WoF Spins.");
                    window.open("https://freebitco.in/static/html/wof/wof-premium.html");
                }
                console.log("Let's look for Bonus");
                document.querySelector("body > div.large-12.fixed > div > nav > section > ul > li:nth-child(8) > a").click();
                document.querySelector("#rewards_tab > div.row.reward_category_container_main_div > div > div:nth-child(4) > div.reward_category_name").click();
                setTimeout(function() {
                    var yourrwp = parseFloat(document.querySelector("#rewards_tab > div:nth-child(2) > div > div.reward_table_box.br_0_0_5_5.user_reward_points.font_bold").innerText.replace(/,/, ''));
                    console.log("Your current Reward Points are:");
                    console.log(yourrwp);
                    var bonuscost = parseFloat(document.querySelector("#fp_bonus_rewards > div:nth-child(2) > div:nth-child(2) > div.large-6.small-12.columns > div").innerText.replace(/,/, ''));
                    console.log("The Price for 1000% BTC-Bonus is:");
                    console.log(bonuscost);
                    if (yourrwp > bonuscost) {
                        document.querySelector("#fp_bonus_rewards > div:nth-child(2) > div:nth-child(2) > div:nth-child(3) > button").click();
                    } else {
                        console.log("Your balance is too low to buy.");
                    }
                    document.querySelector("#free_play_link_li > a").click();
                }, 1000 * 5);

                // Make the Roll
                setTimeout(function() {
                    if (document.querySelector("#anchor")) {
                        console.log("Wait for Captcha and.....");

                        if (isCaptchaChecked()) {
                            document.querySelector("#free_play_form_button").click();
                            setTimeout(function() {
                                window.close();
                            }, 1000 * 30);
                        }
                    } else {
                        document.querySelector("#free_play_form_button").click();
                        setTimeout(function() {
                            window.close();
                        }, 1000 * 10);
                    }
                }, 1000 * 10);
            }
        }

        if (window.location.href.includes("https://freebitco.in/static/html/wof/wof-premium.html")) {
            setTimeout(function() {
                document.querySelector("#wofc-section > div > div.wofc-spins > p > button:nth-child(2)").click();
            }, 1000 * 10);
            setTimeout(function() {
                window.close();
            }, 1000 * 30);
        }
    }

    function dutchycorpScript() {
        if (window.location.href == "https://autofaucet.dutchycorp.space/signup.php") {
            if (window.location.href != "https://autofaucet.dutchycorp.space/signup.php?r=Andrewblood&s=Script") {
                window.location.replace("https://autofaucet.dutchycorp.space/signup.php?r=Andrewblood&s=Script");
            }
        }

        if (window.location.href.indexOf('login') === -1 && window.location.href.indexOf('register') === -1) {

            // Überprüfe, ob ein Wert im TamperMonkey-Speicher gespeichert ist
            var isRecaptchaEnabled = GM_getValue('recaptchaStatus');

            // Wenn ein Wert im TamperMonkey-Speicher gespeichert ist
            if (isRecaptchaEnabled) {
                runScript();
            } else {
                // Überprüfe, ob wir uns bereits auf der Account-Seite befinden
                if (window.location.href !== 'https://autofaucet.dutchycorp.space/account.php') {
                    // Navigiere zur Seite für die Einstellungen
                    window.location.href = 'https://autofaucet.dutchycorp.space/account.php';
                } else {
                    // Hier werden die Einstellungen vorgenommen und gespeichert
                    document.querySelector("#methods > form > font > form:nth-child(16) > div > input").click();
                    // Finde das Select-Element
                    var selectElement = document.querySelector('select[name="captcha"]');

                    // Überprüfe, ob das Select-Element gefunden wurde
                    if (selectElement) {
                        // Iteriere über alle Optionen im Select-Element
                        var options = selectElement.options;
                        for (var i = 0; i < options.length; i++) {
                            // Überprüfe den Wert der Option
                            if (options[i].value === '3') { // Wert '3' entspricht Recaptcha
                                // Wähle die entsprechende Option aus
                                options[i].selected = true;
                                // Triggere ein "change"-Event, falls nötig
                                var event = new Event('change');
                                selectElement.dispatchEvent(event);
                                break; // Beende die Schleife, wenn die Option gefunden wurde
                            }
                        }
                    }
                    // Aktualisiere das Captcha-Formular, um die Änderung zu speichern
                    var updateButton = document.querySelector('button[name="change-captcha"]');
                    updateButton.click();

                    // Speichere den Wert im TamperMonkey-Speicher
                    GM_setValue('recaptchaStatus', 'enabled');
                }
            }

            // Funktion zum Ausführen des Skripts
            function runScript() {
                setTimeout(function(){
                    location.reload();
                }, 180000);

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/account.php")) {
                    window.location.replace("https://autofaucet.dutchycorp.space/dashboard.php");
                }

                if (window.location.href == "https://autofaucet.dutchycorp.space/dashboard.php") {
                    window.location.replace("https://autofaucet.dutchycorp.space/roll.php");
                }

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/roll.php")) {
                    if (!document.querySelector("#timer")) {
                        setInterval(function() {
                            if (isCaptchaChecked()) {
                                if (document.querySelector(".boost-btn.unlockbutton")) {
                                    document.querySelector(".boost-btn.unlockbutton").click();
                                }
                                if (visibleCheck(document.querySelector("#claim_boosted"))) {
                                    document.querySelector("#claim_boosted").click();
                                }
                            }
                        }, 5000);
                    } else {
                        setTimeout(function() {
                            window.location.replace("https://autofaucet.dutchycorp.space/coin_roll.php");
                        }, 5000);
                    }
                }

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/coin_roll.php")) {
                    if (!document.querySelector("#timer")) {
                        setInterval(function() {
                            if (isCaptchaChecked()) {
                                if (document.querySelector(".boost-btn.unlockbutton")) {
                                    document.querySelector(".boost-btn.unlockbutton").click();
                                }
                                if (visibleCheck(document.querySelector("#claim_boosted"))) {
                                    document.querySelector("#claim_boosted").click();
                                }
                            }
                        }, 5000);
                    } else {
                        setTimeout(function() {
                            window.location.replace("https://autofaucet.dutchycorp.space/ptc/wall.php");
                        }, 5000);
                    }
                }

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/ptc/wall.php")) {
                    var wallLink = document.querySelectorAll(".col.s10.m6.l4 a[name='claim']");
                    if (wallLink.length >= 1) {
                        wallLink[0].style.backgroundColor = "red";
                        let match = wallLink[0].onmousedown.toString().match(/'href', '(.+)'/);
                        let hrefValue = match[1];
                        setTimeout(function() {
                            window.location.replace("https://autofaucet.dutchycorp.space" + hrefValue);
                        }, 5000);
                    } else {
                        setTimeout(function() {
                            window.location.replace("https://autofaucet.dutchycorp.space/ptc/");
                        }, 5000);
                    }
                }

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/ptc/view")) {
                    setInterval(function() {
                        if (document.querySelector("#sec").innerText === 'Payout in  0 seconds') {
                            document.getElementsByClassName("g-recaptcha bordeaux-btn btn-small waves-effect waves-red")[0].click();
                            setTimeout(function() {
                                console.log("Wait for Captcha");
                            }, 30000);
                        } else {
                            console.log("Wait on timer.");
                        }
                    }, 5000);
                }

                if (window.location.href == "https://autofaucet.dutchycorp.space/ptc/") {
                    setInterval(function() {
                        if (document.querySelector("body > div.col.s12 > div.row > div.col.s12.m12.l10 > center:nth-child(1) > h4")) {
                            if (document.querySelector("body > div.col.s12 > div.row > div.col.s12.m12.l10 > center:nth-child(1) > h4").innerText == ' All Available Ads Watched') {
                                window.close();
                            }
                        } else if (visibleCheck(document.getElementsByClassName("g-recaptcha gradient-btn btn-small waves-effect waves-purple")[0])) {
                            document.getElementsByClassName("g-recaptcha gradient-btn btn-small waves-effect waves-purple")[0].click();

                        } else {
                            console.log("Wait on timer.");
                        }
                    }, 5000);
                }
            }

        }
    }

    function CFfaucetsScript() {
        if(window.location.href == ("https://freebitcoin.io/")){
            if(window.location.href != ("https://freebitcoin.io/?ref=804096")){
                window.location.replace("https://freebitcoin.io/?ref=804096")
            }
        }
        if(window.location.href == ("https://freebinancecoin.com/")){
            if(window.location.href != ("https://freebinancecoin.com/?ref=418938")){
                window.location.replace("https://freebinancecoin.com/?ref=418938")
            }
        }
        if(window.location.href === ("https://free-doge.com/")){
            if(window.location.href !== ("https://free-doge.com/?ref=334834")){
                window.location.replace("https://free-doge.com/?ref=334834")
            }
        }
        if(window.location.href == ("https://freeusdcoin.com/")){
            if(window.location.href != ("https://freeusdcoin.com/?ref=237334")){
                window.location.replace("https://freeusdcoin.com/?ref=237334")
            }
        }
        if(window.location.href == ("https://freecryptom.com/")){
            if(window.location.href != ("https://freecryptom.com/?ref=145077")){
                window.location.replace("https://freecryptom.com/?ref=145077")
            }
        }
        if(window.location.href == ("https://free-ltc.com/")){
            if(window.location.href != ("https://free-ltc.com/?ref=278353")){
                window.location.replace("https://free-ltc.com/?ref=278353")
            }
        }
        if(window.location.href == ("https://freedash.io/")){
            if(window.location.href != ("https://freedash.io/?ref=241665")){
                window.location.replace("https://freedash.io/?ref=241665")
            }
        }
        if(window.location.href == ("https://freeneo.io/")){
            if(window.location.href != ("https://freeneo.io/?ref=172683")){
                window.location.replace("https://freeneo.io/?ref=172683")
            }
        }
        if(window.location.href == ("https://freecardano.com/")){
            if(window.location.href != ("https://freecardano.com/?ref=495783")){
                window.location.replace("https://freecardano.com/?ref=495783")
            }
        }
        if(window.location.href == ("https://freebfg.com/")){
            if(window.location.href != ("https://freebfg.com/?ref=34816")){
                window.location.replace("https://freebfg.com/?ref=34816")
            }
        }
        if(window.location.href == ("https://freepancake.com/")){
            if(window.location.href != ("https://freepancake.com/?ref=63758")){
                window.location.replace("https://freepancake.com/?ref=63758")
            }
        }
        if(window.location.href == ("https://freebittorrent.com/")){
            if(window.location.href != ("https://freebittorrent.com/?ref=33463")){
                window.location.replace("https://freebittorrent.com/?ref=33463")
            }
        }
        if(window.location.href == ("https://coinfaucet.io/")){
            if(window.location.href != ("https://coinfaucet.io/?ref=966105")){
                window.location.replace("https://coinfaucet.io/?ref=966105")
            }
        }
        if(window.location.href == ("https://freematic.com/")){
            if(window.location.href != ("https://freematic.com/?ref=102515")){
                window.location.replace("https://freematic.com/?ref=102515")
            }
        }
        if(window.location.href == ("https://freetether.com/")){
            if(window.location.href != ("https://freetether.com/?ref=353801")){
                window.location.replace("https://freetether.com/?ref=353801")
            }
        }
        if(window.location.href == ("https://freesteam.io/")){
            if(window.location.href != ("https://freesteam.io/?ref=190554")){
                window.location.replace("https://freesteam.io/?ref=190554")
            }
        }
        if(window.location.href == ("https://freenem.com/")){
            if(window.location.href != ("https://freenem.com/?ref=367461")){
                window.location.replace("https://freenem.com/?ref=367461")
            }
        }
        if(window.location.href == ("https://freeshibainu.com/")){
            if(window.location.href != ("https://freeshibainu.com/?ref=206136")){
                window.location.replace("https://freeshibainu.com/?ref=206136")
            }
        }
        if(window.location.href == ("https://free-tron.com/")){
            if(window.location.href != ("https://free-tron.com/?ref=526291")){
                window.location.replace("https://free-tron.com/?ref=526291")
            }
        }
        if(window.location.href == ("https://freeethereum.com/")){
            if(window.location.href != ("https://freeethereum.com/?ref=430971")){
                window.location.replace("https://freeethereum.com/?ref=430971")
            }
        }



        setInterval(function() {
            if (window.location.href.includes("free-rolls")) {
                setTimeout(function(){
                    window.location.replace("promotion/csw1td1eqp");
                }, 5000);
            }
        }, 1000);

        if (window.location.href.includes("csw1td1eqp")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.location.replace("q5rlm6ot3r")
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }

        if (window.location.href.includes("q5rlm6ot3r")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.location.replace("ykxlvmg9ja")
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }

        if (window.location.href.includes("ykxlvmg9ja")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.location.replace("ki2r0jq5r0")
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }

        if (window.location.href.includes("ki2r0jq5r0")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.location.replace("n6kr3x7p5u")
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }

        if (window.location.href.includes("n6kr3x7p5u")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.location.replace("5g57e0vksm")
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }

        if (window.location.href.includes("5g57e0vksm")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.close()
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }
    }





    websites.forEach(website => {
        if (website.active && window.location.href.includes(website.url)) {
            website.script();
        }
    });

})();