Looking for international version of our service? Go to 2captcha.com

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

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

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

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

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

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

  • Аккаунт на ruCaptcha и 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 охватывает нужные страницы. Скрипты универсальны и работают везде, где на странице есть капча.

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