Сейчас на форуме: Kybyx, user99 (+2 невидимых)

 eXeL@B —› Оффтоп —› Автоматизация повторяющихся действий для браузерного приложения
Посл.ответ Сообщение


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 08 июня 2014 23:02
· Личное сообщение · #1

Всем добрый день. Столкнулся я с проблемой, грубо говоря, написания бота для браузерной игры. Но так как ботов тут не любят, то поясню. Есть замечательный сайт --> для тренировки десятипальцевого метода <--. Мне хотелось бы, чтоб бот умел набирать текст в этих гонках за меня. Так я смогу получить нужное кол-во очков на скин машинки (на этом моменте все должны проникнуться важностью моей цели, сделать лицопальму и продолжить чтение). С технической стороны что мы имеем.

1. Снифая трафик, я не могу понять, в каком запросе приходит текст для гонки.
2. Если писать тупо программку (например, на С++), которая будет вводить текст, отравляя сообщения окна браузера, то есть проблема с тем, где взять этот текст (он не копируется обычным способом).
3. Нажимая "Проинспектировать элемент" в Опере или что-то аналогичное в Хроме, я без труда нахожу этот текст на странице, и я даже не против парсить html, но вот как мне из браузера получить эту страницу, непонятно.

В общем, есть такие пути - как-то писать бота так, чтоб он:
а) работал внутри браузера, используя какой-нибудь javascript.
б) работал автомно, взаимодействуя с браузером через winAPI.
в) полностью эмулировал бы браузер (но мне это не надо, ибо много гемороя, а я не настолько идейный).

Погуглил статьи на эту тему на хабре. Есть пара статей, где чуваки пишут ботов на autoit, но мне этот вариант не подходит, так как там пишут бота для игры, где объектами являются геометрические фигуры, отличающиеся по цвету. У меня же тут текст, и тогда мне нужен ещё какой-то модуль распознавания текста, какой-то FineReader, ну, короче, не вариант.

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

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 08 июня 2014 23:07 · Поправил: dosprog
· Личное сообщение · #2

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

Что-то похожее на другой вариант видал --> Тут <--
На помощь приходит замечательное дополнение для браузера Firefox - Greasemonkey. Суть его в том, что на любую страницу можно добавить пользовательский JavaScript, который будет выполнен сразу же после ее формирования. Это позволяет, например, как угодно модифицировать страницу после ее загрузки. Для множества сайтов уже созданы сотни полезных скриптов, а, обладая навыками программирования на JavaScript, вы можете сами написать нужный вам скрипт. Если интересны подробности, то почитайте документацию на офсайте дополнения.

Ну то таке..





Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 08 июня 2014 23:30
· Личное сообщение · #3

Лучший вариант это подключить свою js.

В консольке лисички, пример на jquery.
Code:
  1. var tag = document.createElement("script");
  2. tag.src = "ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js";
  3. document.documentElement.appendChild(tag);


И теперь можна из консольки дёргать нужное нам апи.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 08 июня 2014 23:58
· Личное сообщение · #4

dosprog пишет:
но можно ведь (или нельзя?) скопировать предложенный текст в буфер обмена, выделив мышом...

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

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 53.9 (постоянный), 19thx
Активность: 0.040
Статус: Участник

Создано: 09 июня 2014 05:17
· Личное сообщение · #5

ARCHANGEL пишет:
Как вставить свой джаваскрипт код и заставить его выполняться на чужой странице, инфы не нашлось.

User JS
Для лисы например есть дополнение greasemonkey



Ранг: 89.1 (постоянный), 134thx
Активность: 0.060.07
Статус: Участник

Создано: 09 июня 2014 05:38 · Поправил: LinXP
· Личное сообщение · #6

ARCHANGEL чего то текст мне сразу на глаза попался..
http://s020.radikal.ru/i719/1406/e0/b764db5d0faa.png
Code:
  1. http://keyboard-racing.com/index.php?do=game.get_data&ajax_custom=1&game_id=2195647&spectator=&do=game.get_data&ajax_custom=1&request_code=29361&ajax_request=1&request_hash=7669


отключить блокировку выделения можно например удалить слово js-focus
http://i053.radikal.ru/1406/e2/1e3f1b1b1a98.png

ps: предполагаю если послать правильную строку на сервер,
Code:
  1. http://keyboard-racing.com/index.php?do=game.set_data&ajax_custom=1&game_id=2195769&user_id=-7275&position=2&errors=3&do=game.set_data&ajax_custom=1&request_code=69793&ajax_request=1&request_hash=9378

где position - это количество слов в водимой строке и правильным request_code и request_hash - то сервер будет считать что рейс закончен..

add: http://keyboard-racing.com/js/core_v1.66.js (decryptor)
Code:
  1.          var _changePosition=function(position,error)
  2.                  {
  3.                  error=error||false;
  4.                  if(_game_data.layout=='standart')
  5.                         {
  6.                         var text=_game_data.text.split(' ');
  7.                         var game_text=_game_data.game_text.split(' ');
  8.                         if(text.length==position)
  9.                               {
  10.                               _finishGame();
  11.                               return true
  12.                         }
  13.                         _game_data.current_word=text[position]+(text.length-1==position?'':' ');
  14.                         if(error)
  15.                               {
  16.                               open_tag='<span class="text-error">';
  17.                               close_tag='</span>'
  18.                         }
  19.                         else

я в яве нуб, но полагаю что если после var game_text=_game_data.game_text.split(' '); добавить строку position=text.length; то этого будет вполне достаточно



Ранг: 42.3 (посетитель), 19thx
Активность: 0.040
Статус: Участник

Создано: 09 июня 2014 06:25 · Поправил: kampaster
· Личное сообщение · #7

ARCHANGEL пишет:
dosprog пишет:
но можно ведь (или нельзя?) скопировать предложенный текст в буфер обмена, выделив мышом...

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

Можно.
К примеру:
Выделить текст ЛКМ и не отпуская ЛКМ нажать Ctrl+C
Текст копируется, но сработает защита - по тексту будут рассыпаны цифры в разных местах.
Вот что получилось:
Wi7523lliam G5845olding's classi9142c no9255vel o5572f primi6173tive savagery9078 and1330 survi5992val i5262s on4271e of6490 the3858 most6517 vivi8975dly re6914alized and9490 rivetin9805g work2484s in10860 m3869odern ficti5785on. The9151 tale8165 begins5835 aft1747er a5426 p1532lane wrec8441k d1210eposits a10236 gr3362oup o7633f Englis5671h sch7662ool boys6343, a8193ged s9486ix t9188o twe9643lve on4591 a1897n isolate5432d tropic8285al isl10918and.
Если подчищать мусор, то будет всё пучком



Ранг: 53.9 (постоянный), 33thx
Активность: 0.050
Статус: Участник

Создано: 09 июня 2014 07:02 · Поправил: deniskore
· Личное сообщение · #8

В ranorex есть все, что нужно, в том числе распознавание текста, правда фреймворк не бесплатный --> Link <--



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 09 июня 2014 11:44 · Поправил: vovanre
· Личное сообщение · #9

Если в языках не привередливы, то есть c sharp + awesomium + js

-UDP-

Там ещё есть для c++, не заметил.



Ранг: 46.8 (посетитель), 20thx
Активность: 0.040
Статус: Участник

Создано: 09 июня 2014 13:04
· Личное сообщение · #10

В чем сложность найти текст.
Браузер google, правая кнопка - просмотр кода элемента.
FOTO http://postimg.org/image/sne7za6d5/
И мы видим:
1) Текст
2) Цифры, о которых писал kampaster.

Можно использовать C# как прокси в браузере, и если текст удалось вынуть, то показать сообщение в трее и готовность ввести текст в активное окно (по нажатию ключевых кнопок).
Еще можно посмотреть на Fiddler2, отличный пример ПО на С#.



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 09 июня 2014 15:45
· Личное сообщение · #11

Игрушка заинтересовала, двадцать минут быдлокодинга и awesomium , вот результат. --> Link <--

| Сообщение посчитали полезным: Alinator3500


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 09 июня 2014 15:54
· Личное сообщение · #12

Ух, сколько инфы! Спасибо за поддержку! Теперь давайте по-порядку разбираться.

LinXP пишет:
ARCHANGEL чего то текст мне сразу на глаза попался..

Странно, я видел этот запрос, но что-то как-то недосмотрел там текст. Попробую ещё раз, возможно, снифферы показывали не всё, или я как-то не так смотрел. Я так понимаю, что этот скрин из хрома сделан? Но я пробовал WireShark - там мог просто тупо не найти, ибо х.з., как там нормально искать. Ещё пробовал HttpAnalyzer, и видел там этот запрос, но не видел текста. В общем, теперь зная, что искать, буду пробовать ещё раз.

я в яве нуб, но полагаю что если после var game_text=_game_data.game_text.split(' '); добавить строку position=text.length; то этого будет вполне достаточно

Может и так, но такой способ не подходит, ибо слишком это палевно.

kampaster пишет:
Можно...
Если подчищать мусор, то будет всё пучком


Вот только как его подчищать адекватными способами? Там в текстах ещё и цифры попадаются, и как их отличить от мусора?

vovanre
Скачал этот сдк, пока читаю туторы для нубов. Но пока я не понимаю, как вам удалось? Вы бы не могли более детально описать свои "двадцать минут быдлокодинга"?

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 09 июня 2014 16:02 · Поправил: vovanre
· Личное сообщение · #13

ARCHANGEL, можно в скайп\асю? А то , что то не хочется что бы все сразу начали ботов делать.


My typing speed is 188 cpm! (~38 wpm)

My typing speed is 7470 cpm! (~1494 wpm)

На большее мой комп не способен ;D



Ранг: 46.8 (посетитель), 20thx
Активность: 0.040
Статус: Участник

Создано: 09 июня 2014 18:00
· Личное сообщение · #14

vovanre ни кто и не станет, там все равно придется разбираться.
А сделал через Элемент управления WebBrowser, тоже хороший подход.
http://professorweb.ru/my/WPF/UI_WPF/level24/24_11.php
Интересно это первый инцидент на там сайте с такой скоростью аль нет



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 09 июня 2014 18:49
· Личное сообщение · #15

Alinator3500 пишет:
Интересно это первый инцидент на там сайте с такой скоростью аль нет


Вообщем они проверяют. Обнулили мне акк. Нужно делать "человечней".


 eXeL@B —› Оффтоп —› Автоматизация повторяющихся действий для браузерного приложения

У вас должно быть 20 пунктов ранга, чтобы оставлять сообщения в этом подфоруме, но у вас только 0

   Для печати Для печати