Получение .onion страницы на CURL

Статус
В этой теме нельзя размещать новые ответы.
и опять нет, увы
при использовании CURLPROXY_SOCKS5_HOSTNAME выводится ошибка "Tor is not an HTTP Proxy". с семеркой опять-таки работает нормально
странно, а что у тебя
PHP:
var_dump(   CURLPROXY_SOCKS5_HOSTNAME   );
покажет?
 
  • Автор темы
  • Модер.
  • #12
Разобрался:
- константу CURLPROXY_SOCKS5_HOSTNAME добавили в PHP после PHP 5.5.23 и PHP 5.6.7
- curl поддерживает эту константу после 7.18.0
- при этом в сборках php curl 7.18 доступен еще на 5.3.x

Получаются корректны оба варианта и CURLPROXY_SOCKS5_HOSTNAME и 7, но последний покроет больше версий php.
 
  • Нравится
Реакции: Nei
PHP:
$this->curl = curl_init();
        curl_setopt($this->curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
        curl_setopt($this->curl, CURLOPT_TIMEOUT, 60);
        curl_setopt($ch, CURLOPT_PROXYTYPE, 7); // ОБЯЗАТЕЛЬНЫЙ ПАРАМЕТР БЕЗ НЕГО У ТЕБЯ И НЕ РАБОТАЕТ
        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($this->curl, CURLOPT_PROXY, '127.0.0.1:9050'); // ПРОКСИ  TOR
        curl_setopt($this->curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
        curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($this->curl, CURLOPT_URL, "http://site.onion"); // САЙТ
    $contents = curl_exec($this->curl);

очень важный параметр CURLOPT_FOLLOWLOCATION - TRUE для следования любому заголовку "Location: ", отправленному сервером в своем ответе (учтите, что это происходит рекурсивно, PHP будет следовать за всеми посылаемыми заголовками "Location: ", за исключением случая, когда установлена константа CURLOPT_MAXREDIRS).
 
Последнее редактирование модератором:
юзайте HTTP прокси без указания типа:
PHP:
function get_my_url($url , $proxy = false)
{
    $ch = curl_init();
     
    if($ch === false)
    {
        die('curl рухнул');
    }
     
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
       
    if($proxy === true)
    {
        curl_setopt($ch, CURLOPT_PROXY, 'localhost:8118');
    }
     
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху