Подключение к API через Tor - PullRequest
0 голосов
/ 08 июня 2018

Итак, я разрабатываю сайт, который должен периодически обновлять значение биткойнов, используя nginx и php.Я хочу подключиться к API с помощью Tor, чтобы IP моего сайта не передавался и не передавался.Я новичок в использовании tor и раньше использовал только браузер, а раньше не использовал SOCKS.Я пытаюсь научить себя, но большинство учебных пособий, которые я нахожу в Google, используют VPS для работы в качестве VPN.Я занимаюсь разработкой сайта на своем локальном хосте и хочу иметь возможность протестировать его с моей машины.Как бы я использовал PHP и настроил свое приложение для подключения к API, таким как blockchain.info, используя подключение Tor?

1 Ответ

0 голосов
/ 09 июня 2018

Я являюсь автором библиотеки PHP под названием TorUtils , которая включает класс-оболочку curl , который обеспечивает запросы, проходящие через прокси-сервер SOCKS Tor, и не пропускает запросы IP или DNS, сделанные через него извнеТор.Я бы посоветовал вам взглянуть на это.

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

После запуска и запуска Tor по умолчанию он будет прослушивать соединения SOCKS через порт 9050.код предполагает, что Tor работает на localhost и прослушивает SOCKS на 9050.

Для начала установите TorUtils в свой проект с помощью composer:

composer require dapphp/torutils

Использовать его так же просто, как:

<?php

require_once 'vendor/autoload.php';

// configure a TorCurlWrapper to proxy through Tor at 127.0.0.1:9050
$tch = new \Dapphp\TorUtils\TorCurlWrapper('127.0.0.1', 9050);

// set curl options as usual
$tch->setopt(CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0');
$tch->setopt(CURLOPT_FOLLOWLOCATION, 1);

try {
    // issue a GET request; throws an \Exception if the request fails for any reason
    $tch->httpGet('https://blockchain.info/ticker');

    // get the response body from the last request
    $response = $tch->getResponseBody();
    $response = $tch->getResponseBody();
    $data     = json_decode($response, true);

    echo "1 BTC equals {$data['USD']['15m']} USD\n";

    $tch->httpGet('https://apiv2.bitcoinaverage.com/indices/global/ticker/BTCUSD');
    $response = $tch->getResponseBody();
    $data     = json_decode($response, true);

    echo "BitcoinAverage ask rate is 1 BTC = {$data['ask']}\n";


} catch (\Exception $ex) {
    echo sprintf("Request to %s failed with error %d: %s\n",
        $tch->getInfo()['url'],
        $ex->getCode(),
        $ex->getMessage());

}

Просмотрите соответствующие примеры здесь и здесь .

Этот класс делает немного больше, но гарантирует, что вы безопасно используете curl через локальный Torэкземпляр, и это гарантирует, что ваши версии curl и PHP достаточно высоки, чтобы вы могли разрешать DNS-имена через Tor, и делать запросы неуспешными, если они не проходят через прокси Tor.Кроме того, он немного абстрагирует запросы и ответы от curl, чтобы было легче обнаруживать сбои и извлекать заголовки и данные ответов из ваших запросов.

Если у вас есть вопросы или предложения, не стесняйтесь спрашивать.

...