前一阵子看到新闻说海盗湾通过在网页嵌入JS代码,利用浏览网页的用户的电脑来进行挖矿。一旦用户打开该网站,浏览器便会按照脚本的指令变成一个门罗币挖矿机。这一段附加的挖矿代码通常因为大量占用CPU,使用户的计算机变得异常卡顿甚至无法正常使用。这样的网站会嵌入了Coinhive JavaScript Miner代码。该代码是基于CryptoNight挖矿算法编写,该算法可以产出CryptoNote类网络货币,如Monero(门罗币)、Dashcoin(达世币),DarkNetCoin(暗网币)等。而嵌入的这个Coinhive JavaScript Miner则仅支持门罗币的挖矿。

很多网站和企业利用Coin Hive来进行流量变现。但是Coin Hive官方网站并不赞同网站不征得用户同意就启用该脚本,利用用户的计算资源来挖矿。我们这里仅做讨论,来看下实现 JavaScript 网页挖矿的方法。

一、注册门罗币钱包,获取钱包地址

钱包下载网址:https://getmonero.org/downloads/

钱包下载后,然后双击钱包文件夹里边的 monero-wallet-gui.exe 打开钱包,选择语言、创建钱包、然后会给你一个恢复的代码(恢复钱包的重要信息)、然后设置密码就可以正式进入钱包了。当钱包第一次运行时,会进行同步。时间会稍微长点。但是重点不是这个,重点是我们需要钱包的地址,待会挖矿的时候需要输入。

一开始会进行同步,这里先让它同步着,我们先不用管,点击左侧的收款/receive,取得我们的收款地址

二、注册挖矿平台

注册链接:https://coinhive.com/account/signup

挖矿平台注册好后,在 setting 中的 Payment 设置好刚才我们得到的钱包收款地址。另外可以设置下最低支付额度。每次更改 Payments 选项需要输入你的密码。

然后设置API Keys,记好你的 Public Key,待会要放到 JS 代码中。

三、获取挖矿代码

获取代码地址:https://coinhive.com/documentation/miner

最终生成的JS代码如下:

1
2
3
4
5
6
7
8
9
10
<script src="https://authedmine.com/lib/authedmine.min.js"></script>
<script>
    var miner = new CoinHive.Anonymous('gUA9gHLBkVURSU7z2Z4W1CRwp9Zan9At', {throttle: 0.3});

    // Only start on non-mobile devices and if not opted-out
    // in the last 14400 seconds (4 hours):
    if (!miner.isMobile() && !miner.didOptOut(14400)) {
        miner.start();
    }
</script>

当然如果你能稍微看懂点英文的话,可以修改代码,比如在手机上不挖矿、

这里 Forece 做了个测试页面,你可以来试试,看看 CPU 是不是 100% 占用了呢?

测试页面:
JS挖矿测试页面

四、CPU 运行效果

打开页面后,验证下是否正常挖矿,一般 CPU 100% 就代表正常挖矿了,这时候你可以去Dashboard上就能查看挖矿进展。
访问地址: https://coinhive.com/dashboard

附:调节 Javascript 代码,降低 CPU 使用率

自从出现 bitcoin 之后,挖矿的方法就开始越来越多样化,从单纯的CPU挖矿、再到GPU挖矿、再出矿机、现在连网页都可以挖矿了。果然人的创造力是无限的!顺便说下,刚才查了下门罗币、已经200刀了。