Последнее время пишу на C#, для всяких парсеров/постеров использую удобный фреймворк Viking.Engine, который позволяет легко работать с HTTP-протоколом и многопоточностью. Но, к сожалению, в этом модуле частенько встречаются баги, то глобальные куки не работаю, то рандомизатор текста, а код библиотеки закрытый.
Так вот, там есть функция распознавания капчи через сервис AntiGate.com, но она не обрабатывает ошибку антикапчи ERROR_CAPTCHA_UNSOLVABLE (капчу не смогли разгадать 5 разных работников), в связи с чем бывают случаи, когда модуль перестает реагировать на внешние раздражители (зацикливается).
В поисках решения я находил в сети много разных вариантов, но все они слишком навороченные и идут в виде отдельных библиотек, а я бы не хотел перегружать проект лишними файлами, тем более для такого простого функционала.
Поэтому решил написать простой, маленький класс для работы с AntiGate.com. Функционал такой же, как в модуле для антикапчи на Дельфи
Так как CaptchaBot поддерживает работу с API от AntiGate, я задался вопросом: “А как можно заставить программы работать с КапчаБотом, если они поддерживают только АнтиГейт?” В принципе нужно изменить только домен и все. В связи с частой сменой АнтиГейтом своих доменов (anti-captcha.com, ac-service.info, antigate.com), в некоторые программы, ее использующие, разработчиками включена возможность указания домена вручную, в таких случаях мы просто указываем домен “captchabot.com”, соответственно меняем API-ключ и вуаля, программа работает с КаптчаБотом.
Но как быть с программами, где нет такой возможности? Первое что приходит на ум – указать в файле “c:\windows\system32\drivers\etc\hosts” IP-адреса от captchabot.com для домена antigate.com. Но это срабатывает только в том случае, когда IP принадлежит только одному сайту, и действительно у сервера КаптчаБота выделенный IP 188.40.130.36, но, если посмотреть через WHOIS, он пишет, что на этом IP содержится два домена: captchabot.com и www.captchabot.com. И при попытке открытия сайта по IP http://188.40.130.36/ мы получаем страницу содержащую символы ‘-8′ , вместо главной страницы сайта. Вот такая вот незадача, а решение казалось таким элегантным
Значит придется пользоваться дополнительными программами, которые нам позволят переадресовывать запросы приходящие на antigate.com. Сделать это можно по-крайней мере двумя способами.
Так как довольно часто приходится пользоваться услугами сервиса
Модуль написан на Дельфи, для работы с HTTP-протоколом используется компонент Synapse. Последнюю версию этого компонента (на момент написания это текста релиз номер 39 не обновлялся аж с 2009 года, но наверно разработчику просто больше нечего добавить в свой проект, он и так отлично работает) можно скачать по ссылке
Модуль может распознавать каптчу из файла, по ссылке, а также из потока (TStream).
Свежие комментарии