пятница, 27 января 2012 г.

Компонент для работы с antigate.com

Компонент для работы с antigate.com


Скрин:

Функции:
Распознавание каптчи;
Получение баланса;
Жалоба на неправильно разгаданную каптчу.

Как устанавливать:

1. Скопируйте AC.pas в папку C:\Program Files\Borland\Delphi7\Lib

2. Выбирите "Сomponent" => "Install Сomponent" как показано на скрине:


3. Укажите путь до ac.pas как показано на скрине:

И нажмите кнопку "ОК"

4. В появившемся окне нажмите кнопку "YES"


Готово! Компонент установлен на вкладку Standard.

Как пользоваться:

В поле ApiKey вписывайте ваш ключ antigate.com (Узнать его можно тут)

Настройки (не обязательно):

Phrase = 0 или 1 (1 помечает что у капчи 2-4 слова)
Regsense = 0 или 1 (1 помечает что текст капчи чувствителен к регистру) не работает?
Numeric = 0 или 1 или 2 (1 помечает что текст капчи состоит только из цифр, 2 помечает что на капче нет цифр)
Calc = 0 или 1 (1 помечает что цифры на капче должны быть сплюсованы)
Min_len = 0..20 (помечает минимальную длину текста капчи)
Max_len = 0..20 (помечает максимальную длину капчи)
Is_russian = 0 или 1 или 2 (1 помечает что вводить нужно только русский текст, 2 - русский или английский)

0 по-умолчанию.

Как пользоватся функциями:

AC1.Recognize(' Полный путь до каптчи '); - функция возвращает текст каптчи.
Поддерживаются форматы каптч: JPG, GIF, PNG (Авто-определение!)

AC1.Report(' id каптчи '); - функция возвратит TRUE если запрос успешно отправился.

AC1.Getbalans(' ключ '); - функция возвратит баланс ключа.


34 комментария:

  1. Автор, поправь немного свой код, а то программа висит во время ожидания каптчи:
    1)Добавь к классу TAC свойство application которому при инициализации нужно присвоить application проекта.
    2) вместо sleep(5000);
    ИМХО лучше добавить вот такое:
    for j := 0 to 49 do
    begin
    sleep(100);
    application.ProcessMessages;
    end;

    ОтветитьУдалить
  2. на delphi ХЕ2 пойдет?

    ОтветитьУдалить
  3. >> Нынче не модно потоки использовать?
    Не модно, а нудно!

    ОтветитьУдалить
  4. if pos('.jpg', filename)<>0 then tip:='image/jpeg';
    if pos('.gif', filename)<>0 then tip:='image/gif';
    if pos('.png', filename)<>0 then tip:='image/png';
    рукалицо

    ОтветитьУдалить
    Ответы
    1. Всё правильно. Если вы почитаете документацию по API антигейта - станет ясно что он принимает только эти форматы картинок.

      Вопросы?

      Удалить
    2. Хотелось бы знать тогда, какой mime будет выбран для картинки формата и расширения jpeg с именем "image.png.jpg"?

      Удалить
    3. Очевидно же, в случае pos('.jpg', filename) будет JPG, а в случае pos('.png', filename) будет PNG. А что бы такого не было надо давать нормальные имена.

      Удалить
  5. Чтобы такого не было, лучше получать расширение с помощью ExtractFileExt()

    ОтветитьУдалить
  6. Компонент просто отвратительный! Качать категорически не советую. Эту страничку нашел с сайта antigate.com, я просто удивлен что на их офф сайте публикуется такое, код просмотрел чисто визуально, особо не вчитывался, тем неменее:
    1. объект IdHTTP вообще объявлен глобально, то есть о многопоточности можно забыть сразу. Это самый большой fail.
    2. при каждом сетевом запросе объект IdHTTP заново создается и после выполнения запроса уничтожается, это конечно тоже не гуд, но fail заключается в том что создание/уничтожение идет не в блоках try...finally end; То есть при исключении объект нифига не удалится, тут конкретная утечка памяти. Так же видно что обработки исключений нет вообще, если учесть что этот компонент сделан на конкретное нубьё которое из знать не знает что такое исключения, то это вообще не гуд.
    3. Почему конструктор в секции published? Это конечно не баг, но не здраво так делать.

    Я бы вообще забил бы на это все, если не выкладывалось бы это все на офф сайте антигейта, им писать бестолку, решил сюда.

    ОтветитьУдалить
    Ответы
    1. Компонент создан для новичков. Не нравится? Я не заставляю пользоваться.

      Удалить
    2. Почему бы не сделать как надо, не зависимо для кого это?
      Я могу дать годные наработки.

      Удалить
    3. Я бы с радостью, но времени мало. Была идея переписать под синапс но не у многих он стоит.

      Удалить
  7. А у меня нету C:\Program Files\Borland\Delphi7\Lib

    ОтветитьУдалить
    Ответы
    1. Тогда нужно биться головой о стену. Xe3 другая папка.

      Удалить
  8. Инвайты на пиксодром http://pixodrom.com с бесплатным тестом капч

    8FCEA8F9
    http://pixodrom.com/i/8FCEA8F9
    54935E57
    http://pixodrom.com/i/54935E57
    A455A535
    http://pixodrom.com/i/A455A535
    7D12F9F5
    http://pixodrom.com/i/7D12F9F5
    E597AED1
    http://pixodrom.com/i/E597AED1
    696FC2C1
    http://pixodrom.com/i/696FC2C1
    3BEF28CE
    http://pixodrom.com/i/3BEF28CE
    393D55FB
    http://pixodrom.com/i/393D55FB
    927A682C
    http://pixodrom.com/i/927A682C
    1A314566
    http://pixodrom.com/i/1A314566

    ОтветитьУдалить
    Ответы
    1. Смысл оставлять это тут?

      Удалить
    2. на pixodrom цена всего $0.9 за 1000 капч

      Удалить
    3. на rucaptcha.com - вообще 0,5$ за 1000

      Удалить
  9. На офф.сайте АГ скачай. Давно пора его обновить :)

    ОтветитьУдалить
  10. VanS а как с помощь него можно сделать чтоб распозновало капчи на https://rucaptcha.com

    ОтветитьУдалить
  11. Я так и не понял, как получить ID каптчи?
    Всё работает, но бывают промахи и я зря выбрасываю один цент за неправильно разгаданную каптчу. Автар, ответь, плз.

    ОтветитьУдалить
    Ответы
    1. Добавьте глобальную переменную и туда сохраняйте идентификатор каптчи, затем в функции report его используйте.

      Удалить
    2. Делаю так:
      var S:string;

      S:=AC1.Recognize(' Полный путь до каптчи ');

      Но после отправки, в S пустота. Только по окончанию sleep(5000) появляется уже сам текст разгаданный. Хотя, по идеи, как я понял, в S сначало должно приходть ID каптчи.

      Удалить
    3. В начале модуль получает ID каптчи и ждёт 5 секунд, после чего проверяет статус каптчи. Вод перед тем как он ждёт 5 секунд надо записать в глобальную переменную ID каптчи для дальнейшего использования в функции report;

      Удалить
    4. Я ЭТО ЗНАЮ!!!!Я ЗНАЮ КАК ПОЛУЧИТЬ, но она не записывается в переменную, что не ясно? Возьми попробуй сам.

      Удалить
    5. Этот комментарий был удален автором.

      Удалить
  12. Этот комментарий был удален автором.

    ОтветитьУдалить
  13. Сделайте пожалуйста модуль для новой reCaptcha 2

    ОтветитьУдалить
    Ответы
    1. Там придётся использоваться либо ишака либо виндовский MSScriptControl. В любом случае бесплатно я такое не подарю.

      Удалить
    2. Странный человек. А тут что-то вообще подарено? Я вижу только .pas с весьма кривым кодом, который обращается к серверу для распознавания капчи.
      Нынче не модно WinAPI использовать? Хотя бы для того, чтобы клиенты не тащили за собой 100500 лишних КБ ради анализатора, который понимает простецкие капчи.

      Удалить
    3. Если бы вы сударь понимали что то кроме слова "winapi" - давно бы сделали на этом WinAPI свой суперкомпонент с ровным кодом (в строчку и без отступов?). Я никого не заставляю юзать именно этот компонент, есть куча аналогов на том же синапсе.

      Удалить