Невозможно получить HTML-ссылки с CURL

0

Я пытаюсь получить ссылки с веб-сайта. Когда я пытаюсь подключиться через терминал, я получаю это сообщение, вам нужно включить поддержку JavaScript и куки в браузере, чтобы посетить этот сайт. Я пробовал все разные коды здесь, в stackoverflow и во всем Google. Никто не работает так, как мне хотелось бы. Никто из них не получает никаких данных с этого веб-сайта, с которых я пытаюсь получить данные. Другие сайты работают.

    <?php

function get_url( $url,  $javascript_loop = 0, $timeout = 5 )
{
    $url = str_replace( "&amp;", "&", urldecode(trim($url)) );

    $cookie = tempnam ("/tmp", "CURLCOOKIE");
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt( $ch, CURLOPT_ENCODING, "" );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );    # required for https urls
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
    curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
    curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
    $content = curl_exec( $ch );
    $response = curl_getinfo( $ch );
    if(curl_exec($ch) === false)
    {
        echo 'Curl error: ' . curl_error($ch);
    }
    curl_close ( $ch );

    if ($response['http_code'] == 301 || $response['http_code'] == 302)
    {
        ini_set("user_agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");

        if ( $headers = get_headers($response['url']) )
        {
            foreach( $headers as $value )
            {
                if ( substr( strtolower($value), 0, 9 ) == "location:" )
                    return get_url( trim( substr( $value, 9, strlen($value) ) ) );
            }
        }
    }

    if (    ( preg_match("/>[[:space:]]+window\.location\.replace\('(.*)'\)/i", $content, $value) || preg_match("/>[[:space:]]+window\.location\=\"(.*)\"/i", $content, $value) ) &&
            $javascript_loop < 5
    )
    {
        return get_url( $value[1], $javascript_loop+1 );
    }
    else
    {
        return array( $content, $response );
    }
}
$test = get_url('http://livefootball.ws');

print_r($test);

?>

Если я отключу URL-адрес на каком-то другом веб-сайте, я получаю результат, но с этим сайтом он не работает. Любая помощь будет оценена по достоинству.

Теги:
curl

1 ответ

0

Попробуйте установить CURLOPT_COOKIEFILE также указывая на ваш $cookie и убедитесь, что у вас есть разрешения на доступ к серверу для записи в этот файл. Это может позаботиться о проблеме с файлом cookie. Но что касается проблемы Javascript, я думаю, вам не повезло.

Как имитировать, что JavaScript включен с помощью PHP Curl?

  • 0
    Мне удалось получить вывод по cURL из терминала моего Mac. Таким образом, это означает, что он должен работать без проблем с Javascript. Но все еще не работает с php-версией cURL, даже если я выставлю CURLOPT_COOKIEFILE.
  • 0
    Хорошо, я только что попытался подключиться к сайту livefootball.ws с помощью cURL и получил это сообщение об ошибке CURL Error (http://livefootball.ws): Failed connect to livefootball.ws:80; No error Затем я попытался подключиться к нему в своем браузере и Unable to connect - Firefox can't establish a connection to the server at livefootball.ws. Убедитесь, что URL-адрес правильный и, если это так, что он доступен.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню