Curl Redirect Скрытый контент

0

Поэтому я пытаюсь получить содержание определенной веб-страницы. Я попытался использовать curl но в результате я перенаправляюсь на домашнюю страницу, и я не могу получить информацию, которую я хотел, с необходимой страницы.

Всякий раз, когда я использую file_get_contents() и передаю URL-адрес на веб-страницу, с которой я пытаюсь получить информацию, она отлично работает, но file_get_contents() не работает на сервере, и я застрял с curl.

Есть ли способ использовать curl и получить file_get_contents() как поведение?

Я считаю, что веб-страница, на которой я пытаюсь получить информацию, делает это специально для инкапсуляции данных и ограничения просмотра содержимого страницы только для людей, которые вводят свой веб-сайт через браузер.

Спасибо за вашу помощь.

  • 0
    Если вы используете Chrome, вы можете открыть вкладку сети в инструментах разработчика и запросить страницу в браузере. Затем вы можете щелкнуть правой кнопкой мыши запрос и скопировать запрос cURL.
Теги:
curl
httprequest

2 ответа

0

Поскольку вы получаете перенаправление на свой cURL вам нужно добавить этот параметр в свой существующий набор.

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
0

попробуйте эту функцию, вы можете изменить ее по мере необходимости:

function url_get_contents($url,$ref="http://google.com",$posts=false){
    $crl = curl_init();
    $timeout = 5;
    $userAgent  = "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36";
    curl_setopt ($crl, CURLOPT_USERAGENT,  $userAgent);
    curl_setopt ($crl, CURLOPT_URL, $url);
    curl_setopt ($crl, CURLOPT_ENCODING, 'UTF-8');
    curl_setopt ($crl, CURLOPT_HEADER, false);
    curl_setopt ($crl, CURLOPT_REFERER, $ref);
    curl_setopt ($crl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt ($crl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt ($crl, CURLOPT_AUTOREFERER, true);
    curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
    if($posts){
        curl_setopt ($crl, CURLOPT_POST, true);
        curl_setopt ($crl, CURLOPT_POSTFIELDS, http_build_query($posts));
    }
    $ret = curl_exec($crl);
    $info = curl_getinfo($crl);

if ($ret === false || $info['http_code'] != 200) {
   $ret = "No cURL data returned for $url [". $info['http_code']. "]";
   if (curl_error($crl))
     $ret .= "\n". curl_error($crl);
}
    curl_close($crl);
    return $ret;
}

Если вы считаете это UserAgent, вы можете легко изменить это или передать URL-адрес реферера

$url = "somewebsitehere.com";
$contents = url_get_contents($url); #use google.com as referrer
$content2 = url_get_contents($url,$url); #use same url as referrer

Ещё вопросы

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