Розв'язання капчі через проксі і без проксі - який тип завдання потрібен?
Scarnox пропонує PopularCaptcha у двох варіантах: без проксі, де Scarnox розв'язує капчу через власну мережу, і з проксі, де ви надсилаєте проксі, яким користується ваш бот. Обидва повертають токен у однаковій формі відповіді, і обидва безкоштовні, коли розв'язання не вдалося. Єдина різниця в запиті - це проксі.
Режим без проксі - правильна відправна точка для більшості сайтів. Надсилайте власний проксі, лише коли сайт прив'язує токен до IP-адреси.
Два типи завдань
| Тип завдання | Що ви надсилаєте |
|---|---|
PopularCaptchaTaskProxyless | sitekey і URL сторінки |
PopularCaptchaTask (варіант з проксі) | sitekey, URL сторінки і ваш proxy |
Обидва - це завдання PopularCaptcha. Решта запиту, відповідь і робота з токеном однакові.
Почніть з режиму без проксі
Розв'язання без проксі виконуються в мережі Scarnox. Інтеграція - найпростіша, яку можна написати, і для більшості сайтів токен працює незалежно від того, яка IP-адреса пізніше його відправить. Якщо ви не впевнені, який тип вам потрібен, почніть звідси:
{
"captcha_type": "PopularCaptchaTaskProxyless",
"site_key": "10000000-ffff-ffff-ffff-000000000001",
"site_url": "https://example.com/signup"
}
Надсилайте проксі, коли токен прив'язаний до IP
Деякі сайти перевіряють, що IP-адреса, яка розв'язала капчу, та сама, що відправляє форму. Симптом очевидний: токени повертаються без помилок, але сайт щоразу їх відхиляє. Виправлення - розв'язувати через той самий проксі, яким ваш бот користується для решти сесії:
{
"captcha_type": "PopularCaptchaTask",
"site_key": "10000000-ffff-ffff-ffff-000000000001",
"site_url": "https://example.com/signup",
"proxy": "http://user:pass@203.0.113.10:8080"
}
Формат проксі - http://user:pass@host:port. Використовуйте той самий проксі і для розв'язання, і для відправки, і тримайте його закріпленим протягом усієї сесії. Ротація проксі між розв'язанням і відправкою повертає невідповідність IP.
Як вирішити
Пройдіться по цих питаннях по порядку:
- Чи працює токен, якщо відправити його з іншої машини? Якщо так, використовуйте режим без проксі.
- Чи відхиляє сайт токени лише тоді, коли IP відправки відрізняється від IP розв'язання? Якщо так, надсилайте проксі.
- Чи використовує сайт cookie сесії або перевірку пристрою, прив'язану до однієї IP? Якщо так, надсилайте проксі і тримайте ту саму IP протягом усієї сесії.
Перевірте обидва варіанти на безкоштовному пробному періоді, перш ніж обрати один. Створіть обліковий запис і почніть з безкоштовного пробного кредиту, картка не потрібна, а потім запустіть той самий потік по одному разу для кожного типу.
Якщо ваш проксі мертвий
Невдале розв'язання безкоштовне. Якщо проксі мертвий або заблокований цільовим сайтом, розв'язання не вдалося і з вас за нього не беруть плату. Перевірте проксі самостійно перед запуском, переконайтеся у форматі і в тому, що цільовий сайт не блокує його діапазон адрес. Проксі, який працює для браузера, але не проходить розв'язання, зазвичай має проблему з форматом.
Не допускайте потрапляння облікових даних проксі в логи
Адреса проксі з паролем - це секрет. Зберігайте її у змінній середовища або в менеджері секретів. Не виводьте її в логи, не комітьте в репозиторій і не вставляйте у звіти про помилки. Якщо ви логуєте запит розв'язання для налагодження, спочатку видаліть поле proxy.
Вибір проксі для варіанта з проксі
Розв'язання працює з будь-яким проксі, який ви надсилаєте, але токен корисний лише тоді, коли ту саму IP відправляє форму. Використовуйте резидентну або статичну адресу, яку контролюєте, для всієї сесії, а не пул, що ротується при кожному запиті. Сайти, що прив'язують токени до IP, зазвичай прив'язують і сесію, тож ротуючий пул ламає потік двічі.
Як щодо швидкості?
Обидва варіанти повертають токен з одного блокуючого запиту, без циклу опитування. Тайм-аут той самий: близько 185 секунд. Обирайте варіант за питанням IP, а не за швидкістю.
Сесії і проксі на практиці
Використовуйте той самий проксі від першого запиту сесії до останнього. Типовий потік завантажує сторінку реєстрації, розв'язує капчу і відправляє форму. Якщо завантаження сторінки йде через одну адресу, а розв'язання через іншу, сайт, що прив'язує IP, може відхилити токен, хоча все інше виглядає правильно.
Тримайте один параметр проксі у коді і передавайте його кожному кроку, який звертається до сайту. Якщо інші частини завдання ротують проксі для скрапінгу, дайте потоку капчі власний закріплений проксі. Змішування цих двох - одна з найпоширеніших причин, чому токен, що працював у тестах, падає у продакшені.
Встановлюйте поле proxy лише для варіанта, який використовує проксі. Надсилання проксі з типом завдання без проксі не покращує розв'язання, і це ускладнює розуміння того, який режим використовувався, при читанні логів.
Читання логів, щоб знайти правильну відповідь
Якщо ви не впевнені, який режим потрібен сайту, запустіть обидва на тій самій сторінці і порівняйте. Записуйте, чи був прийнятий кожен токен, а також тип завдання і чи надсилали проксі. Сайт, що стабільно приймає токени без проксі, не потребує варіанта з проксі. Сайт, що відхиляє їх лише в окремих запусках, вказує на перевірку IP. Нехай рішення визначають логи, а не здогадки.
Що далі
- Як розв'язати PopularCaptcha на Python
- Невидимі капчі: розв'язання
- Повтори і обробка помилок, які витримують продакшен
- Безкоштовний пробний розв'язувач капчі
Почніть з безкоштовного пробного кредиту, картка не потрібна: створіть обліковий запис і спробуйте обидва типи завдань на одній сторінці.