UoKit.com Форумы > Кликер > UO Pilot > Плагины и доп. ПО
Страницы: 1, 2, 3, 4, 5, 6
DarkMaster
Создана дллка для работы с рапознованнием капчи.
Нажмите для просмотра прикрепленного файла
Инструкция
Код
AntiGate.dll - это плагин, который позволяет взаимодействовать UOPilot с сервисом AntiGate.com.
Данный сервис предназначен для распознавания текста с картинок(капчи), которые обычно необходимо вводить при регистрации.
Плагин необходимо поместить в папку Plugins рядом с uopilot.exe. Для работы требуются установленные библиотеки c++:
http://www.microsoft.com/ru-ru/download/details.aspx?id=40784
В плагине содержится 3 функции:
set $var AntiGate.SetKey (ваш_ключ)
set %sendImg AntiGate.SendImage ( *путь* доп_параметр=значение доп_параметр=значение ...)
set %getResult AntiGate.GetResult (id_изображения)



set $key AntiGate.SetKey (ваш_ключ)
Задание ключа для работы с сервисом.
    $key - переменная, в которую помещается результат работы(текущий ключ).
    ваш_ключ - ваш ключ от сервиса AntiGate
Пример:
    set $key  AntiGate.SetKey (12345678901234567890123456789012)
    log $key


    
set %sendImg AntiGate.SendImage ( *путь* доп_параметр=значение доп_параметр=значение)
Отправка изображения на сервис.
    %sendImg - массив в который помещается результат работы.
    %sendImg [1] - флаг результата работы:
        OK - загрузка прошла успешно.
        ERROR - произошла ошибка.
    %sendImg [2] - id_изображения, если оно успешно загружено, либо текст ошибки.
    *путь* - адрес картинки на вашем компьютере. Не ссылка на нее в интернете, а именно файл на вашем жестком диске. Адрес обособляется '*'.
    доп_параметр - дополнительный параметр, поддерживаемый сервисом AntiGate.
    'значение'- значение дополнительного параметра.
Пример:
    set %sendImg  AntiGate.SendImage (*d:\captcha.jpg* regsense=1 phrase=1)
    log %sendImg [1]
    log %sendImg [2]
    
Список дополнительный параметров доступных на сервисе:
phrase  0|1
    0 = дефолтное значение (одно слово)
    1 = капча имеет два слова
regsense  0|1
    0 = дефолтное значение (регистр не имеет значения)
    1 = капча чувствительна к регистру
numeric  0|1
    0 = дефолтное значение
    1 = капча состоит только из цифр
    2 = Капча не имеет цифр
calc  0|1
    0 = дефолтное значение
    1 = математическое действие из цифр на капче
min_len  0 .. 20
    0 = дефолтное значение
    >0 = минимальная длина текста на капче, которую работник должен ввести
max_len  0 .. 20
    0 = дефолтное значение (не ограничено)
    >0 = максимальная длина текста на капче, которую работник должен ввести
is_russian  0|1
    0 = дефолтное значение
    1 = показать капчу работнику со знанием русского языка



set %getResult AntiGate.GetResult (id_изображения)
Возвращает результат распознавания.
    id_изображения - id полученный при отправке изображения с помощью AntiGate.SendImage().
Функция возвращает:
     %getResult [1] - флаг результата работы:
        ОК - капча успешно распознана.
        NOT_READY - результат еще не готов, попробуйте чуть позже.
        ERROR - произошла ошибка.
    %getResult [2] - текст капчи, если она была распознана, либо текст ошибки.
Пример:
    set %getResult AntiGate.SendImage (%sendImg [2])
    log %getResult [1]
    log %getResult [2]
    
    
    
Пример готового скрипта:

set linedelay 0
log mode compact

:start
    // Воодим ключ от сервиса.
    // Требуется выполнить всего 1 раз.
    set $key  AntiGate.SetKey (12345678901234567890123456789012)
    log Текущий ключ: $key

    // Обнуляем прошлый результат.
    set %sendImg [1] ""
    // Загрузка изображения может быть не удачной,
    // например, из-за остустствия слотов.
    // Повторяем попытки загрузить изображение
    // пока не будет дан положительный ответ от сервера.
    while %sendImg [1] <> "OK"
        set %sendImg  AntiGate.SendImage (*d:\captcha.jpg* regsense=1 phrase=1)
        log Статус отправки изображения: %sendImg [1]
        log Содержимое ответа на отправку изображения: %sendImg [2]
    end_while

    // Обнуляем прошлый результат.
    set %getResult [1] ""
    // Запрашиваем результат распознования.
    while %getResult [1] <> "OK"
        wait 5s
        set %getResult AntiGate.GetResult (%sendImg [2])
        log Статус получения результата: %getResult [1]
        log Содержимое ответа на запрос результата: %getResult [2]
    end_while
stop_script


Так же вам может пригодиться сохранение части экрана для последующей отправки на сервис:
'PrintScreen <handle> <x> <y> <width> <height> <path>'
Первым параметром указывается хэндл рабочего окна, либо 0 - весь экран. Если 'width' или 'height' =0 то берется максимально возможное значение.
printscreen workwindow 100 150 80 40 d:\captcha.jpg

Для работы требует установленные библиотеки c++.
На всякий случай прицепляю к сообщению.
Нажмите для просмотра прикрепленного файлаНажмите для просмотра прикрепленного файла
Вверх
Zeleax
Круто. Спасибо!
Вверх
DarkMaster
рад стараться)
Вверх
Korsar2888
Да прикольно, спасибо большое)
Вверх
portos
подскажите , как из скрипта AntiGate ....вывести результат в саму капчу. заранее спасибо.


:start
// Воодим ключ от сервиса.
// Требуется выполнить всего 1 раз.
set $key AntiGate.SetKey (12345678901234567890123456789012)
log Текущий ключ: $key

// Обнуляем прошлый результат.
set %sendImg [1] ""
// Загрузка изображения может быть не удачной,
// например, из-за остустствия слотов.
// Повторяем попытки загрузить изображение
// пока не будет дан положительный ответ от сервера.
while %sendImg [1] <> "OK"
set %sendImg AntiGate.SendImage (*d:\captcha.jpg* regsense=1 phrase=1)
log Статус отправки изображения: %sendImg [1]
log Содержимое ответа на отправку изображения: %sendImg [2]
end_while

// Обнуляем прошлый результат.
set %getResult [1] ""
// Запрашиваем результат распознования.
while %getResult [1] <> "OK"
wait 5s
set %getResult AntiGate.GetResult (%sendImg [2])
log Статус получения результата: %getResult [1]
log Содержимое ответа на запрос результата: %getResult [2]
end_while
stop_script
Вверх
DarkMaster
Цитата
подскажите , как из скрипта AntiGate ....вывести результат в саму капчу. заранее спасибо.

Поясните, что вы имели ввиду? Как ввести полученный результат в поле?
Команды нажатия клавиш:
sendex, send, send217.
Наиболее простой способ кликнуть мышью в поле и использовать sendex.
Код
left x_координата y_коорината
sendex %getResult [2]

Вверх
portos
Цитата(DarkMaster @ 8.12.2014, 6:32)

Поясните, что вы имели ввиду? Как ввести полученный результат в поле?
Команды нажатия клавиш:
sendex, send, send217.
Наиболее простой способ кликнуть мышью в поле и использовать sendex.
Код
left x_координата y_коорината
sendex %getResult [2]


Dark благадарю ,получилось. только как убрать пробел в ответе....пример -captcha:Q3TR ,а пишет Q3 TR... и так в каждом ответе
Вверх
DarkMaster
Скорее всего вы задаете флаг нескольких слов в капче. Можно увидеть строку, которой отправляете?
Так же можно использовать string_replace. В описании перепутаны местами исходная и искомая строка этого оператора. По крайней мере были...
Вверх
portos
Цитата(DarkMaster @ 8.12.2014, 13:47)

Скорее всего вы задаете флаг нескольких слов в капче. Можно увидеть строку, которой отправляете?
Так же можно использовать string_replace. В описании перепутаны местами исходная и искомая строка этого оператора. По крайней мере были...

использую скрипт приведённый выше,вставляю свой путь к картинке, свой ключ ...капча состоит из букв и цифр.ответ приходит правильный ,но с пробелом в середине капчи
всё разобрался ...в строке set %sendImg AntiGate.SendImage (*D:\captcha\captcha.jpg* regsense=1 phrase=0) было вместо 0 стояло 1 , т.е. две фразы.спс вам и сайту за помощь !
Вверх
DarkMaster
Почитайте в 1 посте про параметры. Многое прояснится. На сервисе кстати есть ограничение по количеству и сочетанию параметров, лишнее лучше не ставить.
Вверх
Invision Power Board © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.