Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

Математическая капча

SARCAZM

Это что за покемон?
Команда форума
Рег
5 Июн 2015
Сообщения
1,446
Реакции
1
Trovo
SARCAZM
post-79-0-42089800-1438280084.jpg
Решает задачку на сложение двух чисел в капче, как на скрине.

Код:
uses SysUtils;


 var tmpDialog,tmpString:string;
 var posCaptcha, num1, num2, resultNum, count:integer;
begin
  while Engine.Status = lsOnline do begin
    tmpDialog := Engine.DlgText;
    if (Pos('Активирован штраф', tmpDialog) <> 0) then
begin
tmpString:='';
tmpDialog:=''; // Наверное на делфи это не нужно делать, но у меня привычка.
// Ищем капчу в диалоге
    tmpDialog:=Engine.DlgText;
    posCaptcha:=pos('<font color=LEVEL>',tmpDialog);
posCaptcha:=posCaptcha+19;


// Выдираем 1 число из капчи 
while not (tmpDialog[posCaptcha] = ' ') do begin
tmpString:=tmpString + tmpDialog[posCaptcha];
posCaptcha:=posCaptcha + 1;
end;
num1:=StrToInt(tmpString);


// Выдираем 2 число из капчи 
tmpString:='';
posCaptcha:=posCaptcha + 3;
while not (tmpDialog[posCaptcha] = ' ') do begin
tmpString:=tmpString + tmpDialog[posCaptcha];
posCaptcha:=posCaptcha + 1;
end;
num2:=StrToInt(tmpString); 


// Решаем
resultNum:=num1 + num2;
print(IntToStr(resultNum));


// Отправляем ответ на капчу 
Engine.BypassToServer('00 '+IntToStr(resultNum), True); 
count:=count+1;
print ('Капча выскакивала -->'+IntToStr(count)+'<-- раз, но мы ее обошли =)');
end;
Delay (888);
end;
end.
 
скрипт полностью готов или нужно ещё вводить какието значения чисел туда где написано по руски?
 
Готов, если капча точно такая же как на скрине.
 
SARCAZM написал(а):
Готов, если капча точно такая же как на скрине.
копировать её с этими надписями ( // Наверное на делфи это не нужно делать, но у меня привычка.
// Ищем капчу в диалоге ) и вставлять в текстовик потом в адреналин ?

Кстати вот тоже скрипт для капчи которая начинается на 999?? , если есть скрин у тебя такой капчи выложи может кому понадобится .

begin
while 1<>2do begin
Engine.BypassToServer('00 99920', True);
Delay(200);
Engine.UseItem(9840);
Delay(120);
end;
end.
 
aleksichenk написал(а):
Кстати вот тоже скрипт для капчи которая начинается на 999??
То,что ты прислал, просто бесконечная отправка байпасса 00 99920 и использование некого итема с ID 9840. Но тут не об этом, не будем засорять тему.



aleksichenk написал(а):
копировать её с этими надписями ( // Наверное на делфи это не нужно делать, но у меня привычка. // Ищем капчу в диалоге ) и вставлять в текстовик потом в адреналин ?
Да, копировать можно с этими надписями. Это комментарии, которые адреналин просто проигнорирует.
 
спасибо большое за отзывчивость :)
 
спасибо пребольшое)всё работает :)
 
Тему почистили, а тут вроде был скрипт на обычную цифровую капчу(( Дайте пожалуйста, если есть у кого то
 
@SARCAZM, Добрый вечер. Подскажи пожалуйста. После того как данный скрипт отправляет байпасс, диалог с каптчей закрывается?
Дело в том, что я изменил под другой сервер сию каптчу. Она работает, но диалог не закрывается. И по истечению выставленной мной задержки, она снова вводится. А это вызывает обратный эффект.
Будто кнопка 'ОК' не нажимается.

Вот скрин каптчи:
7a5c4730894a4edcb84aaa40702c38c1.png


Вот как выглядит байпасс:
8e5a59fa2bda4705aa2edb25cff80116.png


fe3803be97df494ca5d6d4df40d37955.png


Вот как выглядит код:

Engine.BypassToServer('00 '+IntToStr(Num), True);

Или всё же правильно так:


Engine.BypassToServer('00 $pwd'+IntToStr(Num), True);

Хотя и так и так скрипт не работает как должен...
 
@Krickt, Благодарю.
А не подскажешь почему диалог не закрывается? Ведь при отправке байпасса, как я понимаю, должна вводиться каптча и нажиматься кнопка 'ОК'.
 
Нет. Отправка байпасса - это отправка байпасса. К закрытию форм (или вводу в поле) никакого отношения не имеет.

Оригинал приближенно:
Пришла капча - Юзер ввел в поле ответ - нажал кнопку ОК - клиент закрыл окошко диалога - отправил на сервер запрос bypass

В твоем случае:
Пришла капча - скрипт обработал входящий запрос - отправил на сервер запрос bypass

Ненужные телодвижения и атавизм "Юзер" - убраны.
 
@BreadfanLock, Я понял. Ошибочно думал, что скрипт отправляя байпасс имитирует нажатие кнопки 'ОК'.

А как тогда заставить бота закрыть диалог? Или нажать на кнопку 'ОК'?
 
@Krickt, Я уже разобрался, спасибо. Все оказалось намного проще чем я думал. Можно не закрывать капчу, а просто не вводить ее если она совпадает с предыдущей...)
Код:
if tmpString <> check then 
begin
          Engine.BypassToServer('00 '+(tmpString), true);
          print('Captcha has been defused!');
            delay(5000);
end
else
delay(5000);
print('Looking for captcha...');
end;
 
Назад
Сверху