Показаны сообщения с ярлыком автоматизация. Показать все сообщения
Показаны сообщения с ярлыком автоматизация. Показать все сообщения

7 июля 2018 г.

Автоматизация фарминга в Steam во время летней распродажи

Сначала я хотел написать короткую заметку про то, как облагородить эмулятор консоли в Windows 10, но потом понял, что контекст будет намного интереснее.
Как вы знаете, совсем недавно в сервисе Steam отгремела традиционная летняя распродажа. Во время каждой такой распродажи корпорация выпускает простенькую (я бы сказал примитивную) игру в которой можно получить значки, предметы инвентаря и даже выиграть бесплатно некоторые игрушки. Не сказать, что меня прям сильно привлёк призрачный шанс получить нахаляву дешёвую игру, но меня захватил процесс автоматизации. Оказывается, корпорация Valve никак не наказывает игроков, которые используют скрипты автоматизации для игр, а даже поощряет! Код игры (в этот раз это была стрелялка про "Стимопланетян") открыт, имеется доступ к API - садись и пиши своего бота на здоровье на твоём любимом языке программирования.
Boss battle
И энтузиасты, конечно же, написали ботов в первый день запуска, собрались в специальной теме на Reddit, обсудили наиболее эффективную стратегию, запустили сторонние сервисы трекинга "свободных планет", рассчитали шанс на выпадение бесплатной игры (он крайне мал и есть большое подозрение, что читерам с ботами немного обломится)... В общем, это было крайне интересно.
Работа скрипта на Javascript в консоли. Скрипт от Meepen.
Один из наиболее популярных и продвинутых скриптов был написан на PHP и портирован на Python (им я и пользовался большую часть времени). Второй по популярности скрипт был написан на Javascript и мог работать либо через браузер Chrome, либо посредство установленной в системе Node.js (так как я в свободное время пытаюсь изучать этот "язык программирования будущего", то node.js у меня была установлена, так же как и Python).
Работает 4 скрипта Salien-Cheat
Меня поразило, что работающие скрипты крайне мало использовали процессорные ресурсы, так что некоторые умельцы запускали скрипт на Python даже на собственных телефонах на Android и крутили круглосуточно без всяких проблем! Батарейка теряла лишь несколько процентов заряда, а расход интернет-трафика был так мал, что можно было им пренебречь. Интересная штука получается: можно носить у себя в кармане мини-сервер на Python, который будет круглосуточно выполнять какую-то работу для вас. Многие люди запускали скрипт для нескольких своих Steam-аккаунтов (зачем им столько?). Один энтузиаст запустил скрипт на своём мини-сервере на Raspberry Pi. Само собой для работы скриптов не требовался никакой запущенный клиент Steam или браузер - Steam узнавал пользователя через специальный секретный токен. Особо ушлые товарищи пытались использовать для запуска фармящих скриптов бесплатные облачные хостинги  типа Heroku, но владельцам этих хостингов это ожидаемо не понравилось и таких "фермеров" всех забанили.
Работа всех скриптов проходила в консоли и мне нравится, что к 2018 году Microsoft поняла, что неплохо бы её облагородить. К сожалению, до крутости терминалов Linux командной строке Windows довольно далеко, но зато она худо бедно поддерживает вывод цвета, полупрозрачность из коробки, смену кодовой страницы и прочие вещи. Если кому-то стандартной функциональности мало, то имеются бесплатные эмуляторы консоли типа ConEmu или Cmder, которые расширяют эти возможности и делают работу ещё более удобной, почти как в Linux.
По завершению распродажи я получил прокаченного до 6 ранга и 20 уровня "инопланетянина" (максимальный был 25 уровень и сами понимаете, без скриптов его выкачать до такого уровня человеку невозможно), кучу карточек из которых слепил значок 7 уровня (лишние продал и даже заработал) и массу новых знаний и положительных эмоций. Через год будет  новая распродажа, новая игра и новые скрипты, а умение программировать ещё не раз вам пригодится в жизни: например один парень написал простого бота для мониторинга билетов на чемпионат мира по футболу в своём городе.

1 мая 2011 г.

Автоматизация

На работе столкнулся с заданием, которое заключалось в вводе данных в базу через специальный (убогий) клиент. Несмотря на то что отдел информационных технологий работает на другом этаже, а не на Марсе, как можно было подумать наблюдая результаты их работы, делать свою работу они не собирались. У меня были "сырые" данные, я мог их предоставить в любом виде (текст, csv, xml), но мне никто не собирался помогать. Сказано вводить через "специальную программу", значит через нее родимую, а все эти базы данных это не для вас, простых пользователей.
Вот так я столкнулся с задачей по автоматизации своего труда. Работа инженера предполагает творческую составляющую, она подразумевает ответственность человека за то, что он делает. Мыслительный процесс и результаты обычно трудно автоматизировать, но и в своей работе я сталкивался с большим количеств рутиных задач, которые утомляли своим однообразием и требовали совсем немного вмешательства. В первую очередь это составление отчетов, заказов - с этим справляется Excel и VBA (как бы я его не ругал за непродуманность, некоторые написанные программы исправно работают несколько лет, облегчая мой труд).
В данном случае работа оказалось слишком примитивной. Для начала я её попробовал выполнить в ручном режиме: создал xls-документ с данными необходимыми для ввода, скопировал одну строчку, перешел в окно программы, ввел, выделил другую ввел, закончил ввод. Я замерил время выполнения данной работы - получилось в среднем 45 секунд на ввод. Выглядело все очень уныло, попытка повторить все это несколько сотен раз могла привести к непоправимым изменениям в моем головном мозге.
"Это работа для компьютера, а не для человека!" - сказал я себе и начал искать решение. Далеко я ходить (в интернет) не стал, а решил попробовать проверенное решение, о котором я слышал много лет назад. Это оказалась программа для автоматизации под названием xstarter.
А сейчас, я в свойственной для себя манере, напишу почему мне не понравилась данная программа и почему я не буду ей пользоваться. Забегая вперед скажу, что даже не смотря на все минусы все проблемы я решил и организовал автоматический ввод данных. В работе я столкнулся со следующими препятствиями:
  • при записи макроса информационное окно перегораживает элементы окна, в частности это бесполезное напоминание загородило мне скроллбар;
  • при работе программы возникают всплывающие окна, которые опять же могут загораживать элементы интерфейса
  • невозможно никак ускорить работу макроса: если вы медленно возили мышкой - ровно с такой же скоростью будет исполняться макрос
  • самый главный недостаток: нет никакой возможности экстренно прервать выполнение скрипта!
  • кроме того программа периодически глючила, загружала процессор на полную мощность, да и документация мне не понравилась. 
Хотя у программы есть много плюсов:
  • она очень простая
  • для русскоязычных пользователей она бесплатна
Благодаря программе xstarter спустя 30 минут я смог написать скрипт, который повторял мои действия. Благодаря поддержке переменных в программе, я смог организовать цикл и это избавило меня от необходимости нажимать на кнопку запуска.
Работая с программами подобного рода трудно быть уверенным в правильности работы, ведь немножко сдвинутое окно и все ваши макросы нажимают и вводят данные не туда куда нужно! Именно поэтому возможность прервать скрипт меня очень расстроила.
Возможно в следующий раз, когда возникнет подобная проблема, я использую альтернативу. Например продвинутый макро-рекордер autoclickextreme или даже проверенный временем AutoIt (про программирование в котором книжки пишут).