Думаю, что многие из Вас задумывались о автоматизации каких-либо процессов. Ведь заниматься «рутиной» работой мало кому интересно.
Я попробовал написать автоматическую покупку предметов на торговой площадке Steam на чистом JavaScript, и поделиться этим довольно интересным опытом с Фрипасовцами Исполнение пользовательского JavaScript. Для исполнения пользовательского JavaScript я использовал расширение для браузера Mozilla Firefox под названием «Greasemonkey». Аналогичное расширение существует для браузера Google Chrome — «TamperMonkey», и, заметил Beta-версию для Opera.
После установки расширения, мы сможем исполнить JavaScript-код на страницах веб-сайтов.
Для начала, создадим новый скрипт, нажав на пункт «Создать скрипт...» и заполнив необходимые поля.
Мы сделаем полную эмуляцию поведения человека, дабы, в дальнейшем, избежать каких-либо проблем.
Напишем и разберем следующий код: // ==UserScript==// @author Evansive// @name Steam market autobuy bot// @namespace Evansive// @description Покупает вещи в Steam-маркете// @version 1// @grant none// ==/UserScript==// Массив с предметами. item_id — название предмета, указанное в URL на торговой площадке, price: цена в разменных единицах, то есть, например, в копейках или центах.var items = [ {item_id: 'SSG%2008%20|%20Lichen%20Dashed%20(Field-Tested)', price: '210'}, {item_id: 'SG%20553%20|%20Tornado%20(Field-Tested)', price: '150'}, {item_id: 'Winter%20Offensive%20Weapon%20Case', price: '2700'}, {item_id: 'Operation%20Bravo%20Case', price: '100'}, {item_id: 'M4A4%20|%20Faded%20Zebra%20(Field-Tested)', price: '100'}, {item_id: 'CS:GO%20Weapon%20Case', price: '200'} ], // Массив с возможными ошибками. messages = { logged: "AutoBuy: Вы не авторизованы на сайте." } ;
// Проверяем, авторизован ли пользователь на сайте Steam.if(!g_bLoggedIn) { el = document.createElement("div"); el.setAttribute("style", "background-color: #fff;"); el.innerHTML = "<b><font color='#eb0000'>" + messages.logged + "</font><b>"; // После шапки выводим напоминание, что необходимо авторизоваться на сайте перед покупкой. insertAfter(document.getElementById("global_header"), el);}
// Получаем название предмета из ссылки, которую открыл пользователь.regexp = new RegExp("listings\/[0-9]+\/(.*)");var match = location.href.match(regexp);if(match) { // В случае, если открыл ссылку на предмет из торговой площадки. // В случае, если Steam вывел какую-либо ошибку в процессе загрузки цен на предметы, перезагрузим страницу. if(document.getElementsByClassName('market_listing_table_message').length) { console.log("Проблема с загрузкой предметов."); location.reload(); return false; }
var market_price = document.getElementsByClassName('market_listing_price market_listing_price_with_fee')[0].innerHTML, // Получаем цену на предмет в строковом формате. marketPrice = market_price.replace(/[A-Za-zА-Яа-я.]+/, market_price); // Убираем обозначение денежной единицы из цены. ;
marketPrice = parseFloat(marketPrice) * 100; // Преобразуем денежную единицу в разменную. (Копейка, цент и так далее) for(var i = 0; i < items.length; i++) { if(match[1] == items.item_id) { // В случае, если название предмета, который мы в данный момент смотрим, совпадает с предметом из массива. if(marketPrice <= items.price) { // Если цена меньше той, что указана в массиве для данного предмета. document.getElementsByClassName('item_market_action_button_green')[0].click(); // Нажимаем кнопку покупки. document.getElementById('market_buynow_dialog_accept_ssa').checked = true; // Ставим галочку и принимаем условия пользовательского соглашения. window.setInterval(function(){ document.getElementById('market_buynow_dialog_purchase').getElementsByTagName('span')[0].click(); // Покупаем предмет. window.setInterval(function() { window.location = window.location.href.substring(0, window.location.href.indexOf('#')); // Успех, перезагружаем страницу. }, 5000); }, 1000); console.log("Отлично, покупаем предмет."); break; } else { window.setInterval(function() { window.location = window.location.href.substring(0, window.location.href.indexOf('#')); }, 3000); console.log("Нет предметов для покупки."); break; } } } }
function insertAfter(referenceNode, newNode) { referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); }
Сразу скажу, что для работы скрипта, необходимо открыть вкладку с предметом из массива в браузере, после чего запустить расширение «Greasemonkey». Соответственно, таким образом, мы можем автоматизировать весь процесс работы Steam-аукциона, сделав, например, автоматическую продажу предметов по определенным ценам и требованиям.
Надеюсь, что вы сможете сделать что-то увлекательное и поделитесь своим опытом .Всем удачи всем пока ))))
Сообщение отредактировал Ананас - Воскресенье, 26.01.2014, 13:53
Может есть у кого скрипт для сайта с рулеткой?. Смысл такой посетитель нажимает на кнопку и ему рандомно выпадает скидка на товар представленный на сайте.