В данном уроке мы с вами научимся обходить капчу. Капча - это такая картинка, данные из которой следует ввести в инпут, чтобы отправить форму.
Капчу устанавливают на форму, если хотят обойти ее автоматическое заполнение парсером. Однако, практически любую капчу можно обойти. Этим мы сейчас и займемся.
Как устроена капча
Чтобы обойти капчу, нужно понимать, как она устроена изнутри.
Когда мы заходим на страницу с формой - там уже есть капча или она подгружается через некоторое время.
Откуда берется эта капча? Она генерируется скриптом PHP при обращению на заданный URL, пусть для примера этот URL такой - capcha.php. Тогда в HTML коде формы для картинки капчи будет такой код: <img src="capcha.php">.
Если мы зайдем на страницу с формой, то картинка капчи автоматически подтянется со страницы capcha.php.
При этом страница capcha.php - это скрипт, который генерирует случайную строку, делает из нее картинку капчи и отдает ее в браузер.
Кроме того страница capcha.php сохраняет строку с капчей в сессию. Это нужно для того, чтобы проверить правильность ввода капчи по отправке формы.
Если обратиться на страницу capcha.php - она каждый раз будет отдавать новую капчу и, соответственно, эта новая капча будет затирать старую в сессии.
Как обойти капчу
Итак, теперь вы знаете как устроена капча. Давайте теперь о том, как ее обойти. Для этого нужно сделать несколько запросов с помощью CURL.
Первый запрос должен слаться на файл с капчей. Куда его слать - видно в HTML коде формы или же можно отследить в отладчике, куда отправляются запросы.
Результатом данной операции будет картинка, ее можно сохранить в файл с помощью file_put_contents. Зачем сохранять - чтобы можно было прочитать капчу и разобрать ее каким-либо образом (для начала вручную).
Запрос на капчу обязательно следует слать через curl, а не file_get_contents, так как нам обязательно следует принимать и оправлять куки - ведь капча работает на сессиях PHP.
Итак, получаем капчу, сохраняем его в файл, разбираем эту капчу вручную и шлем второй запрос уже на страницу с формой вместе с POST данными для формы (и с разобранной капчей).
Не ошибитесь и не сделайте лишнего запроса к капче!
Использование сервисов распознавания
В предыдущем примере мы распознавали вручную, однако, чаще всего это делать нецелесообразно.
Лучше подключить специальный сервис, на котором специально обученные китайцы за копейки разбирают капчи.
Как это работает: вы считываете капчу в файл, а затем используя API сервиса отправляете эту капчу на сервис. Через 3-5 секунд получаете эту капчу обратно в разобранном виде.
Стоит это удовольствие не дорого - менее одного доллара за 1000 разобранных капч.
Сервисы распознавания капч
https://rucaptcha.com/, https://anti-captcha.com/ (он же antigate),
Нейронная сеть
https://habrahabr.ru/post/63854/ разбор капчи, не нейронная сеть http://asam.by/archive/my_funn/ нейронная сеть для капчи http://xakep-archive.ru/xa/135/044/1.htm распознавание php, нейронная сеть нейронная сеть php для разбора капчи http://eax.me/captcha-recognition/ - тут хороший цикл статей НЕ PHP снять видео надо http://neuralnet.info/ - еще учебник, простой и хороший http://www.neuroproject.ru/neuro.php - учебник по нейронным сетям