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

Как обойти капчи на любом сайте через Greasy Fork

Как обойти капчи на любом сайте через Greasy Fork

Если при тестировании или парсинге вы сталкиваетесь с reCAPTCHA или другой капчей, нет нужды подключать Selenium, Puppeteer или писать серверный код. Достаточно внедрить userscript прямо в браузер и поручить решение сервису 2Captcha.

В этой статье — как написать свои userscripts для Tampermonkey или Greasy Fork. Пример показан для reCAPTCHA.

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

  • Аккаунт на 2Captcha и API-ключ
  • Расширение Tampermonkey или Violentmonkey
  • Скрипт (локальный или опубликованный через Greasy Fork)
  • Базовые знания JavaScript

Обход reCAPTCHA в Greasy Fork

reCAPTCHA v2 — это либо чекбокс “Я не робот”, либо задание с изображениями. Решается через RecaptchaV2TaskProxyless.

Скрипт ниже:

  • Ищет data-sitekey на странице
  • Создаёт задачу в 2Captcha
  • Ждёт решения
  • Вставляет токен
  • Отправляет форму
// ==UserScript==
// @name         reCAPTCHA Solver GreasyFork
// @namespace    https://example.com/
// @version      1.0
// @description  Решает reCAPTCHA v2 с помощью 2Captcha API
// @match        *://*/*
// @grant        none
// ==/UserScript==

(async function () {
  const API_KEY = 'YOUR_2CAPTCHA_API_KEY';
  const sleep = ms => new Promise(r => setTimeout(r, ms));

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

  const sitekey = el.getAttribute('data-sitekey');
  const url = window.location.href;

  const task = await fetch('https://api.2captcha.com/createTask', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      clientKey: API_KEY,
      task: {
        type: 'RecaptchaV2TaskProxyless',
        websiteKey: sitekey,
        websiteURL: url,
        isInvisible: false
      }
    })
  }).then(res => res.json());

  if (task.errorId) throw new Error(task.errorDescription);
  const taskId = task.taskId;

  let token;
  for (let i = 0; i < 20; i++) {
    await sleep(5000);
    const result = await fetch('https://api.2captcha.com/getTaskResult', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ clientKey: API_KEY, taskId })
    }).then(res => res.json());

    if (result.status === 'ready') {
      token = result.solution.gRecaptchaResponse;
      break;
    }
  }

  if (!token) throw new Error('Таймаут: капча не решена');

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

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

Если вы хотите использовать этот скрипт на Greasy Fork — просто загрузите его туда и проверьте, что @match охватывает нужные страницы. Скрипты универсальны и работают везде, где на странице есть капча.

Полезные материалы