Curl et domaines

Résolu
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008 - 25 mars 2008 à 12:09
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008 - 26 mars 2008 à 18:03
Bonjour à toutes et tous,

J’utilise un script fondé sur CURL pour analyser des sites web mobil.
Je dispose donc d’une liste d’url désignant la home de chaque site à tester.
Je définis le domaine en fonction de l’url de base hors, lorsqu’un site procède à une redirection, le domaine n’est plus bon.
Je cherche donc le moyen d’identifier le domaine après la réponse http que me retourne CURL.

Pour ce faire j’utilise la RegExp suivante :

     preg_match('@^(?:http://)?([^/]+)@i',$UrlHome, $matches);
     $Domaine = $matches[1];

J’ai besoin de cette étape pour reconstituer l’adresse complète des liens relatifs contenus dans les pages analysées.

Peut-être existe-t-il une autre méthode, si c’est le cas, je suis preneur de toute info et piste de recherche.

D’avance, merci

Autodidact, je ne demande qu'à apprendre... Merci de votre aide
A voir également:

4 réponses

M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
26 mars 2008 à 18:03
Pour info, la solution est donc:

modifier le script et insérer un test sur $info['redirect_count']  car si c'est égale à 1 allors il y a redirection.
Il n'y a plus qu'à récupérer le contenu de $info['url']  et d'en extraire le domaine.

Kipp Cool

Autodidact, je ne demande qu'à apprendre... Merci de votre aide
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
25 mars 2008 à 15:26
Salut,

Tu peux récupérer les entêtes HTTP avec la fonction apache_request_headers() : http://fr.php.net/manual/fr/function.apache-request-headers.php
Dans ces entêtes doit figurer l'url de redirection.
Peut-être consulter les spécifications HTTP1.1 pour savoir quelle valeur chercher...

<hr size="2" width="100%" />Neige
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
26 mars 2008 à 17:12
bonjour,

dsl je n'ai pas répondu + tot, mon easyphp c'était envoyé en l'air. (merci pour ton aide )

Bon, c'est pas gagné, j'ai lu tout ce que j'ai pu trouver sur apache-request-headers mais tout est lié avec du local.

je ne vois comment je passe une url au code suivant par exemple: (c'est juste le code exemple sur php.net)

$headers =  apache_request_headers();

foreach ($headers as $header => $value) {
    echo "$header: $value 
\n";
}
================
Ci dessous mon code pour que vous puissiez recreer la situation:
(normalement l'url procède à une redirection mais à confirmer)
au pire celle-ci fait une redirection, je viens de vérifier:
http://m.shozu.com

$url = "http://meteolive1.mc-wetter.de";
$UserAgent ="SonyEricssonK810i/R1KG Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1";

// Identification du domaine
preg_match('@^(?:http://)?([^/]+)@i',$url, $matches);
$Domaine = $matches[1];

processURL($url,$Domaine,$UserAgent);

function processURL($url,$Domaine,$UserAgent)
{

set_time_limit(300);

echo " URL interogee : ".$url."
";

        //Connection wap
        $ch =curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
                // Proxy wap toto
                curl_setopt($ch, CURLOPT_PROXY, '000.000.000.000:8080');
                curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
                curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
                curl_setopt($ch, CURLOPT_PROXYUSERPWD, ":");

                curl_setopt($ch, CURLOPT_USERAGENT, $UserAgent);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);   // a 1 pour suivre les redirections
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        $recuppage = curl_exec ($ch);
        //echo $recuppage;
        $info = curl_getinfo($ch);
        curl_close ($ch);

    if (empty($info['http_code'])) {
            echo "No HTTP code was returned
";
            echo $url.'
';
    } else {
        echo "http_code : ".$info['http_code']."
";
        echo "url : ".$info['url']."
";
        echo "content_type : ".$info['content_type']."
";
        echo "header_size : ".$info['header_size']."
";
        echo "request_size : ".$info['request_size']."
";
        echo "filetime : ".$info['filetime']."
";
        echo "redirect_count : ".$info['redirect_count']."
";
        echo "total_time : ".$info['total_time']."
";
        echo "namelookup_time : ".$info['namelookup_time']."
";
        echo "connect_time : ".$info['connect_time']."
";
        echo "pretransfer_time : ".$info['pretransfer_time']."
";
        echo "size_upload : ".$info['size_upload']."
";
        echo "size_download : ".$info['size_download']."
";
        echo "speed_download : ".$info['speed_download']."
";
        echo "speed_upload : ".$info['speed_upload']."
";
        echo "download_content_length : ".$info['download_content_length']."
";
        echo "upload_content_length : ".$info['upload_content_length']."
";
        echo "starttransfer_time : ".$info['starttransfer_time']."
";
        echo "redirect_time : ".$info['redirect_time']."
";
        //echo '

';
        //echo $recuppage.'
';
        //echo '

';
        echo "Domaine = ".$Domaine;
    }
}

 
Autodidact, je ne demande qu'à apprendre... Merci de votre aide
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
26 mars 2008 à 17:59
Ho Ho,

en fait après une analyse approfondie, il semble que je récupère l'url après redirection grace à
echo "url : ".$info['url']."
";
En effet, lorsqu'il y a redirection le contenue de cette variable retournée par CURL contient l'url exacte après redirection.
Je ne l'avais pas vue car sur plus de 1100 url avec les quelles je travaille, seule 5 procèdent à des redirections

Autodidact, je ne demande qu'à apprendre... Merci de votre aide
0
Rejoignez-nous