Логотип «2Captcha»Перейти на главную страницу
Туториалы по обходу капчи

Как обойти ВК капчу

Введение

ВКонтакте использует многоуровневую систему защиты от автоматизированных запросов, ключевым элементом которой является капча. Изначально проверка работала по классической схеме «картинка + ввод текста», но в последних обновлениях платформа полностью перешла на токеновую модель. Теперь успешное прохождение зависит не только от распознанного ответа, но и от корректности передаваемых параметров, цифровых отпечатков окружения и состояния сессии.

В этом руководстве мы разберём два способа решения с помощью токена и методом изображения, а также актуальный технический стек интеграции: от извлечения необходимых параметров в браузере до формирования корректных API-запросов и обработки ответов. Вы узнаете, какие данные нужны для успешного прохождения проверки, как правильно настроить прокси и User-Agent, а также получите примеры кода и таблицу частых ошибок для быстрой отладки.


Что изменилось

Было Стало
Достаточно session_token Требуется полный redirectUri
Токен живёт ~3 минуты Срок жизни зависит от сессии, но свежесть redirectUri критична
Можно использовать любой User-Agent Требуется актуальный User-Agent

Подготовка: обязательные параметры

Свойство Обязателен Описание
type Да Тип задачи: VKCaptchaTask
redirectUri Да Полный URL, который возвращается в ответ на запросы к API капчи ВКонтакте. Содержит все необходимые параметры сессии
userAgent Да Строка User-Agent браузера, который будет использован при загрузке и решении капчи. Должен совпадать с тем, что использовался при получении redirectUri
proxyType Да Тип прокси-сервера: http, https или socks5
proxyAddress Да IP-адрес или имя хоста прокси-сервера
proxyPort Да Порт прокси-сервера (например, 8080)
proxyLogin Да Логин для аутентификации на прокси-сервере
proxyPassword Да Пароль для аутентификации на прокси-сервере

Пошаговая инструкция: решение через redirectUri

Шаг 1: Получите redirectUri

  1. Откройте DevTools (F12) → вкладка Network
  2. Включите Preserve log (чтобы логи не очищались при переходах)
  3. Выполните действие, вызывающее капчу (вход, лайк, отправка сообщения)
  4. Найдите запрос, содержащий:
    • captcha
    • not_robot
    • id.vk.com
    • success_token
  5. Скопируйте полный URL из колонки Request URL

Пример redirectUri:

Copy
https://id.vk.com/not_robot_captcha?domain=vk.com&session_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&variant=popup&blank=1&adFp=xyz123

Не извлекайте отдельные параметры — передавайте весь URL целиком.

Шаг 2: Отправьте задачу на решение

Эндпоинт создания задачи: https://api.2captcha.com/createTask

Пример запроса (JSON):

json Copy
{
  "clientKey": "ВАШ_API_КЛЮЧ",
  "task": {
    "type": "VKCaptchaTask",
    "redirectUri": "https://id.vk.com/not_robot_captcha?domain=vk.com&session_token=eyJ...&variant=popup&blank=1",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36",
    "proxyType": "http",
    "proxyAddress": "192.168.1.1",
    "proxyPort": 8080,
    "proxyLogin": "login",
    "proxyPassword": "password"
  }
}

Шаг 3: Получите ID задачи

В ответе вы получите:

json Copy
{
  "errorId": 0,
  "taskId": "1234567890"
}

Сохраните taskId для последующего опроса статуса.

Шаг 4: Запросите результат

Эндпоинт получения результата: https://api.2captcha.com/getTaskResult

Запрос:

json Copy
{
  "clientKey": "ВАШ_API_КЛЮЧ",
  "taskId": "1234567890"
}

Успешный ответ:

json Copy
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
  }
}

Шаг 5: Используйте токен

Добавьте полученный токен в оригинальный запрос к VK:

json Copy
{
  "login": "ваш_логин",
  "password": "ваш_пароль",
  "captcha_key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

Токен действителен ~3-5 минут — используйте его немедленно!


Пример на Python

python Copy
# Для получения капчи либо несколько раз запускаем скрипт либо руками несколько раз пытаемся войти
import os
import time
from pprint import pprint
import requests
from selenium.webdriver.common.by import By
from seleniumbase import SB
from actual_proxy import *

url = "https://vk.com/"
proxy = proxy_russia  # формат прокси "LOGIN:PASSWORD@ADRESS:PORT"
login = '1053893238'
my_key = os.environ["APIKEY"]

agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
with SB(uc=False,
        proxy=proxy,
        locale_code='en',
        # devtools=True,
        # incognito=True
        ) as sb:
    sb.set_window_position(0, 0)
    sb.set_window_size(1000, 800)
    sb.open(url)
    sb.click('#START_QR_PAGE > div > div.vkuiPanel__centered > div > button:nth-child(8) > span')
    try:
        sb.click("#ENTER_LOGIN_PAGE > div > form > div.PhoneMaskBuilder-module_phoneMaskBuilder__Xhp8T > div.vkuiSegmentedControl__host.vkuiSegmentedControl__sizeL.vkuiRootComponent__host > div > label:nth-child(3)")
    except:
        time.sleep(10)

    sb.type('input[name="login"]', login)
    sb.click('#ENTER_LOGIN_PAGE > div > form > button.vkuiInternalTappable.vkuiButton__host.vkuiButton__sizeL.vkuiButton__modePrimary.vkuiButton__appearanceAccent.vkuiButton__stretched.vkuiTappable__host.vkuiTappable__hasPointerNone.vkuiClickable__host.vkuiClickable__realClickable.vkuistyles__-focus-visible.vkuiRootComponent__host > span')
    time.sleep(10)
    # breakpoint()
    frame = sb.find_element(By.TAG_NAME, 'iframe', timeout=30)
    print("Капчу вижу")
    sb.switch_to_frame(frame)
    token_sess = sb.execute_script('return window.init.data.session_token')

    print('token_session:', token_sess)

    print("Wait solution...")
    data = {
        "clientKey": my_key,
        "task": {
            "type": "VKCaptchaTask",
            "userAgent": agent,
            "sessionToken": token_sess,
            "proxyType": "HTTP",
            "proxyAddress": proxy.split('@')[1].split(':')[0],
            "proxyPort": proxy.split('@')[1].split(':')[1],
            "proxyLogin": proxy.split('@')[0].split(':')[0],
            "proxyPassword": proxy.split('@')[0].split(':')[1]
        }
    }
    response = requests.post("https://api.2captcha.com/createTask", json=data).json()
    print(response)
    if response['errorId'] == 0:
        time.sleep(20)
        data = {
       "clientKey": my_key,
       "taskId": response['taskId']
    }
    result = requests.post(f"https://api.2captcha.com/getTaskResult", json=data).json()
    pprint(result)

Альтернативный метод: решение капчи через изображение (подходит только для типа капчи “калейдоскоп”)

Если токеновый метод по redirectUri не подходит под вашу задачу, можно использовать классический подход — решение капчи через изображение с эмуляцией действий пользователя.

Как это работает

  1. Клик по чекбоксу — после взаимодействия с виджетом капчи загружается изображение: набор картинок в виде калейдоскопа.
  2. Извлечение данных — для решения необходимо передать два параметра:
    • image — исходное изображение капчи в формате base64
    • steps — схема перестановок, которая приходит вместе с капчей
  3. Обработка на нашей стороне — наши работники собирают изображение в правильном порядке и возвращает схему с указанием верных шагов.
  4. Применение ответа — вы отправляете полученную схему обратно в запрос к ВКонтакте.

Где взять параметры

Оба значения (image и steps) находятся в ответе на запрос загрузки виджета капчи:

Copy
https://api.vk.com/method/captchaNotRobot.getContent?v={API_VER}

В ответе API ищите поля:

  • captcha_image или аналогичное — содержит изображение в base64
  • steps — массив чисел, описывающий порядок перестановки элементов

Пример запроса на решение

json Copy
{
  "clientKey": "ВАШ_API_КЛЮЧ",
  "task": {
    "type": "VKCaptchaImageTask",
    "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
    "steps": [5,19,14,14,6,4,8,9,23,23,14,23,3,13,16,8,2,4,6,16,1,1,3,12,23,18,12,24,17,7,6,22,2,4,0,22,3,18,11,5,4,5,6,14,22,21,6,10,0,3,14,18,19,2,24,0,3,23,9,21,5,24,21,0,4,15,14,21,8,5,17,19,12,19,15,17,21,11,8,4,15,0,18,16,19,4,19,20,21,22,16,10,20,12,19,5,23,24,8]
  }
}

Ответ и применение результата

После обработки вы получите схему действий, которую нужно передать в оригинальный запрос к ВКонтакте как параметр captcha_key или в соответствии с форматом, ожидаемым методом captchaNotRobot.check.

Обработка ошибок и рекомендации по частоте запросов

Контроль количества попыток

Если вы получаете 2-3 ошибки подряд ( ERROR_CAPTCHA_UNSOLVABLE) при обращении к API:

  1. Смените аккаунт ВКонтакте — платформа может временно ограничить аккаунт при подозрении на автоматизацию. Даже при корректной технической реализации частые запросы триггерят защитные механизмы.

  2. Сделайте паузу — дайте текущему аккаунту «отдохнуть» 15-30 минут перед повторными попытками. Это снижает риск длительной блокировки.

  3. Проверьте параметры запроса — убедитесь, что redirectUri свежий, userAgent совпадает с браузером, а прокси работает стабильно.

Интервалы между запросами

Из-за усложнения алгоритмов проверки ВКонтакте время решения капчи увеличилось. Чтобы избежать ошибок и таймаутов:

  • Опрашивайте статус задачи каждые 10 секунд — этого достаточно для получения результата и не создаёт излишней нагрузки.
  • Не отправкайте новые задачи слишком часто — если вы работаете в цикле, добавляйте задержку между итерациями (минимум 5-10 секунд).
  • Используйте экспоненциальную задержку при повторных попытках — если запрос не удался, увеличивайте интервал перед следующей попыткой.

💡 Практический совет: Если вы обрабатываете капчи в потоке или массово, реализуйте очередь задач с контролем частоты (rate limiting).


Полезные ссылки

Что важно запомнить:

  • Успех решения капчи зависит от совокупности факторов: свежего redirectUri, корректного User-Agent, качественного прокси и правильного порядка действий.
  • Даже при идеальной технической реализации стоит закладывать обработку ошибок и механизмы повторных попыток — система защиты ВКонтакте может меняться без предупреждения.

Интеграция обхода капчи — это не разовая настройка, а процесс, требующий мониторинга и адаптации. Если вы строите стабильное решение, предусмотрите логирование, алерты при росте ошибок и возможность быстрого обновления параметров запроса.

Заключение

ВКонтакте постоянно совершенствует механизмы защиты, и капча сегодня — это сложный многофакторный инструмент, который анализирует не только ответ пользователя, но и контекст запроса: отпечатки браузера, поведенческие паттерны, сетевые параметры и состояние сессии.

Надеемся, это руководство поможет вам реализовать надёжную интеграцию и сэкономить время на отладке.