Maison  >  Article  >  développement back-end  >  Comment gérer les redirections d'URL et les erreurs de déplacement de page à l'aide de cURL ?

Comment gérer les redirections d'URL et les erreurs de déplacement de page à l'aide de cURL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-22 22:30:02198parcourir

How to Handle URL Redirects and Page Moved Errors Using cURL?

Comment récupérer le contenu d'une page à l'aide de cURL

En cherchant à extraire du contenu des résultats de recherche Google, vous pouvez rencontrer des problèmes tels que des redirections et Erreurs "page déplacée" lors de l'utilisation de cURL. Souvent, ces obstacles sont dus à des chaînes de requête codées.

Pour récupérer efficacement le contenu souhaité, considérez l'implémentation PHP suivante :

<code class="php">/**
 * Get a web file (HTML, XHTML, XML, image, etc.) from a URL.  Return an
 * array containing the HTTP server response header fields and content.
 */
function get_web_page( $url )
{
    $user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';

    $options = array(

        CURLOPT_CUSTOMREQUEST  => "GET",        // set request type post or get
        CURLOPT_POST           => false,        // set to GET
        CURLOPT_USERAGENT      => $user_agent, // set user agent
        CURLOPT_COOKIEFILE     => "cookie.txt", // set cookie file
        CURLOPT_COOKIEJAR      => "cookie.txt", // set cookie jar
        CURLOPT_RETURNTRANSFER => true,     // return web page
        CURLOPT_HEADER         => false,    // don't return headers
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
        CURLOPT_TIMEOUT        => 120,      // timeout on response
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
    );

    $ch      = curl_init( $url );
    curl_setopt_array( $ch, $options );
    $content = curl_exec( $ch );
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $header  = curl_getinfo( $ch );
    curl_close( $ch );

    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}</code>

Exemple :

<code class="php">// Read a web page and check for errors:

$result = get_web_page( $url );

if ( $result['errno'] != 0 )
    ... error: bad url, timeout, redirect loop ...

if ( $result['http_code'] != 200 )
    ... error: no page, no permissions, no service ...

$page = $result['content'];</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn