Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Подбор цифр в Web-форме, Обычный подбор цифр от 0000 до 9999 в форме на сайте
Ozz1kH
сообщение 27.11.2018, 14:56
Сообщение #1


*

Registred
Сообщений: 4
Регистрация: 27.11.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.127
Возраст: 22



Всем добрый день! Прочитал о программке, что она позволяет выполнять любые действия и везде, где хочешь. Однако не совсем понимаю, как реализовать тупой подбор цифр в форме на сайте, но вижу алгоритм следующим образом:
1. Создаем файл с цифрами по типу:
0000
0001
...
9999, далее в программе задаем выбор построчного подбора (не знаю, как).
А в самой форме следующим образом:
Шаг 1. Выбор из файла 0000
Шаг 2. Вписание в поле формы 0000
Шаг 3. Нажатие кнопки Enter.
Шаг 4. Если страница загрузилась - остановка (либо ничего, не особо важно).
Если мы остались на той же странице, то выбор из файла уже 0001, вписание и нажатие кнопки Enter.

Заранее спасибо за любой комментарий!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 27.11.2018, 15:15
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26703
Пользователь №: 16.971
Возраст: 29



Код
log clear
log mode compact
for #i 1 20   // цикл на 20 шагов
    set $a #i
    while size($a) < 4  // дописать нули пока строка не будет состоять из 4 чисел
        set $a 0$a
    end_while
    log $a
    // тут нужные действия, например
    left 100, 200   // клик левой кнопкой мыши, вписать координаты формы
    wait 500  // ждать 0.5 секунды
    send $a   // напечатать текст
    wait 300
    // дальше что нужно
end_for
end_script

Список_функций
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 28.11.2018, 13:54
Сообщение #3


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



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

log clear
log mode compact
set #hand FindWindow ("Блокнот")  // ищем окно Блокнота
get windowpos #hand #X #Y         // получаем координаты окна (усеченный вариант)
// увеличиваем координаты на 50 пикселей (чисто для того, чтобы пример работал)
set #x #x + 50
set #y #y + 70
move #x #y abs                    // переместить курсор в требуемые координаты
set #handle WindowFromCursor      // записать в переменную хендл окна под курсором
set workwindow #handle            // сделать окно рабочим
load_array %forma c:\TMP\123.txt  // загружаем содержимое файла в массив
set #num size(%forma)             // определяем размер массива (кол-во строк файла)

set %okna FindWindow ("Яндекс.Браузер") // ищем все окна браузера
set #numwin size(%okna)                 // запоминаем количество найденных окон
for #i 1 #num                     // пока не обработаем все строки
  // далее заремаренный код, чисто для примера
  //  set #xx 100                       // определяем координаты формы куда вводить текст
  //  set #yy 200                       // определяем координаты формы куда вводить текст
  //  left #xx, #yy    // клик левой кнопкой мыши в место куда вводить текст

  send %forma[#i]                   // вводим текущую строку
  send {Enter}                      // жмём Enter

  set %oknaNew FindWindow ("Яндекс.Браузер") // опять ищем все окна браузера
  set #numwinNew size(%okna)                 // получаем количество найденных окон

  if #numwinNew > #numwin           // проверка результата
    break                             // если появилось новое окно - результат достигнут - прерываем цикл
  end_if
end_for
stop_script


В качестве проверки результата привёл пример с использованием поиска окон, на самом деле можно осуществлять любой анализ, вплоть до анализа содержимого нового окна. Как Вы и сказали, действительно, можно запрограммировать абсолютно всё. Удачи!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Ozz1kH
сообщение 28.11.2018, 15:05
Сообщение #4


*

Registred
Сообщений: 4
Регистрация: 27.11.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.127
Возраст: 22



Цитата(cirus @ 27.11.2018, 15:15) *

Код
log clear
log mode compact
for #i 1 20   // цикл на 20 шагов
    set $a #i
    while size($a) < 4  // дописать нули пока строка не будет состоять из 4 чисел
        set $a 0$a
    end_while
    log $a
    // тут нужные действия, например
    left 100, 200   // клик левой кнопкой мыши, вписать координаты формы
    wait 500  // ждать 0.5 секунды
    send $a   // напечатать текст
    wait 300
    // дальше что нужно
end_for
end_script

Список_функций

Спасибо большое! Рабочий вариант выглядит следующим образом)

Код

log clear
log mode compact
for #i 1 9999 // цикл на 20 шагов
set $a #i
while size($a) < 4 // дописать нули пока строка не будет состоять из 4 чисел
set $a 0$a
end_while
log $a
// тут нужные действия, например
left 731, 668 // клик левой кнопкой мыши, вписать координаты формы
wait 1 // ждать 0.001 секунды
send $a // напечатать текст
wait 1
// дальше что нужно
Send {Enter} //нажать 'Enter'
wait 600 // ждать 0.6 секунды
left 731, 668 // клик левой кнопкой мыши, вписать координаты формы
Send {Backspace} //нажать 'Backspace'
Send {Backspace} //нажать 'Backspace'
Send {Backspace} //нажать 'Backspace'
Send {Backspace} //нажать 'Backspace'
Send {Backspace} //нажать 'Backspace'
Send {Backspace} //нажать 'Backspace'
Send {Backspace} //нажать 'Backspace'
Send {Backspace} //нажать 'Backspace'
end_for
End_script



Спасибо большое! Позже попробую!)

Цитата(sutra @ 28.11.2018, 13:54) *

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

log clear
log mode compact
set #hand FindWindow ("Блокнот")  // ищем окно Блокнота
get windowpos #hand #X #Y         // получаем координаты окна (усеченный вариант)
// увеличиваем координаты на 50 пикселей (чисто для того, чтобы пример работал)
set #x #x + 50
set #y #y + 70
move #x #y abs                    // переместить курсор в требуемые координаты
set #handle WindowFromCursor      // записать в переменную хендл окна под курсором
set workwindow #handle            // сделать окно рабочим
load_array %forma c:\TMP\123.txt  // загружаем содержимое файла в массив
set #num size(%forma)             // определяем размер массива (кол-во строк файла)

set %okna FindWindow ("Яндекс.Браузер") // ищем все окна браузера
set #numwin size(%okna)                 // запоминаем количество найденных окон
for #i 1 #num                     // пока не обработаем все строки
  // далее заремаренный код, чисто для примера
  //  set #xx 100                       // определяем координаты формы куда вводить текст
  //  set #yy 200                       // определяем координаты формы куда вводить текст
  //  left #xx, #yy    // клик левой кнопкой мыши в место куда вводить текст

  send %forma[#i]                   // вводим текущую строку
  send {Enter}                      // жмём Enter

  set %oknaNew FindWindow ("Яндекс.Браузер") // опять ищем все окна браузера
  set #numwinNew size(%okna)                 // получаем количество найденных окон

  if #numwinNew > #numwin           // проверка результата
    break                             // если появилось новое окно - результат достигнут - прерываем цикл
  end_if
end_for
stop_script


В качестве проверки результата привёл пример с использованием поиска окон, на самом деле можно осуществлять любой анализ, вплоть до анализа содержимого нового окна. Как Вы и сказали, действительно, можно запрограммировать абсолютно всё. Удачи!

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Ozz1kH
сообщение 28.11.2018, 20:42
Сообщение #5


*

Registred
Сообщений: 4
Регистрация: 27.11.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.127
Возраст: 22



Посмотрел код, возникло несколько вопросов.
1. Из формы нужно одно активное поле (его координаты имеются, с этим проблем нет), но при верном наборе цифр - не будет создано новое окно, а всё произойдет в уже имеющемся окне.
2. У меня 10000 комбинаций, все надо перебрать, не знаю, что будет по времени и нагрузке (IMG:style_emoticons/default/laugh.gif)
3. Может туплю, но не совсем понял зачем нахождение вкладок браузера.
Спасибо большое за всё!

Цитата(sutra @ 28.11.2018, 13:54) *

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

log clear
log mode compact
set #hand FindWindow ("Блокнот")  // ищем окно Блокнота
get windowpos #hand #X #Y         // получаем координаты окна (усеченный вариант)
// увеличиваем координаты на 50 пикселей (чисто для того, чтобы пример работал)
set #x #x + 50
set #y #y + 70
move #x #y abs                    // переместить курсор в требуемые координаты
set #handle WindowFromCursor      // записать в переменную хендл окна под курсором
set workwindow #handle            // сделать окно рабочим
load_array %forma c:\TMP\123.txt  // загружаем содержимое файла в массив
set #num size(%forma)             // определяем размер массива (кол-во строк файла)

set %okna FindWindow ("Яндекс.Браузер") // ищем все окна браузера
set #numwin size(%okna)                 // запоминаем количество найденных окон
for #i 1 #num                     // пока не обработаем все строки
  // далее заремаренный код, чисто для примера
  //  set #xx 100                       // определяем координаты формы куда вводить текст
  //  set #yy 200                       // определяем координаты формы куда вводить текст
  //  left #xx, #yy    // клик левой кнопкой мыши в место куда вводить текст

  send %forma[#i]                   // вводим текущую строку
  send {Enter}                      // жмём Enter

  set %oknaNew FindWindow ("Яндекс.Браузер") // опять ищем все окна браузера
  set #numwinNew size(%okna)                 // получаем количество найденных окон

  if #numwinNew > #numwin           // проверка результата
    break                             // если появилось новое окно - результат достигнут - прерываем цикл
  end_if
end_for
stop_script


В качестве проверки результата привёл пример с использованием поиска окон, на самом деле можно осуществлять любой анализ, вплоть до анализа содержимого нового окна. Как Вы и сказали, действительно, можно запрограммировать абсолютно всё. Удачи!

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 29.11.2018, 4:37
Сообщение #6


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Может туплю, но не совсем понял зачем нахождение вкладок браузера

Я так и написал, пример с использованием окон, если появляется новое окно, я же не знаю всех тонкостей. Если мысль я понял верно, то значит, что надо сделать проверку ИЗМЕНЕНИЙ произошедших в текущем окне. Если всё остальное работает, то надо понять, ЧТО ИМЕННО меняется в текущем окне, при правильном вводе. Здесь без Вашей помощи я Вам помочь не смогу. Надо выделить "событие" которое "уникально", если выбор оказался верным. Как мне видится, нужен анализ содержимого окна. И в этом случае поможет только или findcolor или findimage. На вскидку могу примерно предположить что если ввод не дал результата, то содержимое окна не изменилось, в противном случае - изменилось. Так как минимум, вот этот момент вычисляется путём сравнения картинок ДО и ПОСЛЕ. Делаете образ окна (getimage) ... вводите число ... и проверяете (сравниваете) "новую" картинку со старым изображением окна. Это долгий (относительно конечно) вариант, вполне возможно, что в изменённом окне появляется ЧТО-ТО, что можно отловить findcolor-ом, ну цвет чего-то изменился ... надпись появилась ... и т.д. - это можно отловить findcolor-ом. Чем подробнее опишете ситуацию, тем точнее получите ответ, благо тут кроме меня дилетанта, могут посоветовать профи.

Может опять чего не понимаю, но должна, по логике, измениться адресная строка браузера... ничто не мешает абсолютно достоверно и быстро определить это "событие".
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 29.11.2018, 16:15
Сообщение #7


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Если окно в котором выполняется ввод путём перебора статичное, т.е. ничего в нём не меняется (естественно кроме поля ввода), то можно определить результат путём обычного if_not 60 940 23618 , где 23618 - это цвет в какой-то точке (в данном примере 60, 940), который должен измениться, если ввод значения сработал. Конечно значение цвета и координаты точки Вы должны определить для себя сами.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 29.11.2018, 16:44
Сообщение #8


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Код

log clear
log mode compact
set #hand FindWindow ("Блокнот")  // ищем окно Блокнота (должен быть открыт)
set windowpos 5 5 400 500 #hand   // установка окна Блокнота в заранее определённое место
set #x 55
set #y 75
move #x #y abs                    // переместить курсор в окно Блокнота
set #handle WindowFromCursor      // записать в переменную хендл окна под курсором
set workwindow #handle            // сделать окно Блокнота рабочим
load_array %forma c:\TMP\123.txt  // загружаем содержимое файла в массив
// в моём файле 9 строк от 0000 до 0008
set #num size(%forma)             // определяем размер массива (кол-во строк файла)
for #i 1 #num                     // пока не обработаем все строки файла
  send %forma[#i]                   // вводим текущую строку
  send {Enter}                      // жмём Enter
  if_not 28 70 16777215             // если цвет 5-ой строке отличается от фонового
    break                             // результат достигнут - прерываем цикл
  end_if
end_for
stop_script

Привожу реальный пример анализа содержимого окна, в данном примере при заполнении пятой строки скрипт завершит свою работу.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Ozz1kH
сообщение 1.12.2018, 15:25
Сообщение #9


*

Registred
Сообщений: 4
Регистрация: 27.11.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.127
Возраст: 22



Спасибо большое! Но не особо понял, как его использовать. Однако вопрос появился, получается использование первого кода, но можно ли в него добавить условие, если в строке больше 4х символов, что повторился предыдущий шаг(например, после 0003 было введено 00040005, что не устраивает и повторно повторился шаг пока не будет введено 0004 (четыре цифры).
Спасибо заранее!)
Цитата(sutra @ 29.11.2018, 16:44) *

Код

log clear
log mode compact
set #hand FindWindow ("Блокнот")  // ищем окно Блокнота (должен быть открыт)
set windowpos 5 5 400 500 #hand   // установка окна Блокнота в заранее определённое место
set #x 55
set #y 75
move #x #y abs                    // переместить курсор в окно Блокнота
set #handle WindowFromCursor      // записать в переменную хендл окна под курсором
set workwindow #handle            // сделать окно Блокнота рабочим
load_array %forma c:\TMP\123.txt  // загружаем содержимое файла в массив
// в моём файле 9 строк от 0000 до 0008
set #num size(%forma)             // определяем размер массива (кол-во строк файла)
for #i 1 #num                     // пока не обработаем все строки файла
  send %forma[#i]                   // вводим текущую строку
  send {Enter}                      // жмём Enter
  if_not 28 70 16777215             // если цвет 5-ой строке отличается от фонового
    break                             // результат достигнут - прерываем цикл
  end_if
end_for
stop_script

Привожу реальный пример анализа содержимого окна, в данном примере при заполнении пятой строки скрипт завершит свою работу.

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.12.2018, 18:57
Сообщение #10


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26703
Пользователь №: 16.971
Возраст: 29



Цитата
после 0003 было введено 00040005

Код
send %forma[#i]                   // вводим текущую строку
wait 500   // добавить паузу
send {Enter}                      // жмём Enter
wait 500   // добавить паузу
if_not 28 70 16777215

Приложению требуется время чтобы отработать посланное нажатие.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 2.12.2018, 14:12
Сообщение #11


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
можно ли в него добавить условие

Да всё можно, пример, как я говорил, примитивный, чисто для понимания, как проводить анализ. Лучше конечно сделать анализ не конкретной точки на экране (если таковую нельзя определить однозначно), а определённой зоны окна, которая однозначно меняется. То есть можно например анализировать не одну, а 2-3 точки одним оператором сравнения (будет выполняться дольше). Если время выполнения не критично, то это самый простой вариант. Про паузы не забывать, если отрисовка нового содержимого окна выполняется небыстро. В файле, из которого вводятся строки, может быть любое количество символов. Если ничего не получается, выкладывайте свой реальный код, опишите проблему - однозначно её решим.


Можно также сохранять результаты работы в файл, в том числе и прямо в этот же файл из которого берутся строки (например во второй столбец) и при необходимости анализировать и эти моменты.

Если могут возникать ошибочные или "нештатные" ситуации и может понадобиться вернуться к выполнению предыдущего шага цикла, то в таком случае использовать цикл не FOR , а цикл WHILE.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 2.12.2018, 14:23
Сообщение #12


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Если покажете (достаточно области окна которое меняется) скрины ДО и ПОСЛЕ, смогу показать реальный код обработки.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 20.4.2024, 8:45
Designed by Nickostyle