Вызов JSON-RPC для ошибки bitcoind, 403 не удалось открыть поток

Я пытаюсь сделать json-вызов на VPS-сервер, на котором размещен мой кошелек, и он не работает со следующим сообщением об ошибке:

Warning:  fopen(http://user:pass@ip:port): failed to open stream: HTTP request           failed! HTTP/1.1 403 Forbidden
in C:\Users\Owner\Desktop\USBWebServer\root\php\jsonRPCClient.php on line 132

Fatal error:  Uncaught exception 'Exception' with message 'Unable to connect to     http://user:pass@ip:port' in     C:\Users\Owner\Desktop\USBWebServer\root\php\jsonRPCClient.php:140
Stack trace:
#0 C:\Users\Owner\Desktop\USBWebServer\root\php\testrpc.php(15): jsonRPCClient- >__call('getinfo', Array)
#1 C:\Users\Owner\Desktop\USBWebServer\root\php\testrpc.php(15): jsonRPCClient-   >getinfo()
#2 C:\Users\Owner\Desktop\USBWebServer\root\index.php(154): include('C:\Users\Owner\...')
#3 {main}
thrown in C:\Users\Owner\Desktop\USBWebServer\root\php\jsonRPCClient.php on line 140 

я получил свой файл JsonRPCClinet.php отсюда http://jsonrpcphp.org/code.php?file=jsonRPCClient

мой файл bitcoin.conf выглядит следующим образом:

server=1 
daemon=1
listen=1
rpcuser=user
rpcpassword=pass    
rpctimeout=16
rpcallowip=0.0.0.0
rpcport=8332

я знаю, что 0.0.0.0 опасен, я изменю его, как только все заработает

я вызываю json-rpc, используя этот php-код

<?php
  require_once 'jsonRPCClient.php';

  /* Configuration variables for the JSON-RPC server */
    $rpc_host = 'ip';
    $rpc_port = '8332';
    $rpc_user = 'user';
    $rpc_pass = 'pass';

    $btc = new jsonRPCClient('http://' . $rpc_user . ':' . $rpc_pass . '@' . $rpc_host . ':' . $rpc_port);

  echo "<pre>\n";
  print_r($btc->getinfo()); echo "\n";
  echo "Received: ".$btc->getreceivedbylabel("BEkpbpYLpwacchSQFRCL7ZSWw3VwB8k7WN")."\n";
  echo "</pre>";
?> 

дополнительно я открыл порт 8332 на своем VPS

может ли кто-нибудь увидеть причину возникновения этой ошибки, я был бы очень признателен за помощь

Возможно, ваш хост блокирует исходящие запросы на «нестандартные» порты, например 8332? Попробуйте 8080 или 443, если они не зарезервированы другим сервисом. Также попробуйте rpcallowip=*вместо 0.0.0.0.
@GeorgeKimionis Это не так - он не работает с ошибкой 403, что означает, что ему удалось подключиться
@GeorgeKimionis К сожалению, я должен уточнить. Я имею в виду, что первое предложение не так. Спрашивающий обязательно должен попробовать второй.
@NickODell, мы действительно не знаем, подключен ли он к bitcoind, это может быть прокси или даже брандмауэр, возвращающий это 403, если пакеты отфильтрованы.

Ответы (1)

Я только что прочитал код, который обрабатывает rpcallowip , и могу сказать, что rpcallowip=0.0.0.0это не сработает.

Если вы хотите разрешить со всех адресов, вы должны использовать

rpcallowip=0.0.0.0/0

(Как ни странно, я не могу найти код , который обрабатывает подстановочные знаки. Я собираюсь открыть проблему на github по этому поводу. Похоже, что либо документация, либо код неверны.)

Редактировать: оказывается, что поддержка подстановочных знаков была удалена.

поэтому я попробовал 0.0.0.0/0 и * и получил точно такую ​​же ошибку, я также попробовал случайный IP-адрес, и я получил другую ошибку (не 403, но все еще не мог подключиться)? это как-то помогает?
Ха, странно. Попробуйте установить $btc->debug = trueв своей программе; посмотрите, не появится ли что-нибудь просветляющее.
если я помещу его после этой строки: $btc = new jsonRPCClient('ht..., это даст мне следующее: "Неустранимая ошибка: невозможно получить доступ к частной собственности jsonRPCClient::$debug в C:\Users\Owner\Desktop\USBWebServer\root \php\testrpc.php в строке 11 "Если я изменю отладку на true в файле jsonRPCCLient.php, появится та же ошибка, что и в исходном сообщении :(
@cfxlegion Ах, я неправильно прочитал код. Ты должен сделатьnew jsonRPCClient("http://...", true)
я понял, pastebin.com/GGN9WpSK
@cfxlegion Под «http://...» я имел в виду ваш фактический URL-адрес.
я сделал, это именно то, что мне выдала ошибка, лол, для pastebin я заменил только «пользователь», «пароль» и «ip»
Ставьте цитату перед запятой, а не после истины. См. пример, который я привел выше.
@cfxlegion Лучше не публиковать такую ​​информацию :). Итак, это определенно ошибка, связанная с rpcallowip, и опубликованный мной переключатель конфигурации должен был ее исправить. Вы перезапускали биткойн-клиент после изменения настроек конфигурации?
спасибо за внимание, не заметил, что я его не удалял :) хорошо, так что вы правы, это похоже на что-то вроде rpcallowip, я просто добавил общедоступный IP-адрес своих компьютеров в список разрешенных, и я получил результат для "getinfo" , также есть некоторые ошибки, но я плохо разбираюсь, но это также означает, что ни "0.0.0.0/0", ни "0.0.0.0", ни "*" не сделали того, что должны были сделать. хм
очень важная вещь легко пропустила часы, потраченные
Спасибо! Я уже использовал это свойство, но по какой-то причине ничего не работало с моим IP-адресом ipv6, пока не было установлено это!