Возникла проблема при использовании Tor с Curl

Возникла проблема при использовании Tor с Curl:

У меня есть этот скрипт:

$ch = curl_init();<br>
curl_setopt($ch, CURLOPT_URL, "http://whatismyip.org");<br>
curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1:9050");<br>
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);<br>
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br>
curl_setopt($ch, CURLOPT_VERBOSE, 0);<br>
$response = curl_exec($ch);<br>
$errno = curl_error($ch);<br>
print_r($errno);<br>

Когда я использую это, то сталкиваюсь с этой ошибкой:

Не удается завершить соединение SOCKS5 с 0.0.0.0:0. (6)

И когда я использую этот скрипт:

$proxy = "127.0.0.1";<br>
$port = "9050";<br>
$url = "http://whatismyip.org";<br>
$ch = curl_init();<br>
curl_setopt ($ch, CURLOPT_URL, $url);<br>
curl_setopt ($ch, CURLOPT_HEADER, 0);<br>
curl_setopt ($ch, CURLOPT_PROXYTYPE, 7 );<br>
curl_setopt ($ch, CURLOPT_PROXY, $proxy.':'.$port );<br>
ob_start();<br>
curl_exec ($ch);<br>
curl_close ($ch);<br>
$result = ob_get_contents();<br>
ob_end_clean();<br>
var_dump($result);<br>

столкнувшись с этой проблемой:

Tor не является HTTP-прокси

Похоже, вы настроили свой веб-браузер на использование Tor в качестве HTTP-прокси. Это не правильно: Tor является SOCKS-прокси, а не HTTP-прокси. Пожалуйста, настройте ваш клиент соответственно.
Увидеть https://www.torproject.org/documentation.html для дополнительной информации.

Если кто-нибудь знает решение для этого, пожалуйста, помогите мне.

Заранее спасибо.

1

Решение

Это код, который я использую без инцидентов:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, "http://localhost:9150/");
curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
$result = curl_exec($ch);

Единственные видимые различия, которые я вижу, это localhost vs loopback, с префиксом http на CURLOPT_PROXYи различные технические различия (многословные и т. д.). Я рекомендую установить тайм-аут, если вы собираетесь свернуть какие-либо луковые сайты, так как по моему опыту вы столкнетесь с блокировками нагрузки, которые оставляют соединение висящим.

Кроме того, убедитесь, что ваш прокси находится на правильном порту! В зависимости от того, как вы используете Tor, прокси может быть подключен к порту 9050, 9051, 9150 или 9151. Использование netstat или аналогичная утилита (в комплекте с XAMPP для меня) или Process Hacker 2 (вкладка Network), чтобы посмотреть, что находится на каком порту. Tor.exe должен быть на одном из указанных портов. Используйте это для вашего прокси.

Я знаю, что у меня были некоторые проблемы с этим в прошлом. Удачи!

РЕДАКТИРОВАТЬ: полный тестовый код, чтобы играть с:

<?php
$url = (isset($_REQUEST['url']) ? $_REQUEST['url'] : "http://msydqstlz2kzerdg.onion/search/");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, "http://localhost:9150/");
curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
$output = curl_exec($ch);
$curl_error = curl_error($ch);
curl_close($ch);

print_r($output);
print_r($curl_error);
?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]