Solve Media CAPTCHA (hiện là một phần của Permit.io / Radius Networks) là một CAPTCHA dựa trên quảng cáo thay thế văn bản ngẫu nhiên bị bóp méo bằng thông điệp và khẩu hiệu thương hiệu. Thay vì nhập "aX3kP", người dùng đã nhập một cụm từ dễ nhận biết như "Chất lượng mà bạn có thể tin cậy".
Mặc dù ngày nay Solve Media ít phổ biến hơn nhưng nó vẫn xuất hiện trên một số trang web. Nó hoạt động giống như một CAPTCHA văn bản tiêu chuẩn và có thể được giải bằng cách tiếp cận OCR hình ảnh tương tự.
Cách Solve Media hoạt động
- Tiện ích tải và hiển thị thông báo quảng cáo dưới dạng hình ảnh
- Người dùng đọc cụm từ thương hiệu và gõ vào ô nhập liệu
- Phản hồi được xác minh bởi máy chủ của Solve Media
- Nếu đúng, việc gửi biểu mẫu sẽ được tiến hành
┌─────────────────────────────────┐
│ │
│ "Taste The Rainbow" │
│ │
├─────────────────────────────────┤
│ Type the phrase: [____________] │
│ [Verify] │
└─────────────────────────────────┘
Giải quyết phương tiện và văn bản chuẩn CAPTCHA
| tính năng | Giải quyết phương tiện | CAPTCHA văn bản chuẩn |
|---|---|---|
| Nội dung văn bản | Cụm từ thương hiệu, từ tiếng Anh | Ký tự ngẫu nhiên |
| Khả năng đọc | Cao (có nghĩa là có thể đọc được) | Thấp (có nghĩa là khó khăn) |
| Biến dạng | Tối thiểu | Nặng |
| Mô hình doanh thu | Quảng cáo | không có |
| Khó khăn cho OCR | Dễ dàng (văn bản rõ ràng) | Cứng (méo) |
| Trải nghiệm người dùng | Tốt hơn (các từ có thể nhận biết được) | Tệ hơn (khó đọc) |
Xác định phương tiện giải quyết trên một trang
Hãy tìm những dấu hiệu này:
<!-- 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" />
Các phần tử có ID bắt đầu bằng adcopy- hoặc solvemedia biểu thị Solve Media CAPTCHA.
Giải quyết phương tiện với CaptchaAI
Vì Solve Media hiển thị văn bản trong hình ảnh nên có thể giải quyết vấn đề này bằng phương pháp OCR hình ảnh tiêu chuẩn:
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');
}
Những cân nhắc chính
| Mẹo | tại sao |
|---|---|
Đặt phrase=1 |
Giải các cụm từ Media chứa dấu cách |
Đặt numeric=2 |
Cụm từ thường chỉ có chữ cái |
Không đặt min_len/1ZZ |
Độ dài cụm từ thay đổi |
| Giữ nguyên trường hợp | Một số triển khai không phân biệt chữ hoa chữ thường |
Câu hỏi thường gặp
Solve Media vẫn hoạt động phải không?
Solve Media đã được mua lại và đổi tên thương hiệu. Một số cách triển khai cũ vẫn tồn tại trên các trang web cũ nhưng hiếm khi triển khai mới.
Tại sao Solve Media dễ giải quyết hơn reCAPTCHA?
Solve Media được thiết kế để có thể đọc được — đó là một sản phẩm quảng cáo, không phải sản phẩm bảo mật. Văn bản được cố ý rõ ràng để người dùng có thể đọc được thông điệp thương hiệu.
Tôi có thể giải quyết Solve Media mà không cần OCR không?
Trong một số trường hợp, văn bản cụm từ có sẵn trong nguồn trang hoặc phản hồi API, khiến việc trích xuất hình ảnh trở nên không cần thiết. Kiểm tra trường ẩn adcopy_challenge.
CaptchaAI có phương pháp Solve Media chuyên dụng không?
Không. Sử dụng phương pháp OCR hình ảnh tiêu chuẩn (method=base64 hoặc method=post) với phrase=1.