Создана дллка для работы с рапознованнием капчи.
AntiGate_plugin.zip ( 126,81 килобайт )
Кол-во скачиваний: 2533
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
Круто. Спасибо!
рад стараться)
Да прикольно, спасибо большое)
подскажите , как из скрипта 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
left x_координата y_коорината
sendex %getResult [2]
left x_координата y_коорината
sendex %getResult [2]
Скорее всего вы задаете флаг нескольких слов в капче. Можно увидеть строку, которой отправляете?
Так же можно использовать string_replace. В описании перепутаны местами исходная и искомая строка этого оператора. По крайней мере были...
Почитайте в 1 посте про параметры. Многое прояснится. На сервисе кстати есть ограничение по количеству и сочетанию параметров, лишнее лучше не ставить.
set linedelay 0
log mode compact
:start
// Воодим ключ от сервиса.
// Требуется выполнить всего 1 раз.
set $key AntiGate.SetKey (yutuytuyguuytvkyutvuytcukytcuytyr)
log Текущий ключ: $key
// Обнуляем прошлый результат.
set %sendImg [1] ""
// Загрузка изображения может быть не удачной,
// например, из-за остустствия слотов.
// Повторяем попытки загрузить изображение
// пока не будет дан положительный ответ от сервера.
while %sendImg [1] <> "OK"
set %sendImg AntiGate.SendImage (*C:\Users\Downloads\captcha.jpg* regsense=0 phrase=0 min_len=4 max_len=5)
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
left 422, 297
wait 5s
sendex %getResult [2]
stop_script
Курсор точно ставится? Попробуйте kleft.
Так же попробуйте запустить скрипт, потом самостоятельно тыкнуть курсором на поле ввода. Скрипт:
wait 5s
sendex qwe
kleft это немного иной тип эмуляции. В частности он не работает с перекрытыми окнами, кликает в окно на поверхности. Остальное все тоже самое. Скорее всего поле ввода просто имеет другой хендл и из-за этого не срабатывал kleft либо приложение просто не восприимчиво к left.
move 1449, 275 abs //прям над окошком с качей
set workwindow windowfromcursor
set #z workwindow
set workwindow #z
PrintScreen #z 404, 222 533, 274 C:\Users\скрыто\Downloads\captcha.jpg
wait 5s
stop_script
move 1449, 275 abs //прям над окошком с качей
set workwindow windowfromcursor
set #z workwindow
set workwindow #z
PrintScreen #z 404, 222 533, 274 C:\Users\скрыто\Downloads\captcha.jpg
wait 5s
stop_script
PrintScreen 722066 0 0 1917, 1035 $myPatch
stop_script 38
кароч вот как получилось
set linedelay 0
log mode compact
set #h findwindow (Город Мертвых.)
set workwindow #h
//move 1652, 279 abs
//set workwindow windowfromcursor
//set #s workwindow.12
//set workwindow #h
set $myPatch C:\Users\uyuyyuy\Downloads\captcha.jpg
PrintScreen #h 397, 219 520, 269 $myPatch
wait 1s
:start
// Воодим ключ от сервиса.
// Требуется выполнить всего 1 раз.
set $key AntiGate.SetKey (kguiiuyikukiuyxiutyxkytxkuytxtrr)
log Текущий ключ: $key
// Обнуляем прошлый результат.
set %sendImg [1] ""
// Загрузка изображения может быть не удачной,
// например, из-за остустствия слотов.
// Повторяем попытки загрузить изображение
// пока не будет дан положительный ответ от сервера.
while %sendImg [1] <> "OK"
set %sendImg AntiGate.SendImage (*C:\Users\uyuyyuy\Downloads\captcha.jpg* regsense=0 phrase=0 min_len=4 max_len=5)
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
kleft 1366, 514 abs
wait 500
sendex %getResult [2]
wait 500
//kleft 508, 337 //кнопка "отправить"
stop_script
[attachmentid=1711] почемуто вторые координаты ингнорируются
[attachmentid=1712] а вот как ввелся код два нижних подчеркивания "__" после kleft abs
move те же координаты
wait 1000
left координаты
подскажите можно как-то использовать этот способ для распознавания капчи вида:
рендомная картинка с двумя изображениями (к примеру: дом, мяч, человечек, звезда. телефон - из них показываются две рендомные либо же две одинаковые), для отвода глаз на этом же изображении рендомно прорисовывается пример сложения\вычитания (2+5=) , ниже есть примерно 10-15 пунктов для выбора соответствующи х картинок, при чем там они не нарисовано, а написаны словами( к примеру если на картинке нарисован мяч, то там где нужно выбирать, рядом просто написано мяч), и соответствеено нужно выбрать два таких варианта или же один если картинки две одинакоые (два мяча), и при этом всем эти все картинки и слова для выбора каждый раз искажаются)))
в общем вот как-то так) реально сложная капча
как минимум не этим плагином.
Текущий ключ: key:XXXXXXXXXXXXXXXXXXXXXX
Статус отправки изображения: OK/n443919065
Содержимое ответа на отправку изображения:
Статус отправки изображения: OK/n443919092
Содержимое ответа на отправку изображения:
Статус отправки изображения: OK/n443919148
Содержимое ответа на отправку изображения:
Это кнайт баги пофиксил в передаче из плагина в пилот. Теперь костыли отвалились...
Ща попробую побырому исправить, но у меня версий этого плагина десяток и одна рабочая... Надеюсь угадаю какая...
Пробуйте. Отпишитесь, пожалуйста об успехах, чтобы я мог обновить версию в первом посте.
Прикрепленные файлы
AntiGate.zip ( 131,68 килобайт )
Кол-во скачиваний: 1211
Текущий ключ: key: ХХХХХХХХХХХХХХХХХ
Статус отправки изображения: OK
Содержимое ответа на отправку изображения: ХХХХ
Статус получения результата: NOT_READY
Содержимое ответа на запрос результата: CAPCHA_NOT_READY
Статус получения результата: OK
Содержимое ответа на запрос результата: ХХХ
Доброго вечера. Подскажите плз, почему у меня вместо нужного результата И2ЯЯ2 выходит Рё2СС2? А если проверять через msg в самом пилоте, так там вообще страшные символы.
Проблемы с кириллицей и локалью. Попробуйте в пилоте переключить язык. Может помочь.
Доброго времени суток
Подскажите решение проблемы о которой уже писали выше:
Скрипт западает на этой строке: set %sendImg AntiGate.SendImage (*e:\1.jpg*................
и выдается такое сообщение до бесконечности:
Статус отправки изображения: OK/n311922314
Содержимое ответа на отправку изображения:
Статус отправки изображения: OK/n311922337
Содержимое ответа на отправку изображения:
отправка проходит успешно, картинка на сайт кидается, но ответ не приходит и соответственно она ее закидывает еще раз.
а всё, Увидел прикреплённый файл, Спасибо
Как я понял сервис то другой, но запросы те же остались, т.к. сайт рекомендует тупо подправить hosts для того, что бы работали программы https://rucaptcha.com/support/faq/28/
Я бы попробовал, но UOPilot (все с 2.37 до последней нестабильной на сегодня версии) отказываются загружать данную dll
хм... Дома в логах пишет, что загрузка провалена dll. На работе она загрузилась
Я не знаю по какой причине плагин может не загрузиться.
Проверено! Все работает!
Вам нужно изменить файл hosts (C:\Windows\System32\drivers\etc) дописав в него следующее:
89.108.73.200 antigate.com
89.108.73.200 anti-captcha.com
Возник вопрос реализации далее (не совсем я разбираюсь в скриптах...):
Есть результат %getResult [2] он равен всегда 4 цифрам. К примеру 3412
Нужно что бы скрипт в зависимости от последовательности этих цифр кликал на заданные координаты (в капче вставить результат или набрать его с клавиатуры невозможно, только нажатием мышки на координаты цифр визуализированной клавиатуры приложения)
Кнопки надо будет искать, но с поиском картинок у меня проблем нет.
Проблема лишь записать данный массив в переменные
set %getResult [2] 3412 // что надо набрать
set $path "C:\UOPilot\images\" // путь к картинкам цифр
init_arr %image 0 1 2 3 4 5 6 7 8 9 // имена картинок 0.bmp, 1.bmp и т. д.
log clear
log mode compact
for #i 1 4 // цикл на 4 шага
set #num Copy(%getResult [2] #i 1) // копируем цифру
set #num #num + 1 // увеличиваем на 1, т. к. массив начинается с 1, а не 0
log $path%image[#num].bmp // путь к картинке
set #a findimage (0 0 1920 1080 ($path%image[#num].bmp) %arr) // ищем картинку цифры
if #a > 0 // если найдена
kleft %arr [1 1] %arr [1 2] // клик по ней
wait 1000
end_if
end_for
end_script
А вот запуск плагина дома:
Ситуация оказалась странная. Дома раз 5 полностью переустанавливал пилот (заново скачивал пилот и плагин) и ни в какую. Скинул архив с работы, все пошло работать
Windows 2008 Server х64 (вынужден запустить именно на нем)
23:15:49 : Error loading plugin: AntiGate.dll. Load failed.
Вначале ругался на отсутствие msvcp120.dll. Нашел много вариантов, перепробовал, ни в какую.
Может у кого есть опыт именно с серверными платформами? Поделитесь пожалуйста.
Спасибо!
P.S.
На Windows 7 x64 работает замечательно, правда с первой попытки часть денег профукал из-за ошибки в первом плагине, одну капчу плагин успел отправить 200 раз за полминуты.
И да, кстати горький опыт предыдущего поста тоже проверил, скачал с Win7 работающий вариант, не пошло
Я слабо предстваляю чем так может отличаться в данном случае ось. Если нужно - могу перекомпилить, если скажете, что вам под нее выставить специально.
было бы здоров конечно, но я даже смутно не представляю какие сведения предоставить ещё, пробовал на Windows Server 2003, ошибка та же самая
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)