我正在尝试使用electrum rpc,它给了我身份验证错误。我已尝试通过Linux bash上的基本身份验证和通过php进行用户传递,但不是有效。
我的php代码在plectrum漏洞升级之前工作正常。我也尝试过对bash的卷曲,但我得到同样的错误
Error code explanation: 401 - No permission -- see authorization schemes.
我试过了
curl --data-binary '{"id":"curltext","method":"listaddresses","params":{"funded":true}}' http://test:abc@127.0.0.1:7777
和
curl --data-binary '{"id":"curltext","method":"listaddresses","params":{"funded":true}}' http://127.0.0.1:7777
和
curl -utest http://127.0.0.1:7777
但是电子服务器从不接受任何身份验证。
我也尝试过禁用rpc身份验证,但我仍然遇到同样的错误
答案 0 :(得分:0)
您必须使用相应的curl参数 basic authentication 。
引用手册的相关部分:
6.1基本身份验证
HTTP身份验证能够告诉服务器您的用户名和密码,以便它可以验证您是否可以执行您正在执行的请求。 HTTP中使用的基本身份验证(默认情况下是curl使用的类型)是 plain text ,这意味着它只会略微混淆地发送用户名和密码,但仍然完全可读任何人嗅探你和远程服务器之间的网络。
告诉curl使用用户和密码进行身份验证:
curl --user name:password http://www.example.com
所以,在终端中,你的命令应该有点像这样:
curl --user RPCusername:RPCpassword http://127.0.0.1:7777 …
并且(作为奖励)在PHP中,它看起来像这样:
<?php
$RPCusername = 'test';
$RPCpassword = 'abc';
$somefundedBTCaddress = '1FeexV6bAHb8ybZjqQMjJrcCrHGW9sb6uF';
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $RPCusername.':'.$RPCpassword);
curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1:7777');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"id":"curltext","method":"getaddressbalance","params":{"address":"'.$somefundedBTCaddress.'"}}');
curl_setopt($ch, CURLOPT_POST, 1);
$headers = array();
$headers[] = "Content-Type: application/x-www-form-urlencoded";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch))
{
echo 'Error:'.curl_error($ch).PHP_EOL;
}
else
{
$result =json_decode($result,true);
echo($result['result']['confirmed'].PHP_EOL);
echo($result['result']['unconfirmed'].PHP_EOL);
}
curl_close ($ch);
exit();
答案 1 :(得分:0)
您还可以使用其他传递用户名和密码的模式进行卷曲,例如:
curl --data-binary '{"params": {"amount": 0.0021651117760957575, "expiration": 1212}, "method": "addrequest", "id": "c6cf406e-0c4b-4eb7-b3d2-1712a4d3a553"}' http://user:LMt2FDyG-c543kc23H-NA==@10.78.1.1:7049