Exemple de code PHP pour capturer du contenu HTTPS

怪我咯
Libérer: 2023-03-13 06:00:01
original
1496 Les gens l'ont consulté

Cet article présente principalement l'implémentation de PHP pour capturer du contenu HTTPS, ainsi que les solutions aux problèmes rencontrés. Les amis dans le besoin peuvent s'y référer

J'ai récemment rencontré un problème HTTPS en étudiant l'API Hacker News. . Étant donné que toutes les API Hacker News sont accessibles via le protocole HTTPS crypté, qui est différent du protocole HTTP ordinaire, lors de l'utilisation de la fonction <a href="http://www.php.cn/wiki/1311.html" target="_blank">file_get_contents</a>() en PHP pour obtenir les données fournies dans l'API, une erreur se produit. Le code utilisé est le suivant. :

<?php
$data = file_get_contents("https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty");
......
Copier après la connexion

Lors de l'exécution du code ci-dessus, le message d'erreur suivant s'affiche :

PHP Warning:  file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?
Copier après la connexion

Ce qui suit est une capture d'écran :

php https error

Pourquoi cette erreur se produit-elle ?

Après une recherche sur Internet, j'ai constaté que de nombreuses personnes ont rencontré cette erreur. Le problème est très direct, car aucun paramètre n'est activé dans le fichier de configuration de PHP. machine locale, il s'agit de l'élément /apache/bin/php.ini dans ;extension=php_openssl.dll et le point-virgule précédent doit être supprimé. Vous pouvez utiliser le script suivant pour vérifier la configuration de votre environnement PHP :

$w = stream_get_wrappers();
echo &#39;openssl: &#39;,  extension_loaded  (&#39;openssl&#39;) ? &#39;yes&#39;:&#39;no&#39;, "\n";
echo &#39;http wrapper: &#39;, in_array(&#39;http&#39;, $w) ? &#39;yes&#39;:&#39;no&#39;, "\n";
echo &#39;https wrapper: &#39;, in_array(&#39;https&#39;, $w) ? &#39;yes&#39;:&#39;no&#39;, "\n";
echo &#39;wrappers: &#39;, var_dump($w);
Copier après la connexion

En exécutant l'extrait de script ci-dessus, le résultat sur ma machine est :

openssl: no
http wrapper: yes
https wrapper: no
wrappers: array(10) {
  [0]=>
  string(3) "php"
  [1]=>
  string(4) "file"
  [2]=>
  string(4) "glob"
  [3]=>
  string(4) "data"
  [4]=>
  string(4) "http"
  [5]=>
  string(3) "ftp"
  [6]=>
  string(3) "zip"
  [7]=>
  string(13) "compress.zlib"
  [8]=>
  string(14) "compress.bzip2"
  [9]=>
  string(4) "phar"
}
Copier après la connexion

Alternatives

Trouvez l'erreur et corrigez-la. C'est très simple. La chose difficile est que vous ne pouvez pas corriger l'erreur après l'avoir trouvée. Je voulais à l'origine mettre cette méthode de script sur l'hôte distant, mais je n'ai pas pu modifier la configuration PHP de l'hôte distant. Le résultat était que je ne pouvais pas utiliser cette solution, mais nous ne pouvons pas nous accrocher à un arbre. Cette route ne fonctionne pas. Jetons un coup d'oeil. Y a-t-il un autre moyen ?

Une autre fonction que j'utilise souvent pour capturer du contenu en PHP est curl Elle est plus puissante que file_get_contents() et fournit de nombreux paramètres facultatifs. Pour le problème d'accès au HTTPS contenu, les paramètres de configuration CURL que nous devons utiliser sont :

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
Copier après la connexion

Vous pouvez voir d'après la sémantique qu'il ignore/ignore la vérification de sécurité SSL. Ce n’est peut-être pas une bonne idée, mais pour les scénarios ordinaires, cela suffit.

Ce qui suit est une fonction encapsulée par Curl qui peut accéder au contenu HTTPS :

function getHTTPS($url) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($ch, CURLOPT_HEADER, false);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_REFERER, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  $result = curl_exec($ch);
  curl_close($ch);
  return $result;
}
Copier après la connexion

Ce qui précède est l'ensemble du processus d'obtention de contenu https en PHP. C'est très simple et pratique. . Il est recommandé à tous les amis qui ont les mêmes besoins du projet.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!