- // ==UserScript==
- // @name [Premium] Faucet Monitor with Faucetpay ReCaptcha/Antibot Rotator
- // @namespace https://greasyfork.org/users/1162863
- // @version 2.6
- // @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/*
- // @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 and in the description. (No win decrease for you, it's a thank you to me for the share)
- // @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 coinfinity.top for the interface 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', url: 'https://freebitco.in', active: GM_getValue('Freebitco.in', true) },
- { name: 'Dutchycorp', url: 'https://autofaucet.dutchycorp.space', active: GM_getValue('Dutchycorp', true) },
- // Add more websites
- ];
-
- // 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';
-
- // 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: 'Advertisement 1', url: 'https://example.com/advertisement1' },
- { name: 'Advertisement 2', url: 'https://example.com/advertisement2' },
- // 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(0, 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 = '?r=m.warchol@gmx.at';
-
- 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);
- }
- }
-
- }
- }
- }
-
- // Dutchycorp Script
- websites.forEach(website => {
- if (website.active && window.location.href.includes(website.url)) {
-
- 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);
- }
-
- }
-
-
-
- }
-
- }
-
-
- });
-
- // Freebitco.in Script
- websites.forEach(website => {
- if (website.active && window.location.href.includes(website.url)) {
- 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);
- }
- }
- });
-
- })();