Scarnox · Blog

Розв'язання капчі через проксі і без проксі - який тип завдання потрібен?

Scarnox пропонує PopularCaptcha у двох варіантах: без проксі, де Scarnox розв'язує капчу через власну мережу, і з проксі, де ви надсилаєте проксі, яким користується ваш бот. Обидва повертають токен у однаковій формі відповіді, і обидва безкоштовні, коли розв'язання не вдалося. Єдина різниця в запиті - це проксі.

Режим без проксі - правильна відправна точка для більшості сайтів. Надсилайте власний проксі, лише коли сайт прив'язує токен до IP-адреси.

Два типи завдань

Тип завданняЩо ви надсилаєте
PopularCaptchaTaskProxylesssitekey і 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.

Як вирішити

Пройдіться по цих питаннях по порядку:

  1. Чи працює токен, якщо відправити його з іншої машини? Якщо так, використовуйте режим без проксі.
  2. Чи відхиляє сайт токени лише тоді, коли IP відправки відрізняється від IP розв'язання? Якщо так, надсилайте проксі.
  3. Чи використовує сайт cookie сесії або перевірку пристрою, прив'язану до однієї IP? Якщо так, надсилайте проксі і тримайте ту саму IP протягом усієї сесії.

Перевірте обидва варіанти на безкоштовному пробному періоді, перш ніж обрати один. Створіть обліковий запис і почніть з безкоштовного пробного кредиту, картка не потрібна, а потім запустіть той самий потік по одному разу для кожного типу.

Якщо ваш проксі мертвий

Невдале розв'язання безкоштовне. Якщо проксі мертвий або заблокований цільовим сайтом, розв'язання не вдалося і з вас за нього не беруть плату. Перевірте проксі самостійно перед запуском, переконайтеся у форматі і в тому, що цільовий сайт не блокує його діапазон адрес. Проксі, який працює для браузера, але не проходить розв'язання, зазвичай має проблему з форматом.

Не допускайте потрапляння облікових даних проксі в логи

Адреса проксі з паролем - це секрет. Зберігайте її у змінній середовища або в менеджері секретів. Не виводьте її в логи, не комітьте в репозиторій і не вставляйте у звіти про помилки. Якщо ви логуєте запит розв'язання для налагодження, спочатку видаліть поле proxy.

Вибір проксі для варіанта з проксі

Розв'язання працює з будь-яким проксі, який ви надсилаєте, але токен корисний лише тоді, коли ту саму IP відправляє форму. Використовуйте резидентну або статичну адресу, яку контролюєте, для всієї сесії, а не пул, що ротується при кожному запиті. Сайти, що прив'язують токени до IP, зазвичай прив'язують і сесію, тож ротуючий пул ламає потік двічі.

Як щодо швидкості?

Обидва варіанти повертають токен з одного блокуючого запиту, без циклу опитування. Тайм-аут той самий: близько 185 секунд. Обирайте варіант за питанням IP, а не за швидкістю.

Сесії і проксі на практиці

Використовуйте той самий проксі від першого запиту сесії до останнього. Типовий потік завантажує сторінку реєстрації, розв'язує капчу і відправляє форму. Якщо завантаження сторінки йде через одну адресу, а розв'язання через іншу, сайт, що прив'язує IP, може відхилити токен, хоча все інше виглядає правильно.

Тримайте один параметр проксі у коді і передавайте його кожному кроку, який звертається до сайту. Якщо інші частини завдання ротують проксі для скрапінгу, дайте потоку капчі власний закріплений проксі. Змішування цих двох - одна з найпоширеніших причин, чому токен, що працював у тестах, падає у продакшені.

Встановлюйте поле proxy лише для варіанта, який використовує проксі. Надсилання проксі з типом завдання без проксі не покращує розв'язання, і це ускладнює розуміння того, який режим використовувався, при читанні логів.

Читання логів, щоб знайти правильну відповідь

Якщо ви не впевнені, який режим потрібен сайту, запустіть обидва на тій самій сторінці і порівняйте. Записуйте, чи був прийнятий кожен токен, а також тип завдання і чи надсилали проксі. Сайт, що стабільно приймає токени без проксі, не потребує варіанта з проксі. Сайт, що відхиляє їх лише в окремих запусках, вказує на перевірку IP. Нехай рішення визначають логи, а не здогадки.

Що далі

Почніть з безкоштовного пробного кредиту, картка не потрібна: створіть обліковий запис і спробуйте обидва типи завдань на одній сторінці.