Я являюсь автором библиотеки 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, чтобы было легче обнаруживать сбои и извлекать заголовки и данные ответов из ваших запросов.
Если у вас есть вопросы или предложения, не стесняйтесь спрашивать.