Модуль на Delphi для работы с сервисом AntiGate.com (Антикаптча)
Модуль написан на Дельфи.
Для работы с HTTP-протоколом используется компонент Synapse.
Последнюю версию этого компонента (на момент написания это текста релиз номер 39 не обновлялся аж с 2009 года, но наверно разработчику просто больше нечего добавить в свой проект, он и так отлично работает) можно скачать [Ссылки могут видеть только зарегистрированные пользователи. ].
Модуль может распознавать каптчу из файла, по ссылке, а также из потока (TStream).
========================== Описание функций:
Функция RecognizeAG — умеет распознавать картинку используя сервис AntiGate.com из потока, по URL-ссылке и из картинки на компьютере.
Код:
// Распознать картинку их потока
function RecognizeAG(ImageData: TMemoryStream; AGKey: String; var CaptchaRes: String; MinLen: integer=0; MaxLen: integer=0; Numeric: integer=0; Phrase: integer=0; RegSense: integer=0; Calc: integer=0; Russian: integer=0): Integer; overload;
// Распознать картинку из файла
function RecognizeAG(ImageFile: String; AGKey: String; var CaptchaRes: String; MinLen: integer=0; MaxLen: integer=0; Numeric: integer=0; Phrase: integer=0; RegSense: integer=0; Calc: integer=0; Russian: integer=0): Integer; overload;
// Распознать картинку по ссылке
function RecognizeAG(ImageURL: String; AGKey: String; var CaptchaRes: String; Cookies: String; MinLen: integer=0; MaxLen: integer=0; Numeric: integer=0; Phrase: integer=0; RegSense: integer=0; Calc: integer=0; Russian: integer=0): Integer; overload;
Параметры функции:
ImageData — поток, содержащий каптчу
ImageFile — путь к файлу каптчи
ImageURL — ссылка на каптчу
AGKey — ключ сервиса AntiGate.com для распознавания
Cookies — при распознавании по URL можно передать в функцию куки, для открытия каптчи, когда это необходимо
CaptchaRes — буффер, в который попадает текст каптчи, либо сообщение об ошибке
MinLen — 0 по-умолчанию, помечает минимальную длину текста каптчи
MaxLen — 0 — без ограничений, помечает максимальную длину каптчи
Phrase — 0 по-умолчанию, 1 помечает что каптча состоит из нескольких слов
Regsense — 0 по-умолчанию, 1 помечает что текст каптчи чувствителен к регистру
Numeric — 0 по-умолчанию, 1 помечает что текст каптчи состоит только из цифр, 2 помечает что на каптче нет цифр
Calc — 0 по-умолчанию, 1 помечает что цифры на каптче должны быть высчитаны
Russian — 0 по умолчанию, 1 помечает что вводить нужно только русский текст, 2 — русский или английский
Функция возвращает:
Номер каптчи (CaptchaID) — в случае успеха
0 (ноль) — при ошибке
Функция GetBalanceAG — выводит текущий баланс на сервисе AntiGate.com
Код:
// Получить ваш текущий денежный баланс
function GetBalanceAG(AGKey: String): String;
Параметры функции:
AGKey — ключ сервиса AntiGate.com для распознавания
Функция возвращает:
Строку с содержанием баланса — при успехе
‘N/A’ — при ошибке
Функция ReportBadAG — отправляет жалобу о неверно распознанной каптче в сервис AntiGate.com
Код:
// Пожаловаться на неправильно разгаданный текст
function ReportBadAG(AGKey: String; CaptchaID: Integer): String;
Параметры функции:
AGKey — ключ сервиса AntiGate.com для распознавания
CaptchaID — номер каптчи, которая была неверно распознана
Функция возвращает:
Строку с результатом ответа от сервиса (OK_REPORT_RECORDED — в случае успеха)
‘N/A’ — при ошибке
==========================
Для использования модуля в своем проекте, достаточно положить файл AntiGate.pas в папку с проектом и прописать его в Uses. Пример использования функции:
Код:
procedure Test;
var CaptchaID: integer;
CaptchaText, AntiGateKey: String;
begin
AntiGateKey := 'c54fa68f4d5s6df245s4d5c1a4s5d8f4'; // Ключ не настоящий
CaptchaID := RecognizeAG('c:\image.jpg', AntiGateKey, CaptchaText);
ShowMessage(CaptchaText);
end;
[Ссылки могут видеть только зарегистрированные пользователи. ]
Автор модуля Geograph
________________
В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Да смотрел, тот тоже в xe3 не пашет, а чёртов антигейт в multipart/form-data принимает, не охота копаться, как с этой гадостью свяжешься, так потом три дня думаешь где ты там чёрточку не дописал, ужас короче(пишу на синапсе, нет возможности юзать MultipartFormData).
Кстати этот пример на синапсе написан, коль такая петрушка придётся его адаптировать.
Прочитал на антигейте, что можно ещё каким-то base64 отсылать, так и не понял, это тобиш закодировать в base64 и обычным POST запросом (application/x-www-form-urlencoded) отправить?
Киньте пожалуйста пример отправки в base64 если это не тот вариант как я описал.