Solve Media CAPTCHA (now part of Permit.io / Radius Networks) was an advertising-based CAPTCHA that replaced distorted random text with brand messages and slogans. Instead of typing "aX3kP", users typed a recognizable phrase like "Quality You Can Trust."
While Solve Media is less common today, it still appears on some websites. It works like a standard text CAPTCHA and can be solved with the same image OCR approach.
How Solve Media works
- The widget loads and displays an advertising message as an image
- The user reads the brand phrase and types it into the input box
- The response is verified by Solve Media's servers
- If correct, the form submission proceeds
┌─────────────────────────────────┐
│ │
│ "Taste The Rainbow" │
│ │
├─────────────────────────────────┤
│ Type the phrase: [____________] │
│ [Verify] │
└─────────────────────────────────┘
Solve Media vs standard text CAPTCHAs
| Feature | Solve Media | Standard text CAPTCHA |
|---|---|---|
| Text content | Brand phrases, English words | Random characters |
| Readability | High (meant to be readable) | Low (meant to be hard) |
| Distortion | Minimal | Heavy |
| Revenue model | Advertising | None |
| Difficulty for OCR | Easy (clean text) | Hard (distorted) |
| User experience | Better (recognizable words) | Worse (hard to read) |
Identifying Solve Media on a page
Look for these markers:
<!-- 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" />
Elements with IDs starting with adcopy- or solvemedia indicate Solve Media CAPTCHA.
Solving Solve Media with CaptchaAI
Since Solve Media displays text in an image, it can be solved with the standard image OCR method:
Python
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');
}
Key considerations
| Tip | Why |
|---|---|
Set phrase=1 |
Solve Media phrases contain spaces |
Set numeric=2 |
Phrases are usually letters only |
Don't set min_len/max_len |
Phrase length varies |
| Keep case as-is | Some implementations are case-insensitive |
FAQ
Is Solve Media still active?
Solve Media was acquired and rebranded. Some legacy implementations still exist on older websites, but new deployments are rare.
Why is Solve Media easier to solve than reCAPTCHA?
Solve Media was designed to be readable — it was an advertising product, not a security product. The text was intentionally clear so users would read the brand message.
Can I solve Solve Media without OCR?
In some cases, the phrase text is available in the page source or API response, making image extraction unnecessary. Check the adcopy_challenge hidden field.
Does CaptchaAI have a dedicated Solve Media method?
No. Use the standard image OCR method (method=base64 or method=post) with phrase=1.
Discussions (0)
Join the conversation
Sign in to share your opinion.
Sign InNo comments yet.