Я намагаюся підключитися до Tor прихованої служби за допомогою наступного PHP-коду:
$url = 'http://jhiwjjlqpyawmpjx.onion/'
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, "http://127.0.0.1:9050/");
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
$output = curl_exec($ch);
$curl_error = curl_error($ch);
curl_close($ch);
print_r($output);
print_r($curl_error);
Коли я запускаю його, я отримую таку помилку:
Не вдалося вирішити ім'я хоста
Однак, коли я запускаю таку команду з мого командного рядка в Ubuntu:
curl -v --socks5-hostname localhost:9050 http://jhiwjjlqpyawmpjx.onion
Я отримую відповідь, як очікувалося
Документації PHP CURL говорять про це:
--socks5-hostname
Use the specified SOCKS5 proxy (and let the proxy resolve the host name).
Я вважаю, що причина роботи з командного рядка полягає в тому, що Tor (проксі) вирішує ім'я хоста .onion, яке він розпізнає. Під час використання коду PHP вище, я здогадуюсь, що cURL або PHP намагаються вирішити ім'я хоста .onion і не розпізнає його. Я шукав спосіб сказати cURL / PHP, щоб дозволити проксі вирішити ім'я хоста, але я не можу знайти спосіб.
Існує дуже схоже запитання щодо переповнення стека, запит CURL з використанням проксі socks5 не працює при використанні PHP, але він працює через командний рядок .
forward-socks5 / localhost:9150 .