Stake Reload Claimer

Automatically claims rewards on stake.bet VIP page

  1. // ==UserScript==
  2. // @name Stake Reload Claimer
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description Automatically claims rewards on stake.bet VIP page
  6. // @author Sylomex
  7. // @match https://stake.bet/fr?tab=reload&modal=vip
  8. // @grant none
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. const CLAIM_BUTTON_SELECTOR = '[data-testid="vip-reward-claim-reload"]';
  16. const RELOAD_BUTTON_SELECTOR = '[data-test="claim-reload"]';
  17. const REFRESH_INTERVAL = 180000; // 30 seconds
  18. const CLAIM_DELAY = 5000; // 5 seconds
  19. const TARGET_URL = 'https://stake.bet/fr?tab=reload&modal=vip';
  20.  
  21. function simulateClick(element) {
  22. // Simulation d'un clic avec différentes méthodes
  23. try {
  24. element.click();
  25. element.dispatchEvent(new MouseEvent('click', {
  26. view: window,
  27. bubbles: true,
  28. cancelable: true
  29. }));
  30. } catch (error) {
  31. console.log('Erreur lors du clic:', error);
  32. }
  33. }
  34.  
  35. function checkAndClickClaimButton() {
  36. // Recherche du bouton "Réclamer" avec plusieurs sélecteurs possibles
  37. const claimButton = document.querySelector(CLAIM_BUTTON_SELECTOR) ||
  38. document.querySelector('button[data-analytics="vip-reward-claim-reload"]');
  39.  
  40. if (claimButton && !claimButton.disabled) {
  41. console.log('Bouton Réclamer trouvé, tentative de clic...');
  42. simulateClick(claimButton);
  43. console.log('Clic effectué sur le bouton Réclamer, attente de 10 secondes...');
  44.  
  45. setTimeout(() => {
  46. // Recherche du bouton "Demander la recharge" avec plusieurs sélecteurs possibles
  47. const reloadButton = document.querySelector(RELOAD_BUTTON_SELECTOR) ||
  48. document.querySelector('button[data-analytics="claim-reload"]') ||
  49. document.querySelector('button[data-testid="password-reset-button"]');
  50.  
  51. if (reloadButton) {
  52. console.log('Tentative de clic sur le bouton Demander la recharge...');
  53. simulateClick(reloadButton);
  54. console.log('Clic effectué sur le bouton Demander la recharge');
  55. } else {
  56. console.log('Bouton Demander la recharge non trouvé');
  57. }
  58. }, CLAIM_DELAY);
  59.  
  60. return true;
  61. }
  62.  
  63. return false;
  64. }
  65.  
  66. function init() {
  67. console.log('Script démarré');
  68.  
  69. // Vérification initiale
  70. if (!checkAndClickClaimButton()) {
  71. console.log('Pas de bouton Réclamer actif, rafraîchissement dans 30 secondes...');
  72.  
  73. // Rafraîchissement périodique si aucun bouton n'est trouvé
  74. setTimeout(() => {
  75. window.location.href = TARGET_URL;
  76. }, REFRESH_INTERVAL);
  77. }
  78.  
  79. // Configuration du MutationObserver pour surveiller les changements du DOM
  80. const observer = new MutationObserver((mutations) => {
  81. checkAndClickClaimButton();
  82. });
  83.  
  84. // Démarrage de l'observation du document
  85. observer.observe(document.body, {
  86. childList: true,
  87. subtree: true
  88. });
  89. }
  90.  
  91. // Attente du chargement complet de la page
  92. if (document.readyState === 'loading') {
  93. document.addEventListener('DOMContentLoaded', init);
  94. } else {
  95. init();
  96. }
  97. })();