CAPTCHA с изображением сетки (проблемы с изображениями reCAPTCHA v2) возвращают индексы ячеек в качестве решения. Когда возвращаемые ячейки неверны (щелкните не те плитки или получите ERROR_CAPTCHA_UNSOLVABLE), проблема обычно заключается в том, как вы отправляете изображение, параметр размера сетки или текст инструкции.
Как работает решение сеточных изображений
CaptchaAI получает изображение сетки, анализирует каждую ячейку и возвращает массив индексов, соответствующий инструкции. Ячейки нумеруются слева направо и сверху вниз:
3×3 Grid: 4×4 Grid:
1 2 3 1 2 3 4
4 5 6 5 6 7 8
7 8 9 9 10 11 12
13 14 15 16
Ответ выглядит так: [1, 3, 6, 9] — это означает, что ячейки 1, 3, 6 и 9 содержат целевые объекты.
Распространенные ошибки и исправления
Неправильный размер сетки
Самая распространенная ошибка координат. Если CAPTCHA представляет собой сетку 4×4, но вы отправляете grid_size=3x3, нумерация ячеек неверна и выбираются неправильные плитки.
# WRONG — 4×4 grid sent as 3×3
data = {
"key": "YOUR_API_KEY",
"method": "post",
"grid_size": "3x3", # Wrong!
"img_type": "recaptcha",
"instructions": "traffic lights",
"json": 1
}
# CORRECT — match the actual grid
data = {
"key": "YOUR_API_KEY",
"method": "post",
"grid_size": "4x4", # Correct
"img_type": "recaptcha",
"instructions": "traffic lights",
"json": 1
}
Как программно определить размер сетки:
from PIL import Image
img = Image.open("grid_captcha.png")
width, height = img.size
# reCAPTCHA grids are square. 3×3 tiles are ~100px each, 4×4 tiles are ~75px each
tile_width = width // 3
if width % 4 == 0 and (width // 4) < 100:
grid_size = "4x4"
else:
grid_size = "3x3"
print(f"Detected grid size: {grid_size}")
Обрезанное или измененное изображение
Отправка обрезанного изображения, изображения с измененным размером или завернутого в снимок экрана изменяет выравнивание сетки. CaptchaAI необходимо исходное изображение CAPTCHA в том виде, в каком оно было визуализировано.
Исправление: захватывайте изображение непосредственно из iframe reCAPTCHA, а не скриншот всей страницы.
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com")
# Switch to reCAPTCHA iframe
iframe = driver.find_element(By.CSS_SELECTOR, 'iframe[title*="recaptcha"]')
driver.switch_to.frame(iframe)
# Get the grid image element
grid_img = driver.find_element(By.CSS_SELECTOR, "img.rc-image-tile-wrapper img")
grid_img.screenshot("grid_captcha.png") # Captures just the grid, not the whole page
Неправильные или расплывчатые инструкции
Текст инструкции должен соответствовать запросу CAPTCHA. Расплывчатые инструкции приводят к неправильному выбору ячеек.
# WRONG — too vague
data["instructions"] = "select images"
# CORRECT — specific instruction from the CAPTCHA
data["instructions"] = "crosswalks"
Общие значения инструкций: crosswalks, traffic lights, cars, buses, motorcycles, bicycles, fire hydrants, stairs, bridges, parking meters.
Смещение индекса ячейки (на основе 0 или 1)
CaptchaAI возвращает индексы ячеек, отсчитываемые от 1. Если ваш код автоматизации использует индексацию, отсчитываемую от 0, вам необходимо вычесть 1.
import json
# CaptchaAI returns 1-based indices
solution = json.loads(result["request"]) # e.g., [1, 3, 6, 9]
# Convert to 0-based for Selenium click automation
zero_based = [cell - 1 for cell in solution]
# Click grid cells using 0-based index
tiles = driver.find_elements(By.CSS_SELECTOR, ".rc-image-tile-wrapper img")
for idx in zero_based:
tiles[idx].click()
Проблемы с форматом изображения
CaptchaAI поддерживает форматы JPG, JPEG, PNG и GIF. Другие форматы возвращают ERROR_WRONG_FILE_EXTENSION.
# WRONG — WebP or BMP
files = {"file": open("grid.webp", "rb")} # Not supported
# CORRECT — convert to PNG first
from PIL import Image
img = Image.open("grid.webp")
img.save("grid.png", "PNG")
files = {"file": open("grid.png", "rb")}
Дерево решений
Grid cells are wrong
↓
Is grid_size correct (3x3 or 4x4)? → No → Fix grid_size parameter
↓ Yes
Is the image the original CAPTCHA (not cropped)? → No → Capture directly from iframe
↓ Yes
Is instruction text specific? → No → Use exact CAPTCHA instruction text
↓ Yes
Using 1-based indexing for clicks? → No → Convert solution to 0-based
↓ Yes
Image in supported format (JPG/PNG)? → No → Convert image format
↓ Yes
Report tiles to CaptchaAI via reportbad
Сообщение о неправильных решениях
Если координаты постоянно неверны, несмотря на правильные параметры, сообщите о решении:
requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY",
"action": "reportbad",
"id": task_id,
"json": 1
})
Это помогает CaptchaAI повысить точность и может возместить стоимость решения.
Проверки проверки сетки
- Прежде чем отправлять ответ, убедитесь, что размеры сетки соответствуют координатам, ожидаемым целью.
- Нормализуйте масштабирование изображения и математические вычисления области просмотра, чтобы точки щелчка выдерживали изменения масштаба браузера и соотношения пикселей устройства.
- Отклоняйте ответы, выходящие за рамки объявленной сетки, вместо того, чтобы молча пересылать неверные координаты.
Часто задаваемые вопросы
Какие размеры сетки поддерживает CaptchaAI?
Сетки 3×3 и 4×4. Это стандартные форматы изображений reCAPTCHA.
Почему я получаю ERROR_CAPTCHA_UNSOLVABLE для изображений в виде сетки?
Качество изображения слишком низкое, текст инструкции неправильный или изображение не является распознаваемой сеткой CAPTCHA. Убедитесь, что вы отправляете исходное, необрезанное изображение с правильными инструкциями.
Мои ячейки смещены на единицу. Что не так?
CaptchaAI возвращает индексы, отсчитываемые от 1. Если ваш код ожидает отсчет от 0, вычтите 1 из каждого индекса.
Решите CAPTCHA для изображения сетки с помощью CaptchaAI
Получите точные решения для изображений в виде сетки наcaptchaai.com.
Связанные руководства
- Как решить Grid Image CAPTCHA с помощью API
- Справочник кодов ошибок CaptchaAI
- Изображение CAPTCHA Неправильный ответ Оптимизация качества
- ERROR_BAD_PARAMETERS Проверка запроса