Технические разборы

Что такое Solve Media CAPTCHA

Solve Media CAPTCHA (теперь часть Permit.io / Radius Networks) представляла собой основанную на рекламе CAPTCHA, которая заменяла искаженный случайный текст брендовыми сообщениями и слоганами. Вместо ввода «aX3kP» пользователи вводили узнаваемую фразу, например «Качество, которому можно доверять».

Хотя Solve Media сегодня менее распространена, она все еще появляется на некоторых веб-сайтах. Он работает как стандартная текстовая CAPTCHA и может быть решен с помощью того же подхода к распознаванию изображений.


Как работает Solve Media

  1. Виджет загружает и отображает рекламное сообщение в виде изображения.
  2. Пользователь читает фразу бренда и вводит ее в поле ввода.
  3. Ответ проверяется серверами Solve Media.
  4. Если все верно, отправка формы продолжается.
┌─────────────────────────────────┐
│                                 │
│   "Taste The Rainbow"           │
│                                 │
├─────────────────────────────────┤
│ Type the phrase: [____________] │
│                     [Verify]    │
└─────────────────────────────────┘

Solve Media против стандартных текстовых CAPTCHA

Особенность Решить Медиа Стандартная текстовая капча
Текстовый контент Фирменные фразы, английские слова Случайные персонажи
Читабельность Высокий (предназначен для читаемости) Низкий (должен быть жестким)
Искажение Минимальный Тяжелый
Модель дохода Реклама Никто
Сложность для OCR Легко (чистый текст) Жесткий (искаженный)
Пользовательский опыт подходящий (узнаваемые слова) Хуже (трудно читать)

Идентификация Solve Media на странице

Ищите эти маркеры:

<!-- Solve Media script -->
<script src="https://api.solvemedia.com/papi/challenge.script"></script>

<!-- Widget container -->
<div id="adcopy-outer"></div>

<!-- Hidden response fields -->
<input type="hidden" name="adcopy_challenge" />
<input type="hidden" name="adcopy_response" />

Элементы с идентификаторами, начинающимися с adcopy- или solvemedia, обозначают Solve Media CAPTCHA.


Решение Solve Media с помощью CaptchaAI

Поскольку Solve Media отображает текст на изображении, его можно решить с помощью стандартного метода распознавания изображений:

Питон

import requests
import time
import base64

API_KEY = "YOUR_API_KEY"

# Capture the CAPTCHA image
# Method 1: Screenshot the widget
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://example.com/page-with-solvemedia")

captcha_img = driver.find_element(By.CSS_SELECTOR, "#adcopy-puzzle-image img")
captcha_img.screenshot("solvemedia.png")

# Submit to CaptchaAI
with open("solvemedia.png", "rb") as f:
    img_b64 = base64.b64encode(f.read()).decode()

response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "base64",
    "body": img_b64,
    "phrase": 1,      # Contains spaces (multi-word phrase)
    "json": 1
})

task_id = response.json()["request"]

# Poll for solution
for _ in range(30):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY, "action": "get", "id": task_id, "json": 1
    }).json()
    if result.get("status") == 1:
        text = result["request"]
        print(f"Phrase: {text}")
        break

# Type the phrase
driver.find_element(By.CSS_SELECTOR, "#adcopy_response").send_keys(text)
driver.find_element(By.CSS_SELECTOR, "form").submit()

Node.js

const axios = require('axios');
const fs = require('fs');

async function solveSolveMedia(imagePath) {
  const imageB64 = fs.readFileSync(imagePath).toString('base64');

  const submit = await axios.post('https://ocr.captchaai.com/in.php', null, {
    params: {
      key: 'YOUR_API_KEY',
      method: 'base64',
      body: imageB64,
      phrase: 1,
      json: 1
    }
  });

  const taskId = submit.data.request;

  for (let i = 0; i < 30; i++) {
    await new Promise(r => setTimeout(r, 5000));
    const res = await axios.get('https://ocr.captchaai.com/res.php', {
      params: { key: 'YOUR_API_KEY', action: 'get', id: taskId, json: 1 }
    });
    if (res.data.status === 1) return res.data.request;
  }
  throw new Error('Timeout');
}

Ключевые соображения

Кончик Почему
Установить phrase=1 Решить Медиа-фразы содержат пробелы
Установить numeric=2 Фразы обычно состоят только из букв.
Не устанавливайте min_len/PLACEHOLDER_TOKEN1ZZ Длина фразы варьируется
Оставить дело как есть Некоторые реализации нечувствительны к регистру

Часто задаваемые вопросы

Solve Media все еще активен?

Solve Media была приобретена и переименована. Некоторые устаревшие реализации все еще существуют на старых веб-сайтах, но новые внедрения встречаются редко.

Почему Solve Media решить проще, чем reCAPTCHA?

Solve Media была разработана так, чтобы ее можно было читать — это был рекламный продукт, а не продукт безопасности. Текст был намеренно понятен, чтобы пользователи могли прочитать послание бренда.

Могу ли я решить Solve Media без OCR?

В некоторых случаях текст фразы доступен в исходном коде страницы или ответе API, что делает извлечение изображения ненужным. Проверьте скрытое поле adcopy_challenge.

Есть ли у CaptchaAI специальный метод Solve Media?

Нет. Используйте стандартный метод распознавания изображений (method=base64 или method=post) с phrase=1.


Связанные руководства

Комментарии для этой статьи отключены.