PHP CURL et HTTPS
La fonction fournie est un excellent outil pour récupérer des pages Web. Cependant, il rencontre des problèmes lors du traitement des URL HTTPS. Pour résoudre ce problème, nous devons effectuer les ajustements nécessaires pour activer la prise en charge HTTPS.
Solution 1 : CURLOPT_SSL_VERIFYPEER
La première et la plus rapide solution consiste à ajouter l'option suivante à le tableau $options :
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Cela désactive la vérification du certificat, vous permettant ainsi de vous connecter à n'importe quel hôte. Cependant, cela n'est pas recommandé car cela vous rend vulnérable aux attaques de l'homme du milieu.
Solution 2 : Fonction mise à jour
Une approche alternative consiste à incorporer le correctif directement dans la fonction get_web_page :
/** * 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) { $options = [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_ENCODING => '', CURLOPT_USERAGENT => 'spider', CURLOPT_AUTOREFERER => true, CURLOPT_CONNECTTIMEOUT => 120, CURLOPT_TIMEOUT => 120, CURLOPT_MAXREDIRS => 10, CURLOPT_SSL_VERIFYPEER => false, // Disabled SSL Cert checks ]; $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; }
Cette fonction mise à jour prend désormais en charge les URL HTTP et HTTPS en désactivant la vérification des certificats au prix de sécurité.
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!