Solve Media CAPTCHA (agora parte de Permit.io / Radius Networks) era um CAPTCHA baseado em publicidade que substituiu texto aleatório distorcido por mensagens e slogans de marca. Em vez de digitar “aX3kP”, os usuários digitaram uma frase reconhecível como “Qualidade em que você pode confiar”.
Embora o Solve Media seja menos comum hoje em dia, ele ainda aparece em alguns sites. Funciona como um CAPTCHA de texto padrão e pode ser resolvido com a mesma abordagem de OCR de imagem.
Como funciona o Solve Media
- O widget carrega e exibe uma mensagem publicitária como uma imagem
- O usuário lê a frase da marca e a digita na caixa de entrada
- A resposta é verificada pelos servidores da Solve Media
- Se correto, o envio do formulário prossegue
┌─────────────────────────────────┐
│ │
│ "Taste The Rainbow" │
│ │
├─────────────────────────────────┤
│ Type the phrase: [____________] │
│ [Verify] │
└─────────────────────────────────┘
Resolva CAPTCHAs de mídia versus texto padrão
| Recurso | Resolver mídia | Texto padrão CAPTCHA |
|---|---|---|
| Conteúdo de texto | Frases de marca, palavras em inglês | Caracteres aleatórios |
| Legibilidade | Alto (destinado a ser legível) | Baixo (pretendido para ser difícil) |
| Distorção | Mínimo | Pesado |
| Modelo de receita | Publicidade | Nenhum |
| Dificuldade para OCR | Fácil (texto limpo) | Difícil (distorcido) |
| Experiência do usuário | mais adequado (palavras reconhecíveis) | Pior (difícil de ler) |
Identificando Solve Media em uma página
Procure estes marcadores:
<!-- 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" />
Elementos com IDs começando com adcopy- ou solvemedia indicam Solve Media CAPTCHA.
Resolvendo Resolver mídia com CaptchaAI
Como o Solve Media exibe texto em uma imagem, ele pode ser resolvido com o método OCR de imagem padrão:
Pitão
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');
}
Principais considerações
| Dica | Por que |
|---|---|
Definir phrase=1 |
Resolver frases de mídia contém espaços |
Definir numeric=2 |
As frases geralmente são apenas letras |
Não defina min_len/ZZTOKEN1ZZ |
O comprimento da frase varia |
| Mantenha o caso como está | Algumas implementações não diferenciam maiúsculas de minúsculas |
Perguntas frequentes
A Solve Media ainda está ativa?
A Solve Media foi adquirida e renomeada. Algumas implementações legadas ainda existem em sites mais antigos, mas novas implantações são raras.
Por que o Solve Media é mais fácil de resolver do que o reCAPTCHA?
O Solve Media foi projetado para ser legível – era um produto publicitário, não um produto de segurança. O texto foi intencionalmente claro para que os usuários pudessem ler a mensagem da marca.
Posso resolver o Solve Media sem OCR?
Em alguns casos, o texto da frase está disponível na origem da página ou na resposta da API, tornando desnecessária a extração da imagem. Verifique o campo oculto adcopy_challenge.
O CaptchaAI possui um método Solve Media dedicado?
Não. Use o método OCR de imagem padrão (method=base64 ou method=post) com phrase=1.