您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically clicks the "I'm not a robot" checkbox on reCaptcha V2, reCaptcha V2 callback, reCaptcha V2 Enterprise, and hCaptcha captchas
// ==UserScript== // @name Auto Click "I'm not a robot" // @namespace http://tampermonkey.net/ // @version 0.9 // @description Automatically clicks the "I'm not a robot" checkbox on reCaptcha V2, reCaptcha V2 callback, reCaptcha V2 Enterprise, and hCaptcha captchas // @author JJJ // @match *://*/* // @icon https://pngimg.com/uploads/robot/robot_PNG96.png // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; // Constants for selectors and attributes const CHECKBOX = "#checkbox"; const ARIA_CHECKED = "aria-checked"; // Utility function to select a single element function qSelector(selector) { return document.querySelector(selector); } // Utility function to check if an element is hidden function isHidden(el) { return (el.offsetParent === null); } // Handler for reCaptcha V2 const reCaptchaV2Handler = { // Find the checkbox element for reCaptcha V2 findCheckboxElement() { return document.querySelector('.recaptcha-checkbox-border') || document.querySelector('[role="checkbox"][aria-labelledby="recaptcha-anchor-label"]') || qSelector(CHECKBOX); }, // Solve the reCaptcha V2 by clicking the checkbox solve() { const checkbox = this.findCheckboxElement(); if (checkbox && !isHidden(checkbox) && checkbox.getAttribute(ARIA_CHECKED) !== "true") { checkbox.click(); } } }; // Handler for reCaptcha V2 callback const reCaptchaV2CallbackHandler = { // Find the callback function for reCaptcha V2 findCallbackFunction() { if (typeof ___grecaptcha_cfg !== 'undefined') { const keys = Object.keys(___grecaptcha_cfg.clients).filter(key => key !== 'load'); for (const key of keys) { const client = ___grecaptcha_cfg.clients[key]; if (client && typeof client.hl?.l?.callback === 'function') { return client.hl.l.callback; } } } return null; }, // Solve the reCaptcha V2 by invoking the callback function solve() { const callbackFn = this.findCallbackFunction(); if (typeof callbackFn === 'function') { callbackFn(); } } }; // Handler for reCaptcha V2 Enterprise const reCaptchaV2EnterpriseHandler = { // Find the checkbox element for reCaptcha V2 Enterprise findEnterpriseCheckboxElement() { return document.querySelector('.enterprise-checkbox') || document.querySelector('[aria-labelledby="recaptcha-accessible-status"]'); }, // Solve the reCaptcha V2 Enterprise by clicking the checkbox solve() { const checkbox = this.findEnterpriseCheckboxElement(); if (checkbox && !isHidden(checkbox) && checkbox.getAttribute(ARIA_CHECKED) !== "true") { checkbox.click(); } } }; // Handler for hCaptcha const hCaptchaHandler = { // Find the checkbox element for hCaptcha findCheckboxElement() { return document.querySelector('.hcaptcha-checkbox') || document.querySelector('[aria-labelledby="hcaptcha-anchor-label"]'); }, // Solve the hCaptcha by clicking the checkbox solve() { const checkbox = this.findCheckboxElement(); if (checkbox && !isHidden(checkbox) && checkbox.getAttribute(ARIA_CHECKED) !== "true") { checkbox.click(); } } }; // Main captcha solver that tries to solve all types of captchas const captchaSolver = { solve() { reCaptchaV2Handler.solve(); reCaptchaV2CallbackHandler.solve(); reCaptchaV2EnterpriseHandler.solve(); hCaptchaHandler.solve(); } }; // Initialize a MutationObserver to detect changes in the DOM function initializeObserver() { const observer = new MutationObserver((mutations) => { for (const mutation of mutations) { if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { captchaSolver.solve(); } } }); observer.observe(document.body, { childList: true, subtree: true }); } // Initialize the script function init() { captchaSolver.solve(); // Periodically try to solve captchas setInterval(() => { captchaSolver.solve(); }, 1000); } // Check if the document is still loading if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => { initializeObserver(); init(); }); } else { initializeObserver(); init(); } // Compatibility check for supported browsers const userAgent = navigator.userAgent.toLowerCase(); const isCompatibleBrowser = ['chrome', 'edg', 'brave', 'firefox'].some(browser => userAgent.includes(browser)); console.log(isCompatibleBrowser ? 'Running on a compatible browser' : 'Running on an unsupported browser'); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址