Туториалы по обходу капчи

Как обойти капчу в брузере через Tampermonkey

Как  обойти капчу в брузере через Tampermonkey

How to bypass captcha using Tampermonkey

Если автоматизируете работу с сайтами — будь то парсинг, автотесты или автозаполнение форм — рано или поздно вы столкнётесь с капчей. Большинство решений требуют серверной интеграции, но в ряде случаев достаточно простого скрипта в браузере.

В этой статье я покажу, как с помощью расширения Tampermonkey и API обхода. Всё — на чистом JavaScript, без серверной части.

Что понадобится

  • Расширение Tampermonkey
  • Аккаунт на 2Captcha и API-ключ
  • Базовое знание JavaScript и умение работать в DOM

Установка Tampermonkey

  1. Установите расширение Tampermonkey для вашего браузера (Chrome, Firefox, Edge)
  2. Перейдите в панель расширения → Create a new script
  3. Удалите шаблонный код и вставьте подходящий скрипт из списка далее

Решение reCAPTCHA через Tampermonkey

reCAPTCHA v2 — это классическая "Я не робот" капча или её версия с изображениями. В HTML она выглядит так:

<div class="g-recaptcha" data-sitekey="..."></div>

Скрипт ниже:

  • находит sitekey на странице
  • создаёт задачу в 2Captcha через API v2
  • опрашивает результат
  • вставляет полученный токен
  • автоматически отправляет форму, если она найдена

Скрипт для reCAPTCHA v2

// ==UserScript==
// @name         Auto reCAPTCHA v2 Solver with 2Captcha
// @namespace    https://your-captcha-service.com/
// @version      1.0
// @description  Автоматически решает reCAPTCHA v2 с помощью API 2Captcha
// @match        *://*/*
// @grant        none
// ==/UserScript==

(async function () {
  const API_KEY = 'ВАШ_API_КЛЮЧ_2CAPTCHA';
  const sleep = ms => new Promise(r => setTimeout(r, ms));

  const recaptcha = document.querySelector('.g-recaptcha[data-sitekey]');
  if (!recaptcha) return;

  const sitekey = recaptcha.getAttribute('data-sitekey');
  const pageUrl = location.href;

  const createTask = async () => {
    const res = await fetch('https://api.2captcha.com/createTask', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        clientKey: API_KEY,
        task: {
          type: 'RecaptchaV2TaskProxyless',
          websiteURL: pageUrl,
          websiteKey: sitekey,
          isInvisible: false
        }
      })
    });
    const data = await res.json();
    if (data.errorId !== 0) throw new Error(data.errorDescription);
    console.log('[2Captcha] Задача создана:', data.taskId);
    return data.taskId;
  };

  const getToken = async (taskId) => {
    for (let i = 0; i < 24; i++) {
      await sleep(5000);
      const res = await fetch('https://api.2captcha.com/getTaskResult', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ clientKey: API_KEY, taskId })
      });
      const data = await res.json();
      if (data.status === 'ready') return data.solution.gRecaptchaResponse;
    }
    throw new Error('Таймаут: капча не решена вовремя');
  };

  const token = await getToken(await createTask());
  console.log('[2Captcha] Токен получен');

  let el = document.querySelector('[name="g-recaptcha-response"]');
  if (!el) {
    el = document.createElement('textarea');
    el.name = 'g-recaptcha-response';
    el.style.display = 'none';
    document.body.appendChild(el);
  }
  el.value = token;

  const form = recaptcha.closest('form');
  if (form) form.submit();
})();

Решение hCaptcha через Tampermonkey

hCaptcha — альтернатива reCAPTCHA, активно используется на сайтах, защищённых Cloudflare. В HTML выглядит так:

<div class="h-captcha" data-sitekey="..."></div>

Для её распознавания нужен другой тип задачи в API: HCaptchaTaskProxyless.

Скрипт для hCaptcha

// ==UserScript==
// @name         Auto hCaptcha Solver with 2Captcha
// @namespace    https://your-captcha-service.com/
// @version      1.0
// @description  Автоматически решает hCaptcha с помощью API 2Captcha
// @match        *://*/*
// @grant        none
// ==/UserScript==

(async function () {
  const API_KEY = 'ВАШ_API_КЛЮЧ_2CAPTCHA';
  const sleep = ms => new Promise(r => setTimeout(r, ms));

  const hcaptcha = document.querySelector('.h-captcha[data-sitekey]');
  if (!hcaptcha) return;

  const sitekey = hcaptcha.getAttribute('data-sitekey');
  const pageUrl = location.href;

  const createTask = async () => {
    const res = await fetch('https://api.2captcha.com/createTask', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        clientKey: API_KEY,
        task: {
          type: 'HCaptchaTaskProxyless',
          websiteURL: pageUrl,
          websiteKey: sitekey
        }
      })
    });
    const data = await res.json();
    if (data.errorId !== 0) throw new Error(data.errorDescription);
    console.log('[2Captcha] Задача создана:', data.taskId);
    return data.taskId;
  };

  const getToken = async (taskId) => {
    for (let i = 0; i < 24; i++) {
      await sleep(5000);
      const res = await fetch('https://api.2captcha.com/getTaskResult', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ clientKey: API_KEY, taskId })
      });
      const data = await res.json();
      if (data.status === 'ready') return data.solution.gRecaptchaResponse;
    }
    throw new Error('Таймаут: капча не решена вовремя');
  };

  const token = await getToken(await createTask());
  console.log('[2Captcha] Токен получен');

  let el = document.querySelector('[name="h-captcha-response"]');
  if (!el) {
    el = document.createElement('textarea');
    el.name = 'h-captcha-response';
    el.style.display = 'none';
    document.body.appendChild(el);
  }
  el.value = token;

  const form = hcaptcha.closest('form');
  if (form) form.submit();
})();

Что может пойти не так

  • Капча не найдена? Подождите загрузки страницы или используйте MutationObserver
  • Токен не работает? Возможно, сайт требует триггера JS-события (например, click)
  • Задача не решается? Убедитесь, что баланс на 2Captcha не нулевой

Заключение

Tampermonkey и API 2Captcha позволяют полностью автоматизировать решение капчи прямо в браузере. Это удобно для:

  • автотестов
  • автозаполнения форм
  • быстрой проверки защищённых страниц

Если нужна поддержка invisible капч, Cloudflare Turnstile или прокси — напишите в поддержку, отправим отдельный скрипт.