Curl Redirect: почему FOLLOWLOCATION не следует правильно DOMAIN - PullRequest
0 голосов
/ 05 сентября 2010

Я пытаюсь очистить веб-сайт, но страница, которую я пытался очистить, содержит перенаправление на другую страницу. Я включаю параметр FOLLOWLOCATION в curl, но получаю URL-адрес http://localhost/....pageredirected.php и т. Д.

Проблема в том, что перенаправление работает, но DOMAIN не прав (потому что это моя, а не очищенная страница).Вот код:

<?php
// create a new CURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://voli.govolo.it/etape1.cfm?ref=2008052701&destination=484&Provenance=320&Date_Depart=11/9/2010&Date_Retour=18/9/2010&AllerRetour=1&Adultes=1&ENFANTS=0&BEBES=0&dated=110910&dater=180910&TypeClasse=0&langue=it");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);    

// grab URL and pass it to the browser
$esito = curl_exec($ch);
print_r(curl_getinfo($ch));
echo $esito;
// close CURL resource, and free up system resources
curl_close($ch);
?>

страница будет перенаправлена ​​на etape1.cfm на etape2.cfm, но я получаю ошибку 404, потому что вижу http://localhost/scraping/etape2.cfm?..., а не http://voli.govolo.it/etape2.cfm?...

Почему FOLLOWLOCATION не следует за правильным доменом (http://voli.govolo.it)?

1 Ответ

0 голосов
/ 05 сентября 2010

Проблема не в скручивании. Часть того, что отправляет первый URL-адрес, такова:

<script language="JavaScript" type="text/javascript">
<!--

    function historyDeleteAndRedirect()
    {

        window.location.replace('etape2.cfm?ref=2008052701&destination=484&Provenance=320&Date_Depart=11/9/2010&Date_Retour=18/9/2010&AllerRetour=1&Adultes=1&ENFANTS=0&BEBES=0&dated=110910&dater=180910&TypeClasse=0&langue=it');


    //alert(window.location.href);
    //alert(document.referrer);
    }

//-->
</script>

Поскольку вы не заходите на сайт обычным способом, этот javascript нарушается, поскольку вы действительно нажимаете "localhost", а не "Wh whatSiteThisIs.com". Помните, что curl работает на сервере. Итак, вы нажмете "http://localhost/etape1.cfm?...... Поскольку .replace() не является абсолютным URL-адресом, ваш браузер работает правильно и повторно использует localhost.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...