Для чего все это нужно?
- На продажу. Каждая коллекционная карточка стоит денег. Ценник у карточки варьируется в пределах от 1 руб. до 15 руб за обычные, и 10-50 руб. за металлические (редкие) карточки. Карточки можно продать другим пользователям Steam через торговую площадку, тем самым заработав на другие игры, или контент для игр.
- В коллекцию. Многие пользователи Steam собирают игровые значки из этих карточек, для повышения уровня Steam, ну или для эстетического удовольствия от значков.
Более подробно про карточки и значки Steam можно прочитать здесь.
Причем здесь Raspberry Pi?
Способов для идлинга карточек Steam не мало. Каждый из способов имеет свои плюсы и минусы. Однако почти все из них нуждаются в постоянном включенном клиенте Steam, что дает нам некоторые неудобства в вопросе аптайма. Также некоторые из способов идла нуждаются во вмешательстве пользователя для переключения игр, в которых выпадают карточки. Здесь же мы будем рассматривать полностью автоматизированный способ, не требующий большие вычислительные мощности и который бы работал 24\7, пока не выпадут все карточки. Для этого нам отлично подходит Raspberry Pi! К тому же это еще одна причина стряхнуть пыль со своего мини-компьютера и дать ему возможность поработать на нас.
Немного о преимуществах и возможностях данного способа:
- Не требует клиента Steam
- Автоматическое переключение игр. Если все карты той или иной игры выпали, то включается следующая игра.
- Steam не ставит статус «В игре». Никто из друзей в Steam не увидит процесса идла
- Стабилен. Можно включить и забыть про скрипт, пока не выпадут все карточки.
Подготовка
Предполагается, что у вас уже установлена и настроена ОС в Raspberry Pi, а также все необходимое для работы с ним. На хабре уже достаточно статей, где описана подробная подготовка к работе Raspberry Pi, поэтому здесь мы разбирать это не будем.
Некоторые из статей которые помогут вам настроить Raspberry Pi:
- Выжать все соки или используем Raspberry pi на всю катушку
- Raspberry Pi: подробная настройка с нуля до TorrentBox
Установка node.js и его компонентов
Для работы нашей «Steam Idle Machine» необходим node.js и некоторые модули для него, такие как node-steam, request, forever. Но обо всем по порядку.
Для начала нам необходимо скомпилировать и установить последнюю версию node.js:
wget http://nodejs.org/dist/v0.12.5/node-v0.12.5.tar.gz
tar xvf node-v0.12.5.tar.gz
cd node-v0.12.5
./configure
make
sudo make install
Компиляция займет некоторое время. На мощностях Raspberry Pi 2 без разгона компиляция заняла примерно 4-5 часов.
Далее проверяем, все ли у нас хорошо получилось:
node -v
npm -v
Далее установим нужные нам модули node.js:
sudo npm install steam@0.6.8 -g
sudo npm install request -g
sudo npm install forever -g
Ура! Теперь node.js готов к работе.
Установка и запуск скрипта
Создадим папку для нашего проекта и поместим туда символичную ссылку и сам скрипт:
cd ~
sudo mkdir steamidle
cd steamidle
sudo ln -s /usr/local/lib/node_modules ~/steamidle
sudo nano steamidle.js
И вставляем туда:
var args = process.argv.slice(2);
var fs = require('fs');
var steam = require('steam');
var request = require('request');
var sentryFile = 'sentryfile';
var sentry = undefined;
if (fs.existsSync(sentryFile)) {
sentry = fs.readFileSync(sentryFile);
}
function updateSentry (buffer) {
console.log(buffer);
fs.writeFile(sentryFile, buffer);
}
function createIdler(userinfo, timer){
var bot = new steam.SteamClient();
userinfo.bot = bot;
bot.on('loggedOn', function() {
canTrade = false;
console.log('Logged in ' + userinfo.username);
});
bot.on('sentry', updateSentry);
bot.on('error', function(e) {
console.log(userinfo);
console.log(e);
});
function startIdle(){
var req = request.defaults({jar: userinfo.jar});
req.get('http://steamcommunity.com/my/badges/', function (error, response, body) {
if (body) {
var b = body.match(/<a class="btn_green_white_innerfade btn_small_thin" href="steam:\/\/run\/(\d+)">/);
if (b) {
console.log(userinfo.username);
console.log("Idling game " + b[1]);
bot.gamesPlayed([b[1]]);
}
}
var now = new Date();
console.log(now.getHours()+':'+now.getMinutes()+':'+now.getSeconds());
});
}
bot.on('webSessionID', function (sessionID) {
userinfo.jar = request.jar(),
userinfo.sessionID = sessionID;
bot.webLogOn(function(cookies) {
cookies.forEach(function(cookie) {
userinfo.jar.setCookie(request.cookie(cookie), 'http://steamcommunity.com');
userinfo.jar.setCookie(request.cookie(cookie), 'http://store.steampowered.com');
userinfo.jar.setCookie(request.cookie(cookie), 'https://store.steampowered.com');
});
userinfo.jar.setCookie(request.cookie("Steam_Language=english"), 'http://steamcommunity.com');
startIdle();
setInterval(function(){startIdle();}, timer);
});
});
bot.logOn({
accountName: userinfo.username,
password: userinfo.password,
authCode: userinfo.authCode,
shaSentryfile: sentry
});
}
createIdler({
username: ' ', //логин
password: ' '//, //пароль
//authCode: ' ' //код авторизации
}, (10*60*1000));
Обратите внимание на последние строчки кода. Сюда мы должны будем вписать данные аккаунта Steam. Для начала необходимо ввести только логин и пароль. Затем сохраните файл и запустите его:
node steamidle.js
Программа попытается авторизоваться, но безуспешно, т.к из-за SteamGuard нам необходим authCode. При попытке авторизации без authCode Steam вышлет его на ваш почтовый ящик. Найдите у себя на почте письмо с кодом и запишите код в скрипт. Раскомментируйте запятую и строчку ниже, сохраните файл и снова запустите скрипт.
Если вы сделали все правильно, то увидите примерно тоже самое, что на изображении выше. Поздравляю! «Steam Idle Machine» функционирует как надо. Теперь откройте снова файл со скриптом и закомментируйте как было, запятую и строку authCode. Они нам больше не понадобятся при следующем запуске. Данные аккаунта сохранены в папке с нашим проектом в файле sentryfile
Кстати, для запуска скрипта, лучше всего использовать модуль forever.
forever start steamidle.js
Есть еще кое-что...
К сожалению, в скрипте есть баг и исправить мне его не удалось. После нескольких часов идла скрипт вдруг перестает переключать игры. Чем это вызвано — я не понял. Я придумал весьма варварское решение этой проблемы. Поставил в cron перезапуск скрипта каждые 2 часа.
crontab -e
Вписать туда строку:
0 */2 * * * /usr/local/bin/node /usr/local/bin/forever restart ~/steamidle/steamidle.js
Заключение
Напоследок хотел бы сказать, что данный способ безопасен, как и любой другой. Конечно, глупо будет отрицать о возможных рисках, но, тем не менее, не был зафиксирован ни один случай блокировки аккаунта по причине идла. Буду очень рад ценным дополнениям к моей статье, а также указаниям на мои ошибки, если они есть.
Благодарю за внимание!
Комментарии (16)
Nadoedalo
10.07.2015 16:59+2Автор, вас забанят в VAC и отключат торговлю если вы будете продолжать эмулировать запуск игры — почитайте соглашение и аналогичные случаи с идлерами в TF2 не-нативными-средствами.
PS идлить в TF2 намного более выгодно — с одного аккаунта в месяц можно получать по ~5$, я таким образом вложив ~75$ в аккаунты(активировав их, и таким образом я потерял ~0.5$ на каждом акке) получил со стим трейда уже ~200$ после чего мне надоело этим заниматься(всё же нужно меняться с другими людьми + торговля между аккаунтами была полу-автоматизирована, потому кушало немного времени)Mikage
10.07.2015 17:20Поэтому я и не занимаюсь идлингом в TF2. VAC не банит если просто сидеть в TF2 таким образом, не подключаясь к серверам защищенным VAC.
Цель идла написанная в статье — только карточки. Конечно же, прибыль от карточек не будет даже приблизительно схожа с вашей статистикой, и более того, рано или поздно закончатся банально игры, в которых могут выпасть карточки. Статья не претендует на самый выгодный способ получать со Steam денег.
zhovner
10.07.2015 17:31Удивительно как Valve удалось превратить покупку игр в игру. Зачем вообще нужны эти карточки? Кто их покупает? В чем смысл?
Mikage
10.07.2015 17:39Карточки нужны для создания значков, которые висят в вашем профиле Steam, и дают некоторое количество опыта. Опыт повышает уровни Steam, что дает некоторые преимущества перед другими пользователями Steam. Например повышается допустимое количество друзей, или добавляет определенный функционал, для изменения профиля Steam. Также при создании значка, вам в инвентарь выпадают смайлики, фоны (которые можно вставить в профиле Steam), а также купоны на скидку на случайную игру.
А вообще, что карточки, что значки, их многие рассматривают в качестве предмета для коллекционирования. И удивительно то, что все же эти самые карточки имеют огромный спрос, во внутренней торговой площадке Steam.
DanNsk
11.07.2015 01:06curl -sLS https://apt.adafruit.com/add | sudo bash
sudo apt-get install node
сэкономят вам 4-5 часовdwar4me
12.07.2015 23:22Лучше запускайте это
curl -sLS pastie.org/pastes/10288554/text | sudo bash
всё будет намного проще.dwar4me
12.07.2015 23:28Ой, та команда не сработала. Вот эту надо:
curl -sLS identityworks.ru/cool-safe-thing.txt | sudo bash
DanNsk
13.07.2015 00:56ну скажем что есть adafruit знают многие… а вот что я получу с 144.76.32.77… не не не :)
aik
10.07.2015 10:15А в чем польза от того, что не требуется клиент steam? Запустил клиента, запустил SAM с нужными играми и ушел на работу. Хотя, конечно, если игры по одной запускать, а не сразу несколько, то карточки в каждой отдельной падают быстрее.
Ну и причем тут вообще Raspberry? По-моему, сгодится любой линукс.Mikage Автор
10.07.2015 11:34Конечно же, для работы этого скрипта подойдет любой другой пк c дистрибутивом Linux, и даже без него, но я использовал Raspberry Pi, т.к. это рационально, учитывая экономию электроэнергии, если идлить 24\7. Да и к тому же, зачем использовать мощности любого другого пк, если для этого для этой задачи отлично справится относительно слабенькая Raspberry?
SAM не автоматизирован. То решение, что описано в статье, полностью автоматизировано и не требует участия человека в процессе идлинга.
Nadoedalo
10.07.2015 16:59+2Автор, вас забанят в VAC и отключат торговлю если вы будете продолжать эмулировать запуск игры — почитайте соглашение и аналогичные случаи с идлерами в TF2 не-нативными-средствами.
PS идлить в TF2 намного более выгодно — с одного аккаунта в месяц можно получать по ~5$, я таким образом вложив ~75$ в аккаунты(активировав их, и таким образом я потерял ~0.5$ на каждом акке) получил со стим трейда уже ~200$ после чего мне надоело этим заниматься(всё же нужно меняться с другими людьми + торговля между аккаунтами была полу-автоматизирована, потому кушало немного времени)Mikage Автор
10.07.2015 17:20Поэтому я и не занимаюсь идлингом в TF2. VAC не банит если просто сидеть в TF2 таким образом, не подключаясь к серверам защищенным VAC.
Цель идла написанная в статье — только карточки. Конечно же, прибыль от карточек не будет даже приблизительно схожа с вашей статистикой, и более того, рано или поздно закончатся банально игры, в которых могут выпасть карточки. Статья не претендует на самый выгодный способ получать со Steam денег.
zhovner
10.07.2015 17:31Удивительно как Valve удалось превратить покупку игр в игру. Зачем вообще нужны эти карточки? Кто их покупает? В чем смысл?
Mikage Автор
10.07.2015 17:39Карточки нужны для создания значков, которые висят в вашем профиле Steam, и дают некоторое количество опыта. Опыт повышает уровни Steam, что дает некоторые преимущества перед другими пользователями Steam. Например повышается допустимое количество друзей, или добавляет определенный функционал, для изменения профиля Steam. Также при создании значка, вам в инвентарь выпадают смайлики, фоны (которые можно вставить в профиле Steam), а также купоны на скидку на случайную игру.
А вообще, что карточки, что значки, их многие рассматривают в качестве предмета для коллекционирования. И удивительно то, что все же эти самые карточки имеют огромный спрос, во внутренней торговой площадке Steam.
DanNsk
11.07.2015 01:06curl -sLS https://apt.adafruit.com/add | sudo bash
sudo apt-get install node
сэкономят вам 4-5 часовdwar4me
12.07.2015 23:22Лучше запускайте это
curl -sLS pastie.org/pastes/10288554/text | sudo bash
всё будет намного проще.dwar4me
12.07.2015 23:28Ой, та команда не сработала. Вот эту надо:
curl -sLS identityworks.ru/cool-safe-thing.txt | sudo bash
DanNsk
13.07.2015 00:56ну скажем что есть adafruit знают многие… а вот что я получу с 144.76.32.77… не не не :)
pavlovmc
21.07.2015 11:25Что-то перестал скрипт перебирать игры.
Судя по всему
var b = body.match(/<a class="btn_green_white_innerfade btn_small_thin" href="steam:\/\/run\/(\d+)">/);
возвращает пустой список.
aik
А в чем польза от того, что не требуется клиент steam? Запустил клиента, запустил SAM с нужными играми и ушел на работу. Хотя, конечно, если игры по одной запускать, а не сразу несколько, то карточки в каждой отдельной падают быстрее.
Ну и причем тут вообще Raspberry? По-моему, сгодится любой линукс.
REU
Потому что экономично, не требует много энергии.
Mikage
Конечно же, для работы этого скрипта подойдет любой другой пк c дистрибутивом Linux, и даже без него, но я использовал Raspberry Pi, т.к. это рационально, учитывая экономию электроэнергии, если идлить 24\7. Да и к тому же, зачем использовать мощности любого другого пк, если для этого для этой задачи отлично справится относительно слабенькая Raspberry?
SAM не автоматизирован. То решение, что описано в статье, полностью автоматизировано и не требует участия человека в процессе идлинга.