Commandes FTP curl. PHP CURL - fonctions et exemples d'utilisation. Exemple CURL - appeler un script distant et obtenir le résultat

Véritable exemple pratique : vous devez redémarrer votre routeur (modem) pour changer l'adresse IP. Pour ce faire, vous devez : vous connecter au routeur, vous rendre sur la page de maintenance et cliquer sur le bouton « Redémarrer ». Si cette action doit être effectuée plusieurs fois, la procédure doit être répétée. D'accord, vous ne voulez pas effectuer cette routine manuellement à chaque fois. cURL vous permet d'automatiser tout cela. Avec seulement quelques commandes cURL, vous pouvez obtenir une autorisation et terminer la tâche sur le routeur.

  • cURL est utile pour récupérer des données de sites Web sur la ligne de commande.
Autre exemple pratique : nous souhaitons mettre en place l'affichage de statistiques générales pour plusieurs sites. Si nous utilisons cURL, cela devient une tâche complètement triviale : en utilisant cURL, nous nous authentifions auprès du service de collecte de statistiques (si nécessaire), puis (encore une fois en utilisant les commandes cURL) nous obtenons les pages nécessaires, analysons les données dont nous avons besoin ; la procédure est répétée pour tous nos sites, puis nous ajoutons et affichons le résultat final.

Ceux. les cas d'utilisation de cURL sont bien réels, même si, dans la majorité des cas, cURL est nécessaire aux programmeurs qui l'utilisent pour leurs programmes.

CURL prend en charge de nombreux protocoles et méthodes d'autorisation, peut transférer des fichiers, fonctionne correctement avec les cookies, prend en charge les certificats SSL, les proxys et bien plus encore.

cURL en PHP et ligne de commande

Nous pouvons utiliser cURL de deux manières principales : dans les scripts PHP et sur la ligne de commande.

Pour activer cURL en PHP sur le serveur, vous devez décommenter la ligne dans le fichier php.ini

Extension=php_curl.dll

Et puis redémarrez le serveur.

Sous Linux, vous devez installer le package curl.

Sur Debian, Ubuntu ou Linux Mint :

$ sudo apt-get install curl


Sur Fedora, CentOS ou RHEL :

$ sudo miam installer curl

Pour bien voir la différence d'utilisation en PHP et en ligne de commande, nous allons effectuer deux fois les mêmes tâches : d'abord dans le script PHP, puis en ligne de commande. Essayons de ne pas nous tromper.

Récupération de données à l'aide de cURL

Récupération de données à l'aide de cURL en PHP

Exemple en PHP :

Tout est très simple :
$url_cible- l'adresse du site qui nous intéresse. Après l'adresse du site, vous pouvez mettre deux points et ajouter l'adresse du port (si le port est différent de celui standard).

curl_init- initialise une nouvelle session et renvoie un handle, qui dans notre exemple est affecté à une variable $ch.

On exécute ensuite la requête avec la fonction cURL curl_exec, auquel un descripteur est passé en paramètre.

Tout est très logique, mais lorsque ce script sera exécuté, le contenu du site sera affiché sur notre page. Mais que se passe-t-il si nous ne voulons pas afficher le contenu, mais que nous voulons l'écrire dans une variable (pour un traitement ou une analyse ultérieur).

Ajoutons un peu à notre script :

0) ( echo "Erreur de boucle : " . curl_error($ch); ) curl_close($ch); ?>

Nous avons une ligne curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);.

curl_setopt- définit les options. Une liste complète des options peut être trouvée sur cette page :

Caché des invités

$response_data = curl_exec($ch);

La valeur du script est désormais affectée à la variable $response_data, avec laquelle d'autres opérations peuvent être effectuées. Par exemple, vous pouvez afficher son contenu.

des points de suture

Si (curl_errno($ch) > 0) ( echo "Erreur de boucle : " . curl_error($ch); )

servir au débogage en cas d’erreurs.

Récupération de données à l'aide de cURL sur la ligne de commande

Sur la ligne de commande, tapez simplement

où au lieu de mi-al.ru- l'adresse de votre site Internet.

Si vous devez copier des données dans une variable plutôt que d'afficher le résultat à l'écran, procédez comme suit :

Temp="curl mi-al.ru"

Cependant, certaines données sont toujours affichées :

Pour éviter leur affichage, ajoutez la clé -s:

Temp="curl -s mi-al.ru"

Vous pouvez voir ce qui a été enregistré :

Écho $temp | moins

Authentification de base et HTTP

L'authentification, en termes simples, consiste à saisir un nom d'utilisateur et un mot de passe.

L'authentification de base est une authentification basée sur le serveur. Pour cela, deux fichiers sont créés : .htaccess Et .htpasswd

Le contenu du fichier .htaccess ressemble à ceci

AuthName "Pour les utilisateurs enregistrés uniquement !" AuthType Basic nécessite un utilisateur valide AuthUserFile /home/freeforum.biz/htdocs/.htpassw


Le contenu du fichier .htpasswd ressemble à ceci :

Mial:CRdiI.ZrZQRRc

Ceux. hachage de connexion et de mot de passe.

Lorsque vous essayez d'accéder à un dossier protégé par mot de passe, le navigateur affichera quelque chose comme ceci :

L'authentification HTTP est le cas lorsque nous saisissons un identifiant et un mot de passe dans un formulaire sur un site Web. C'est cette authentification qui est utilisée lors de la connexion à la messagerie, aux forums, etc.

Authentification cURL de base (PHP)

Il y a un site internet

Caché des invités

Essayons notre script initial :

0) ( echo "Erreur de boucle : " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?>

Bien que le script pense qu’il n’y a pas d’erreur, nous n’aimons pas du tout le résultat :

Ajoutez deux lignes :

Curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "ru-board:ru-board");

La première ligne, nous définissons le type d'authentification - basique. La deuxième ligne contient le nom et le mot de passe séparés par deux points (dans notre cas, le nom et le mot de passe sont les mêmes - ru-board). Cela s'est passé comme ceci :

0) ( echo "Erreur de boucle : " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?> Essayons : 30946 Super ! Authentification cURL de base (sur la ligne de commande) La même chose peut être obtenue sur la ligne de commande avec une seule ligne : curl -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/

Je n'ai pas oublié de préciser le type d'authentification, c'est juste que dans cURL le type d'authentification de base est celui par défaut.

Tout s'est déroulé si rapidement en ligne de commande que, par frustration, j'ai écrit le programme suivant. Elle se connecte au site et télécharge la dernière mise à jour :

Temp=`curl -s -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/ | grep -E -o "Update_FED_201(1).(2).(2).7z" | unique | queue -n 1`; curl -o $temp -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/$temp

Avec seulement quelques commandes supplémentaires, vous pouvez ajouter :

  • décompresser l'archive dans le répertoire spécifié ;
  • lancer les mises à jour de ConsultantPlus (ce sont des mises à jour pour celui-ci) ;
  • vous pouvez vérifier si la dernière mise à jour disponible a déjà été téléchargée ou si une nouvelle est apparue ;
  • ajoutez le tout à Cron pour des mises à jour quotidiennes.
URL d'authentification HTTP

Authentification HTTP cURL en PHP

Nous avons besoin de savoir:

  • adresse où envoyer les données d'authentification
  • méthode d'envoi GET ou POST
  • se connecter
  • mot de passe
Parfois, ces données ne suffisent pas. Voyons cela.

L'adresse à laquelle vous devez envoyer les données peut être extraite du formulaire d'authentification. Par exemple:

Nous examinons la propriété action. Ceux. la dernière page est connexion.php. Nous avons besoin de l'adresse complète, comme ceci

Caché des invités

Ici on retrouve également le mode d’envoi : méthode="post"

Je connais aussi le login et le mot de passe : admin et qwerasdfzxcv
Ceux. Une chaîne est envoyée au serveur depuis le formulaire en utilisant la méthode POST. Théoriquement, notre script précédent, auquel nous avons ajouté une nouvelle ligne, devrait fonctionner. Ceux. l'authentification doit avoir lieu.

0) ( echo "Erreur de boucle : " . curl_error($ch); ) else ( ) curl_close($ch); ?>

Nouvelle ligne dans le script

curl_setopt($ch, CURLOPT_POSTFIELDS, "LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv");

Ici curl_setopt- une fonction qui nous est déjà familière pour paramétrer les options de cURL, CURLOPT_POSTFIELDS- c'est le nom de l'option que nous définissons. CURLOPT_POSTFIELDS contient toutes les données transférées à l'aide de la méthode POST. Eh bien, la ligne elle-même LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv- ce sont les mêmes données que nous transmettons.

Si vous examinez attentivement le formulaire, vous verrez qu'il contient également des champs cachés. Et les données peuvent être traitées ou complétées avec JavaScript. Vous pouvez étudier tout cela, mais je préfère une méthode plus simple.

J'utilise Wireshark. Ce programme est conçu pour détecter (intercepter) le trafic. Et c'est là qu'il est très pratique de voir ce qui est exactement transmis au site.

Regardez cette petite vidéo :


Ceux. avec l'adresse où les données sont transférées, j'ai bien deviné. Mais la chaîne transmise s’est avérée beaucoup plus compliquée.

J'ai entré le paramètre correct et j'ai également légèrement modifié le script pour qu'il non seulement se connecte, mais reçoive également quelque chose du routeur :

0) ( echo "Erreur Curl : " . curl_error($ch); ) else ( $target_url2 = "http://188.35.8.64:8080/bsc_wlan.php"; $ch2 = curl_init($target_url2); curl_setopt($ ch2, CURLOPT_RETURNTRANSFER, 1); $response_data2 = curl_exec($ch2); preg_match("|f.ssid.value = "(.*)";|", $response_data2, $results2); $results2 = str_replace("f .ssid.value = "", "", $results2); $results2 = str_replace("";", "", $results2); echo "Nom du réseau Wi-Fi : $résultats2
"; preg_match("|f_wpa.wpapsk1.value(.*)";|", $response_data2, $results3); $results3 = str_replace("f_wpa.wpapsk1.value", "", $results3); $results3 = str_replace("="", "", $results3); $results3 = str_replace("";", "", $results3); echo "Mot de passe du réseau Wi-Fi : $résultats3"; ) curl_close($ch); ?>

À propos, si le propriétaire met à jour le mot de passe (mais ne met pas à jour le micrologiciel), le nouveau mot de passe peut toujours être consulté sur

Caché des invités

(Il s'agit d'une vulnérabilité bien connue des routeurs D-Link DIR-300, D-Link DIR-320 et D-Link DAP-1353).

Authentification HTTP cURL sur la ligne de commande

On connaît déjà l'adresse complète, ainsi que la chaîne à transmettre. Alors c'est simple :

Curl --data "ACTION_POST=LOGIN&FILECODE=&VERIFICATION_CODE=&LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv&login=Log+In+&VER_CODE=" http://188.35.8.64:8080/login.php

Je pense que tout est clair, puisque nous avons déjà considéré ces délais. Si quelqu'un ne comprend pas, demandez-le dans les commentaires.

Un exemple d'utilisation de cURL pour récupérer et analyser des données serait l'ensemble de commandes suivant :

Curl -s --data "ACTION_POST=LOGIN&FILECODE=&VERIFICATION_CODE=&LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv&login=Log+In+&VER_CODE=" http://188.35.8.64:8080/login.php > /dev/null && echo -e "nn " && echo "Nom du réseau Wi-Fi" && curl -s http://188.35.8.64:8080/bsc_wlan.php | grep -E "f.ssid.value = "(.)*";" | sed "s/f.ssid.value = "//" | sed "s/";//" && echo "Mot de passe du réseau Wi-Fi" && curl -s http://188.35.8.64:8080/bsc_wlan.php | grep -E "f_wpa.wpapsk1.(.)*";" | sed "s/f_wpa.wpapsk1.value//" | sed "s/";//" | sed "s/="//"

Il serait plus correct d'écrire cette rubrique comme suit : Cas d'autorisation « complexes ». Ceux. Mettez le mot « compliqué » entre guillemets. Ils ne semblent compliqués qu'à première vue, quand ce n'est pas clair : où a lieu l'envoi, quels sont les noms de champs, ce qui est exactement envoyé, etc.

Mais en fait, tout cela se résume aux méthodes POST ou GET. Pour comprendre exactement ce qui est envoyé, vous pouvez enregistrer la page contenant le formulaire sur votre disque et ajouter une fonction pour afficher les données générées pour l'envoi au bouton de soumission. Ou encore plus simple – comme moi, Wireshark.

Si les données sont correctes, mais que l'authentification ne se produit pas, vous devez alors creuser dans les directions suivantes :

  • définir la chaîne de référence correcte
  • définissez la chaîne d'agent utilisateur "correcte".
Tout cela peut être fait en utilisant les méthodes cURL de base, mais je n'entrerai pas dans les détails. La leçon était déjà assez longue, mais je voulais aussi montrer quelques astuces avec cURL.

Trucs et astuces cURL

cURL et réception de cookies en plus de CURLOPT_COOKIEJAR

Je pense qu'il est déjà clair que cURL gère correctement les cookies - les stocke, les utilise lorsque le serveur les demande, etc. Mais parfois, les cookies doivent être enregistrés. Il existe une option pour cela appelée CURLOPT_COOKIEJAR, mais il n'est pas toujours possible de l'utiliser. C’est à cela que est dédiée notre première astuce.

Parfois, en raison de la façon dont PHP est configuré sur le serveur, des options telles que CURLOPT_COOKIEJAR (vous permet d'enregistrer les cookies reçus dans un fichier) et CURLOPT_COOKIEFILE (vous permet d'utiliser les cookies d'un fichier) ne nous sont pas disponibles. Parce que ils disent qu'en utilisant ces options, nous pouvons voler n'importe quel fichier de leur serveur. Voici la solution à ce problème :

1) Nous n'utilisons pas CURLOPT_FOLLOWLOCATION
2) Utilisez curl_setopt($ch, CURLOPT_HEADER, 1)
3) Collectez les cookies de l'en-tête comme ceci :

Preg_match_all("|Set-Cookie: (.*);|U", $content, $results); $cookies = imploser(";", $results);

4) Définissez-les en utilisant curl_setopt($ch, CURLOPT_COOKIE, $cookies);

Deuxième conseil. Nous pouvons passer d’agresseurs à victimes. Pour éviter d'être victime d'une attaque de l'homme du milieu, nous procédons ainsi.

S'il vous plaît, tout le monde, arrêtez de définir le paramètre CURLOPT_SSL_VERIFYPEER sur false ou 0. Si votre installation PHP ne dispose pas d'un ensemble de certificats d'autorité de certification racine à jour, téléchargez-en un sur le site Web curl et enregistrez-le sur votre serveur :

Caché des invités

Définissez ensuite le chemin dans votre fichier php.ini, par exemple sous Windows :

Curl.cainfo=c:phpcacert.pem

La désactivation de CURLOPT_SSL_VERIFYPEER permet une attaque de l'homme du milieu (MITM), ce que nous ne voulons pas !

Eh bien, le dernier conseil pour aujourd'hui. Saviez-vous qu'un grand nombre de requêtes curl asynchrones sont possibles ?

Pour cela, vous pouvez utiliser curl_multi_init. Détails et exemple de code dans la documentation officielle

Caché des invités

Caché des invités


À propos de cURL sur la ligne de commande

Caché des invités


La deuxième partie de la leçon cURL a également été préparée pour la lecture en russe : "".

Je propose de parler un peu du langage de programmation PHP, et d'aborder spécifiquement le sujet des extensions BOUCLE, c'est à dire. la possibilité d'interagir avec différents serveurs en utilisant différents protocoles du script PHP lui-même.

Avant de commencer à examiner curl, je tiens à vous rappeler que nous avons déjà abordé le langage PHP, par exemple, dans le matériel sur le téléchargement vers Excel en PHP ou la possibilité de s'authentifier en PHP, et parlons maintenant de la possibilité de envoyer des requêtes à PHP.

Qu’est-ce que CURL ?

BOUCLE est une bibliothèque de fonctions PHP qui peuvent être utilisées pour envoyer des requêtes, telles que HTTP, à partir d'un script PHP. CURL prend en charge des protocoles tels que HTTP, HTTPS, FTP et autres. Vous pouvez envoyer des requêtes HTTP à l'aide des méthodes GET, POST et PUT.

CURL peut être utile dans les cas où vous devez appeler un script distant et obtenir le résultat ou simplement enregistrer le code HTML de la page appelée, en général, chacun peut trouver sa propre utilité, mais le fait est que vous pouvez envoyer des requêtes pendant que le le script est en cours d'exécution.

Connecter la bibliothèque CURL en PHP

Pour utiliser la bibliothèque CURL, vous devez la connecter en conséquence.

Note! A titre d'exemple, nous utiliserons PHP 5.4.39 sur Windows 7, et nous utiliserons Apache 2.2.22 comme serveur Web.

La première chose à faire est de copier les bibliothèques ssleay32.dll, libeay32.dll, libssh2.dll ils se trouvent dans le répertoire avec PHP, dans le répertoire système Windows, à savoir dans C:\Windows\Système32.

Connectez ensuite la bibliothèque php_curl.dll à php.ini, c'est-à-dire décommenter la ligne suivante

Bibliothèque non connectée

;extension=php_curl.dll

Bibliothèque connectée

Extension=php_curl.dll

Voilà, redémarrez Apache, appelez la fonction phpinfo() et si la connexion réussit, vous devriez avoir une section curl


Si ce n'est pas le cas, cela ne signifie qu'une chose : la bibliothèque ne s'est pas chargée ; la raison la plus courante est que les DLL ci-dessus n'ont pas été copiées dans le répertoire système Windows.

Exemple CURL - demande d'affichage d'une page distante à l'écran

Dans cet exemple, nous allons simplement demander une page distante via HTTP en utilisant la méthode GET et afficher son contenu à l'écran.

Nous avons un répertoire de test dans lequel se trouvent 2 fichiers PHP : test_curl.php et test.php, où test_curl.php est le script où nous utiliserons curl, et test.php est le script distant que nous appellerons. J'ai commenté le code en détail.

Code test_curl.php

Code test.php

Titre 1" ; pause ; cas 2 : écho "<Н2>Titre 2" ; pause ; cas 3 : écho "<Н3>Titre 3"; pause; ) ) ?>

Par conséquent, si vous exécutez test_curl.php, vous verrez le message « Titre 1 » à l'écran, vous pouvez expérimenter en passant les paramètres d'identification ( dans ce cas 2 ou 3).

Exemple CURL - appeler un script distant et obtenir le résultat

Essayons maintenant d'appeler le script et d'obtenir le résultat, afin de le traiter plus tard, par exemple, utilisons la méthode POST. Laissons les noms de fichiers identiques.

Code test_curl.php

Code test.php

Et si nous exécutons test_curl.php, alors 111 sera affiché à l'écran, c'est-à-dire 1.11 obtenu suite à l'accès à un script distant, multiplié par 100.

Parlons maintenant des fonctions et de leurs constantes.

Fonctions et constantes CURL couramment utilisées

  • curl_init - Initialise une session ;
  • curl_close - Ferme la session ;
  • curl_exec - Exécute une requête ;
  • curl_errno - Renvoie le code d'erreur ;
  • curl_setopt - Définit un paramètre pour la session, par exemple :
    • CURLOPT_HEADER – une valeur de 1 signifie que les en-têtes doivent être renvoyés ;
    • CURLOPT_INFILESIZE - paramètre pour spécifier la taille de fichier attendue ;
    • CURLOPT_VERBOSE - la valeur 1 signifie que CURL affichera des messages détaillés sur toutes les opérations effectuées ;
    • CURLOPT_NOPROGRESS – désactive l'indicateur de progression de l'opération, valeur 1 ;
    • CURLOPT_NOBODY – si vous n'avez pas besoin d'un document, mais seulement d'en-têtes, définissez la valeur sur 1 ;
    • CURLOPT_UPLOAD - pour télécharger un fichier sur le serveur ;
    • CURLOPT_POST – exécute une requête en utilisant la méthode POST ;
    • CURLOPT_FTPLISTONLY — obtenir une liste de fichiers dans le répertoire du serveur FTP, valeur 1 ;
    • CURLOPT_PUT — exécute une requête en utilisant la méthode PUT, valeur 1 ;
    • CURLOPT_RETURNTRANSFER - renvoie le résultat sans le transmettre au navigateur, valeur 1 ;
    • CURLOPT_TIMEOUT – temps d'exécution maximum en secondes ;
    • CURLOPT_URL – spécifiant l'adresse de contact ;
    • CURLOPT_USERPWD - une chaîne avec le nom d'utilisateur et le mot de passe sous la forme :;
    • CURLOPT_POSTFIELDS – données pour la requête POST ;
    • CURLOPT_REFERER - définit la valeur de l'en-tête HTTP « Referer : » ;
    • CURLOPT_USERAGENT - définit la valeur de l'en-tête HTTP « User-Agent : » ;
    • CURLOPT_COOKIE — contenu de l'en-tête « Cookie : » qui sera envoyé avec la requête HTTP ;
    • CURLOPT_SSLCERT - nom du fichier avec le certificat au format PEM ;
    • CURLOPT_SSL_VERIFYPEER – valeur 0, afin de désactiver la vérification du certificat du serveur distant (par défaut 1) ;
    • CURLOPT_SSLCERTPASSWD — mot de passe pour le fichier de certificat.
  • curl_getinfo - Renvoie des informations sur l'opération, le deuxième paramètre peut être une constante pour indiquer exactement ce qui doit être affiché, par exemple :
    • CURLINFO_EFFECTIVE_URL - dernière URL utilisée ;
    • CURLINFO_HTTP_CODE - dernier code HTTP reçu ;
    • CURLINFO_FILETIME — date de modification du document chargé ;
    • CURLINFO_TOTAL_TIME — temps d'exécution de l'opération en secondes ;
    • CURLINFO_NAMELOOKUP_TIME — temps de résolution du nom du serveur en secondes ;
    • CURLINFO_CONNECT_TIME — temps passé à établir une connexion, en secondes ;
    • CURLINFO_PRETRANSFER_TIME — temps écoulé depuis le début de l'opération jusqu'à la préparation au transfert de données réel, en secondes ;
    • CURLINFO_STARTTRANSFER_TIME — temps écoulé depuis le début de l'opération jusqu'au transfert du premier octet de données, en secondes ;
    • CURLINFO_REDIRECT_TIME — temps passé en redirection, en secondes ;
    • CURLINFO_SIZE_UPLOAD - nombre d'octets lors du téléchargement ;
    • CURLINFO_SIZE_DOWNLOAD - nombre d'octets lors du téléchargement ;
    • CURLINFO_SPEED_DOWNLOAD - vitesse de téléchargement moyenne ;
    • CURLINFO_SPEED_UPLOAD - vitesse de téléchargement moyenne ;
    • CURLINFO_HEADER_SIZE - la taille totale de tous les en-têtes reçus ;
    • CURLINFO_REQUEST_SIZE - la taille totale de toutes les demandes envoyées ;
    • CURLINFO_SSL_VERIFYRESULT - le résultat de la vérification du certificat SSL demandé en définissant le paramètre CURLOPT_SSL_VERIFYPEER ;
    • CURLINFO_CONTENT_LENGTH_DOWNLOAD - la taille du document téléchargé, lue à partir de l'en-tête Content-Length ;
    • CURLINFO_CONTENT_LENGTH_UPLOAD - taille des données téléchargées ;
    • CURLINFO_CONTENT_TYPE - le contenu de l'en-tête Content-type reçu, ou NULL si cet en-tête n'a pas été reçu.

Vous pouvez en savoir plus sur les fonctions CURL et leurs constantes sur le site officiel de PHP -

c URL est un outil de ligne de commande très utile pour transférer des données depuis ou vers un serveur. Curl prend en charge divers protocoles tels que FILE, HTTP, HTTPS, IMAP, IMAPS, LDAP, DICT, LDAPS, TELNET, FTPS, GOPHER, RTMP, RTSP, SCP, SFTP, POP3, POP3S, SMB, SMBS, SMTP, SMTPS et TFTP. .

cURL peut être utilisé de différentes manières intéressantes. Avec cet outil, vous pouvez télécharger, télécharger et gérer des fichiers, vérifier votre adresse e-mail ou même mettre à jour votre statut sur certains sites de médias sociaux ou consulter la météo à l'extérieur. Dans cet article, nous examinerons les cinq utilisations les plus utiles et les plus basiques de l'outil cURL sur n'importe quel fichier .

1. Vérifiez l'URL

L'une des utilisations les plus courantes et les plus simples de cURL consiste à imprimer la commande elle-même suivie de l'URL que vous souhaitez tester.

Boucle https://domain.ru

Cette commande affichera le contenu de l'URL sur votre terminal

2. Enregistrez la sortie URL dans un fichier

Site Web Curl -o https://domain.ru % Total % Reçu % Xferd Vitesse moyenne Temps Temps Temps Téléchargement actuel Téléchargement Total dépensé Vitesse restante 100 41793 0 41793 0 0 275k 0 --:--:-- - -:-- :-- --:--:-- 2,9 millions

Dans cet exemple, la sortie sera enregistrée dans un fichier nommé « site Web » dans le répertoire de travail actuel.

3. Téléchargement de fichiers à l'aide de Curl

Vous pouvez télécharger des fichiers à l'aide de Curl en ajoutant l'option -o à la commande. Il permet de sauvegarder des fichiers sur le serveur local avec les mêmes noms que sur le serveur distant

Curl -O https://domain.ru/file.zip

Dans cet exemple, l'archive 'file.zip' sera téléchargée dans le répertoire de travail actuel.

Vous pouvez également télécharger un fichier avec un nom différent en ajoutant l'option -o à cURL.

Curl -o archive.zip https://domain.ru/file.zip

Ainsi, l'archive 'file.zip' sera téléchargée et enregistrée sous 'Archive.zip'.

cURL peut également être utilisé pour télécharger plusieurs fichiers à la fois, comme le montre l'exemple ci-dessous.

Curl -O https://domain.ru/file.zip -O https://domain.com/file2.zip

Curl peut également être utilisé pour télécharger des fichiers en toute sécurité via SSH à l'aide de la commande suivante

Curl -u utilisateur sftp://server.domain.ru/path/to/file

Veuillez noter que vous devez utiliser le chemin complet du fichier que vous souhaitez télécharger

4. Récupérez les informations de l'en-tête HTTP du site Web

Vous pouvez facilement obtenir des informations d'en-tête HTTP à partir de n'importe quel site Web en ajoutant l'option -I (« i ») à cURL.

Curl -I http://domain.ru HTTP/1.1 200 OK Date : dimanche 16 octobre 2016 23:37:15 GMT Serveur : Apache/2.4.23 (Unix) X-Powered-By : PHP/5.6.24 Connexion : fermer Content-Type: text/html; jeu de caractères = UTF-8

5. Accès au serveur FTP

Pour accéder au serveur FTP à l'aide de Curl, vous devez utiliser la commande suivante

Curl ftp://ftp.domain.ru --user nom d'utilisateur: mot de passe

Curl se connectera au serveur FTP et listera tous les fichiers et répertoires du répertoire personnel de l'utilisateur.

Vous pouvez télécharger le fichier via FTP

Curl ftp://ftp.domain.ru/file.zip --user nom d'utilisateur: mot de passe

et téléchargez le fichier sur le serveur FTP

Curl -T file.zip ftp://ftp.domain.ru/ --user nom d'utilisateur: mot de passe

Vous pouvez consulter la page Curl manuellement pour voir toutes les options cURL disponibles et ses fonctionnalités

Boucle d'homme

PS. Si vous avez aimé cet article, partagez-le avec vos amis sur les réseaux sociaux en utilisant les boutons ci-dessous ou laissez simplement un commentaire. Merci.

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

curl_setopt — Définit un paramètre pour la session CURL

Liste des paramètres

Poignée cURL obtenue à partir de curl_init().

Paramètre à définir CURLOPT_XXX.

La valeur du paramètre option.

bouffon:

Paramètre Remarques
CURLOPT_AUTOREFERER VRAI pour le réglage automatique du champ Référent : dans les requêtes redirigées par en-tête Emplacement:.
CURLOPT_BINARYTRANSFER VRAI pour renvoyer la réponse brute lors de l'utilisation d'une constante CURLOPT_RETURNTRANSFER. Depuis PHP 5.1.3, cette option n'est plus requise : la sortie brute est toujours renvoyée lors de l'utilisation de l'option CURLOPT_RETURNTRANSFER.
CURLOPT_COOKIESESSION VRAI pour demander à la session en cours de démarrer une nouvelle « session » de cookies. Cela amènera libcurl à ignorer tous les cookies de « session » qu'elle aurait dû charger depuis la session précédente. Par défaut, libcurl enregistre et charge toujours tous les cookies, qu'ils soient « de session » ou non. Les cookies « de session » sont des cookies qui n'expirent pas et ne doivent exister que pour la « session » en cours.
CURLOPT_CERTINFO VRAI pour afficher les informations du certificat SSL à diffuser STDERR avec des connexions sécurisées. Ajouté dans cURL 7.19.1. Disponible à partir de PHP 5.3.2. Nécessite que cette option soit activée pour un fonctionnement correct CURLOPT_VERBOSE.
CURLOPT_CONNECT_ONLY VRAI indique à la bibliothèque d'effectuer l'authentification proxy et la configuration de la connexion nécessaires, mais ne transmet pas les données. Cette option est implémentée pour HTTP, SMTP et POP3. Ajouté dans 7.15.2. Disponible à partir de PHP 5.5.0.
CURLOPT_CRLF VRAI pour convertir les fins de lignes Unix en CRLF.
CURLOPT_DNS_USE_GLOBAL_CACHE VRAI pour utiliser le cache DNS global. Cette option n’est pas thread-safe et est activée par défaut.
CURLOPT_FAILONERROR VRAI pour un rapport détaillé d'échec si le code HTTP reçu est supérieur ou égal à 400. Le comportement par défaut renvoie la page normalement, en ignorant le code.
CURLOPT_FILETIME VRAI pour tenter d'obtenir la date de modification d'un document distant. Cette valeur peut être obtenue à l'aide du paramètre CURLINFO_FILETIME de la fonction curl_getinfo().
CURLOPT_FOLLOWLOCATION VRAI suivre n'importe quelle rubrique "Emplacement: " envoyé par le serveur dans sa réponse (notez que cela se produit de manière récursive, PHP suivra tous les en-têtes envoyés "Emplacement: ", sauf lorsqu'une constante est définie CURLOPT_MAXREDIRS).
CURLOPT_FORBID_REUSE VRAI pour forcer la fermeture d'une connexion une fois son traitement terminé afin qu'elle ne puisse pas être réutilisée.
CURLOPT_FRESH_CONNECT VRAI pour forcer l'utilisation d'une nouvelle connexion au lieu d'une connexion en cache.
CURLOPT_FTP_USE_EPRT VRAI pour utiliser EPRT (et LPRT) pour les téléchargements FTP actifs. Utiliser FAUX afin de désactiver EPRT et LPRT et d'utiliser uniquement PORT.
CURLOPT_FTP_USE_EPSV VRAI pour les premiers tests de la commande EPSV lors des transferts FTP. Si la commande échoue, elle reviendra à PASV. Installer dans FAUX pour désactiver EPSV.
CURLOPT_FTP_CREATE_MISSING_DIRS VRAI pour créer des répertoires manquants si une opération FTP rencontre un chemin inexistant.
CURLOPT_FTPAPPEND VRAI pour écrire un fichier distant jusqu'à la fin, au lieu de l'écraser sur un fichier existant.
CURLOPT_TCP_NODELAY Spécifie de manière permanente si l'option TCP_NODELAY doit être définie ou effacée (1 = définie, 0 = effacée). Par défaut, l'option est désactivée. Disponible à partir de PHP 5.2.1 pour les versions construites avec libcurl 7.11.2 ou version ultérieure.
CURLOPT_FTPASCII Surnom CURLOPT_TRANSFERTEXT. Utilisez ceci à la place.
CURLOPT_FTPLISTONLY VRAI pour renvoyer uniquement une liste de noms du répertoire FTP.
CURLOPT_HEADER VRAI pour inclure les en-têtes dans la sortie.
CURLINFO_HEADER_OUT VRAI pour suivre la chaîne de requête du handle. Disponible à partir de PHP 5.1.3. Préfixe CURLINFO_ utilisé spécifiquement.
CURLOPT_HTTPGET VRAI pour réinitialiser la méthode de requête HTTP sur la méthode GET. Puisque GET est la valeur par défaut, ce paramètre n'est nécessaire que si la méthode de requête a déjà été modifiée.
CURLOPT_HTTPPROXYTUNNEL VRAI pour créer un tunnel via le proxy HTTP spécifié.
CURLOPT_MUTE VRAI pour désactiver complètement les messages de la fonction cURL. Supprimé dans cURL 7.15.5 (l'option CURLOPT_RETURNTRANSFER peut être utilisée)
CURLOPT_NETRC VRAI pour lire le fichier ~/.netrc pour le login et le mot de passe du site distant avec lequel la connexion est établie.
CURLOPT_NOBODY VRAI pour exclure le corps de la réponse de la sortie. La méthode de requête est définie sur HEAD. Changer ce paramètre en FAUX ne le change pas en GET.
CURLOPT_NOPROGRESS

VRAI pour désactiver l'indicateur de progression sur les transferts cURL.

Commentaire:

PHP définit automatiquement ce paramètre sur VRAI, modifiez-le uniquement à des fins de débogage.

CURLOPT_NOSIGNAL VRAI pour ignorer toute fonction cURL qui envoie des signaux au processus PHP. Cette option est activée par défaut dans les SAPI multithread pour permettre aux paramètres de délai d'attente de fonctionner correctement.
CURLOPT_POST VRAI pour utiliser HTTP POST standard. Cette méthode POST utilise la normale , couramment utilisé dans les formulaires HTML.
CURLOPT_PUT VRAI pour télécharger un fichier en utilisant la méthode HTTP PUT. Le fichier utilisé doit être paramétré à l'aide des options CURLOPT_INFILE Et CURLOPT_INFILESIZE.
CURLOPT_RETURNTRANSFER VRAI pour renvoyer le résultat du transfert sous forme de chaîne depuis curl_exec() au lieu d'une sortie directe vers le navigateur.
CURLOPT_SAFE_UPLOAD VRAI pour désactiver la prise en charge des préfixes @ pour les fichiers téléchargés dans CURLOPT_POSTFIELDS, ce qui signifie que les valeurs passées avec @ peuvent être transmis en toute sécurité sous forme de champs. Au lieu d'un préfixe, vous pouvez utiliser l'option Fichier CURL d. Ajouté dans PHP 5.5.0 avec la valeur par défaut FAUX. En PHP 5.6.0, il est devenu égal à par défaut VRAI.
CURLOPT_SSL_VERIFYPEER FAUX pour empêcher cURL de vérifier le certificat hôte. Des certificats alternatifs à vérifier peuvent être spécifiés à l'aide du paramètre CURLOPT_CAINFO ou le répertoire avec les certificats spécifiés par le paramètre CURLOPT_CAPATH. La valeur par défaut est VRAI depuis la version 7.10 de cURL. La distribution par défaut est installée à partir de la version 7.10 de cURL.
CURLOPT_TRANSFERTEXT VRAI pour utiliser le mode ASCII pour les transferts FTP. Lors de l'utilisation de LDAP, les données sont renvoyées en texte brut au lieu de HTML. Sur les systèmes Windows, le fil SORTIE STD ne passe pas en mode binaire.
CURLOPT_UNRESTRICTED_AUTH VRAI pour continuer à envoyer le login et le mot de passe lors des redirections (lors de l'utilisation CURLOPT_FOLLOWLOCATION), même si le nom d'hôte change.
CURLOPT_UPLOAD VRAI pour préparer le téléchargement du fichier sur le serveur.
CURLOPT_VERBOSE VRAI pour afficher des informations supplémentaires. Écrit la sortie dans un flux STDERR, ou le fichier spécifié par le paramètre CURLOPT_STDERR.

Pour les valeurs de paramètre d’option suivantes, le paramètre value doit être de type entier:

Paramètre Valeur de consigne Remarques
CURLOPT_BUFFERSIZE La taille du tampon utilisé pour chaque lecture. Cependant, rien ne garantit que cette demande sera complétée. Ajouté dans cURL 7.10.
CURLOPT_CLOSEPOLICY Une des constantes CURLCLOSEPOLICY_*.

Commentaire:

Cette option est obsolète car elle n'a jamais été implémentée dans cURL et ne fonctionnait pas.

Supprimé dans PHP 5.6.0.
CURLOPT_CONNECTTIMEOUT Le nombre de secondes à attendre lors de la tentative de connexion. Utilisez 0 pour attendre indéfiniment.
CURLOPT_CONNECTTIMEOUT_MS Le nombre de millisecondes à attendre lors d'une tentative de connexion. Utilisez 0 pour attendre indéfiniment. Si libcurl est compilé à l'aide du résolveur de noms standard du système, la connexion utilisera toujours une seconde d'attente complète comme délai d'attente, avec un délai d'attente minimum autorisé de 1 seconde. Ajouté dans la version 7.16.2 de cURL. Disponible à partir de PHP 5.2.3.
CURLOPT_DNS_CACHE_TIMEOUT Nombre de secondes pendant lesquelles les enregistrements DNS sont stockés en mémoire. Par défaut, ce paramètre est 120 (2 minutes).
CURLOPT_FTPSSLAUTH Méthode d'authentification FTP (en mode actif) : CURLFTPAUTH_SSL(SSL est vérifié en premier), CURLFTPAUTH_TLS(TLS vérifié en premier) ou CURLFTPAUTH_DEFAULT(cURL décide lui-même). Ajouté dans la version 7.12.2 de cURL.
CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE (par défaut, CURL choisit la version à utiliser), CURL_HTTP_VERSION_1_0 (forcer HTTP/1.0) ou CURL_HTTP_VERSION_1_1 (forcer HTTP/1.1).
CURLOPT_HTTPAUTH

Vous pouvez utiliser l'opérateur au niveau du bit | (ou) combiner plusieurs méthodes ensemble. Dans ce cas, cURL interrogera le serveur pour connaître les méthodes d'autorisation prises en charge et sélectionnera la meilleure.

CURLAUTH_ANY est un alias CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOCIATE | CURLAUTH_NTLM.

CURLAUTH_ANYSAFE est un alias CURLAUTH_DIGEST | CURLAUTH_GSSNEGOCIATE | CURLAUTH_NTLM.

CURLOPT_INFILESIZE Taille de fichier attendue, en octets, lors du téléchargement d'un fichier sur un serveur distant. Veuillez noter que l'utilisation de cette option n'empêchera pas l'envoi de données supplémentaires au-delà de cette valeur, car les données envoyées dépendent du résultat. CURLOPT_READFUNCTION.
CURLOPT_LOW_SPEED_LIMIT Seuil supérieur du taux de transfert de données, en octets par seconde. La vérification a lieu dans CURLOPT_LOW_SPEED_TIME secondes, après quoi PHP considère le transfert trop lent et l'interrompt.
CURLOPT_LOW_SPEED_TIME Le nombre maximum de secondes pendant lesquelles le taux de transfert ne doit pas dépasser CURLOPT_LOW_SPEED_LIMIT, sinon PHP marquera le transfert comme trop lent et l'arrêtera.
CURLOPT_MAXCONNECTS Nombre maximum de connexions persistantes. Lorsque la limite est atteinte, le paramètre est utilisé pour déterminer quelle connexion fermer. CURLOPT_CLOSEPOLICY.
CURLOPT_MAXREDIRS Le nombre maximum de redirections acceptées. Utilisez cette option avec l'option CURLOPT_FOLLOWLOCATION.
CURLOPT_PORT Port de connexion alternatif.
CURLOPT_POSTREDIR Un masque de bits contenant 1 (301 Moved Permanently), 2 (302 Found) et 4 (303 See Other) pour spécifier si la méthode HTTP POST doit être traitée lorsque l'option est activée CURLOPT_FOLLOWLOCATION si le type de redirection spécifié s'est produit. Ajouté dans cURL 7.19.1. Disponible depuis PHP 5.3.2.
CURLOPT_PROTOCOLES

Masque de bits des valeurs CURLPROTO_*. Ce masque limite les protocoles utilisés par libcurl. Cela vous permet de faire fonctionner libcurl avec un grand nombre de protocoles et de limiter l'opération de certains transferts à seulement un sous-ensemble d'entre eux. Par défaut, libcurl utilise tous les protocoles pris en charge. Voir aussi paramètre CURLOPT_REDIR_PROTOCOLS.

Valeurs de protocole valides : CURLPROTO_HTTP , CURLPROTO_HTTPS , CURLPROTO_FTP , CURLPROTO_FTPS , CURLPROTO_SCP , CURLPROTO_SFTP , CURLPROTO_TELNET , CURLPROTO_LDAP , CURLPROTO_LDAPS , CURLPROTO_DICT , CURLPROTO_FILE , C URLPROTO_TFTP, CURLPROTO_ALL

CURLOPT_PROXYAUTH Méthodes d'autorisation HTTP utilisées lors de la connexion à un serveur proxy. Utilisez les mêmes masques de bits que ceux décrits pour le paramètre CURLOPT_HTTPAUTH. Actuellement, seuls CURLAUTH_BASIC et CURLAUTH_NTLM sont pris en charge pour l'autorisation proxy. Ajouté dans la version 7.10.7 de cURL.
CURLOPT_PROXYPORT Le numéro de port du serveur proxy auquel la connexion est établie. Ce numéro peut également être défini à l'aide du paramètre CURLOPT_PROXY.
CURLOPT_PROXYTYPE Soit CURLPROXY_HTTP (par défaut) ou CURLPROXY_SOCKS5 . Ajouté dans cURL 7.10.
CURLOPT_REDIR_PROTOCOLS Masque de bits des valeurs CURLPROTO_*. Ce masque de bits limite les protocoles utilisés par libcurl lors de la redirection (avec le paramètre activé CURLOPT_FOLLOWLOCATION). Cela vous permet de limiter l'ensemble des protocoles utilisés lors de la redirection de certaines transmissions. Par défaut, libcurl prend en charge tous les protocoles sauf FILE et SCP. Dans les versions antérieures à 7.19.4, la redirection était utilisée pour tous les protocoles sans exception. Voir aussi la description du paramètre CURLOPT_PROTOCOLES pour une liste de constantes avec des valeurs de protocole. Ajouté dans la version 7.19.4 de cURL.
CURLOPT_RESUME_FROM Décalage de début de transmission, en octets.
CURLOPT_SSL_VERIFYHOST Utilisez 1 pour vérifier l'existence d'un nom commun dans le certificat SSL. Utilisez 2 pour vérifier que le nom commun existe et correspond également à l'hôte spécifié. Dans un environnement de combat, la valeur de ce paramètre doit être 2 (définie par défaut). La prise en charge de la valeur 1 a été supprimée dans cURL 7.28.1
CURLOPT_SSLVERSION Une des constantes CURL_SSLVERSION_DEFAULT (0), CURL_SSLVERSION_TLSv1 (1), CURL_SSLVERSION_SSLv2 (2), CURL_SSLVERSION_SSLv3 (3), CURL_SSLVERSION_TLSv1_0 (4), CURL_SSLVERSION_TLSv1_1(5) ou CURL_SSLVERSION_TLSv1_2 (6).
CURLOPT_TIMECONDITION Méthode d'interprétation des paramètres CURLOPT_TIMEVALUE. Utilisez CURL_TIMECOND_IFMODSINCE pour renvoyer la page uniquement si elle a changé depuis l'heure spécifiée dans le paramètre CURLOPT_TIMEVALUE. Si la page n'a pas été modifiée, le titre sera renvoyé "304 non modifié", ce qui implique que le paramètre CURLOPT_HEADER installé dans VRAI. Utilisez CURL_TIMECOND_IFUNMODSINCE pour l'effet inverse. La valeur par défaut est CURL_TIMECOND_IFMODSINCE.
CURLOPT_TIMEOUT Le nombre maximum de secondes autorisées pour l'exécution des fonctions cURL.
CURLOPT_TIMEOUT_MS Le nombre maximum de millisecondes autorisées pour l'exécution des fonctions cURL. Si libcurl est construit à l'aide du résolveur de nom de système normal, alors cette durée de connexion utilisera toujours des délais d'attente de second arrondi, avec un délai d'attente minimum autorisé d'une seconde. Ajouté dans la version 7.16.2 de cURL. Disponible à partir de PHP 5.2.3.
CURLOPT_TIMEVALUE Nombre de secondes depuis le 1er janvier 1970. Ce temps sera utilisé par le paramètre CURLOPT_TIMECONDITION. Par défaut, le paramètre CURL_TIMECOND_IFMODSINCE est utilisé.
CURLOPT_MAX_RECV_SPEED_LARGE Si la vitesse de téléchargement dépasse cette valeur (précisée en octets par seconde) en moyenne sur l'ensemble du transfert, le téléchargement sera mis en pause pour maintenir la vitesse moyenne inférieure ou égale à ce paramètre. Par défaut, la vitesse n'est pas limitée.
CURLOPT_MAX_SEND_SPEED_LARGE Si l'upload vers le serveur dépasse cette valeur (précisée en octets par seconde) en moyenne pendant toute la durée du transfert, l'upload sera mis en pause pour maintenir une vitesse moyenne inférieure ou égale à ce paramètre. Par défaut, la vitesse n'est pas limitée. Ajouté dans la version 7.15.5 de cURL. Disponible à partir de PHP 5.4.0.
CURLOPT_SSH_AUTH_TYPES Un masque de bits composé d'une ou plusieurs constantes : CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD. Installer CURLSSH_AUTH_ANY pour que libcurl en choisisse un indépendamment. Ajouté dans cURL 7.16.1.
CURLOPT_IPRESOLVE Permet à une application de sélectionner le type d'adresse IP avec laquelle le nom d'hôte est déterminé. Cela est nécessaire si vous utilisez un nom d'hôte dérivé de plusieurs versions de l'adresse IP. Les valeurs possibles pourraient être CURL_IPRESOLVE_WHATEVER, CURL_IPRESOLVE_V4, CURL_IPRESOLVE_V6, et par défaut CURL_IPRESOLVE_WHATEVER. Ajouté dans cURL 7.10.8.

Pour les valeurs de paramètre d’option suivantes, le paramètre value doit être de type chaîne:

Paramètre Valeur de consigne Remarques
CURLOPT_CAINFO Le nom d'un fichier contenant un ou plusieurs certificats par rapport auxquels les nœuds seront vérifiés. Ce paramètre n'a de sens que lorsqu'il est utilisé conjointement avec CURLOPT_SSL_VERIFYPEER. Nécessite un chemin absolu.
CURLOPT_CAPATH Un répertoire contenant plusieurs certificats CA. Utilisez cette option conjointement avec CURLOPT_SSL_VERIFYPEER.
CURLOPT_COOKIE Contenu de l'en-tête "Biscuit:", utilisé dans la requête HTTP. Veuillez noter que plusieurs cookies sont séparés par un point-virgule suivi d'un espace (par exemple, " fruit = pomme ; couleur = rouge")
CURLOPT_COOKIEFILE Le nom du fichier contenant les cookies. Ce fichier doit être au format Netscape ou simplement des en-têtes HTTP écrits dans le fichier. Si une chaîne vide est transmise comme nom de fichier, les cookies ne seront pas enregistrés, mais leur traitement sera toujours activé.
CURLOPT_COOKIEJAR Le nom du fichier dans lequel seront enregistrés tous les cookies internes du transfert en cours après la fermeture du handle, par exemple après l'appel de curl_close.
CURLOPT_CUSTOMREQUEST

Méthode de demande personnalisée utilisée à la place "OBTENIR" ou "TÊTE" lors d'une requête HTTP. Ceci est utile pour les requêtes "SUPPRIMER" ou d'autres requêtes HTTP plus rares. Les significations correctes seraient des mots comme "OBTENIR", "POSTE", "CONNECTER" et ainsi de suite; ceux. N'entrez pas ici la totalité de la ligne de requête HTTP. Par exemple, une indication "OBTENIR /index.html HTTP/1.0\r\n\r\n" aura tort.

Commentaire:

N'utilisez pas cette fonctionnalité tant que vous n'êtes pas sûr que le serveur prend en charge ce type de requête.

CURLOPT_EGDSOCKET Comme CURLOPT_RANDOM_FILE, sauf que le nom de fichier est défini sur le socket Entropy Gathering Daemon.
CURLOPT_ENCODING Contenu de l'en-tête « Accepter l'encodage : ». Cela permet de décoder la requête. Les encodages pris en charge sont "identité", "dégonfler" Et "gzip". Si une chaîne vide est passée, "" , un en-tête contenant tous les types de codage pris en charge est envoyé. Ajouté dans cURL 7.10.
CURLOPT_FTPPORT La valeur qui sera utilisée pour déterminer l'adresse IP de la commande FTP "PORT". La commande "PORT" indique au serveur à quelle adresse IP il doit se connecter. Il peut s'agir d'une adresse IP, d'un nom d'hôte, d'un nom d'interface réseau (sous Unix) ou simplement de "-" pour utiliser l'adresse IP du système par défaut.
CURLOPT_INTERFACE Le nom de l'interface réseau à utiliser. Il peut s'agir d'un nom d'interface, d'une adresse IP ou d'un nom d'hôte.
CURLOPT_KEYPASSWD Mot de passe requis pour utiliser la clé privée CURLOPT_SSLKEY ou CURLOPT_SSH_PRIVATE_KEYFILE. Ajouté dans cURL 7.16.1.
CURLOPT_KRB4LEVEL Niveau de sécurité KRB4 (Kerberos 4). Chacune des valeurs suivantes (par ordre de la plus faible à la plus forte) est correcte : "clair", "sûr", "confidentiel", "privé".. Si la chaîne spécifiée diffère des valeurs données, la valeur sera utilisée "privé". Définir cette option sur NUL désactivera complètement la sécurité KRB4. Pour le moment, la sécurité KRB4 ne fonctionne qu'avec les transactions FTP.
CURLOPT_POSTFIELDS Toutes les données transmises dans une requête HTTP POST. Pour transférer un fichier, précisez avant le nom du fichier @ , et utilisez également le chemin complet du fichier. Le type de fichier peut également être spécifié en utilisant le format " ;type=type MIME" après le nom du fichier. Ce paramètre peut être transmis sous forme de chaîne codée en URL, comme " para1=val1¶2=val2&...", et sous la forme d'un tableau dont les clés seront les noms des champs, et les valeurs seront leur contenu. Si valeur est un tableau, l'en-tête Type de contenu sera réglé sur données multipart/formulaire. À partir de PHP 5.2.0, lors du transfert de fichiers avec le préfixe @ , la valeur doit être un tableau. Depuis PHP 5.5.0, préfixe @ est obsolète et les fichiers peuvent être envoyés en utilisant Fichier CURL. Préfixe @ peut être désactivé pour autoriser les valeurs commençant par @ en définissant l'option CURLOPT_SAFE_UPLOAD dans le sens VRAI.
CURLOPT_PROXY Proxy HTTP via lequel les requêtes seront acheminées.
CURLOPT_PROXYUSERPWD Login et mot de passe écrits dans le formulaire ":" , utilisé lors de la connexion via un proxy.
CURLOPT_RANDOM_FILE Le nom du fichier utilisé pour initialiser le générateur de nombres aléatoires pour SSL.
CURLOPT_RANGE Plage de données à télécharger, au format "X-Y", et X ou Y peuvent être omis. Le protocole HTTP prend également en charge la transmission de plusieurs plages séparées par des virgules, elles sont spécifiées au format "X-Y, N-M".
CURLOPT_REFERER Contenu de l'en-tête "Référent :", qui sera utilisé dans la requête HTTP.
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 Une chaîne contenant 32 chiffres hexadécimaux. La chaîne doit être une somme de contrôle MD5 de la clé publique de l'ordinateur distant, et libcurl réinitialisera la connexion à l'hôte distant jusqu'à ce que la somme de contrôle corresponde à la clé publique. Cette option concerne uniquement le transfert de données via SCP et SFTP. Ajouté dans cURL 7.17.1.
CURLOPT_SSH_PUBLIC_KEYFILE Le nom de fichier de votre clé publique. S'il n'est pas spécifié, libcurl utilise par défaut le fichier $HOME/.ssh/id_dsa.pub si la variable d'environnement HOME est définie et le fichier "id_dsa.pub" dans le répertoire courant si la variable d'environnement HOME n'est pas définie. Ajouté dans cURL 7.16.1.
CURLOPT_SSH_PRIVATE_KEYFILE Le nom de fichier de votre clé privée. S'il n'est pas spécifié, libcurl utilise par défaut le fichier $HOME/.ssh/id_dsa si la variable d'environnement HOME est définie et le fichier "id_dsa" dans le répertoire courant si la variable d'environnement HOME n'est pas définie. Si le fichier est protégé par mot de passe, définissez le mot de passe en utilisant CURLOPT_KEYPASSWD. Ajouté dans cURL 7.16.1.
CURLOPT_SSL_CIPHER_LIST Liste des chiffrements utilisés dans les transferts SSL. Par exemple, RC4-SHA Et TLSv1 sont des listes de chiffres valides.
CURLOPT_SSLCERT Le nom d'un fichier avec un certificat PEM correctement formaté.
CURLOPT_SSLCERTPASSWD Mot de passe requis pour utiliser le certificat CURLOPT_SSLCERT.
CURLOPT_SSLCERTTYPE Format du certificat. Formats pris en charge "PEM"(défaut), "DER" Et "FRE". Ajouté dans la version 7.9.3 de cURL.
CURLOPT_SSLENGINE L'ID du moteur de chiffrement pour la clé privée SSL spécifiée dans le paramètre CURLOPT_SSLKEY.
CURLOPT_SSLENGINE_DEFAULT L'identifiant du mécanisme de chiffrement utilisé pour les opérations de chiffrement asymétrique.
CURLOPT_SSLKEY Le nom du fichier de clé privée SSL.
CURLOPT_SSLKEYPASSWD

Le mot de passe secret requis pour utiliser la clé privée SSL spécifiée par le paramètre CURLOPT_SSLKEY.

Commentaire:

Puisque ce paramètre contient un mot de passe précieux, pensez à conserver ce script PHP en lieu sûr.

CURLOPT_SSLKEYTYPE Le type de clé privée SSL spécifié dans le paramètre CURLOPT_SSLKEY. Les types de clés suivants sont pris en charge : "PEM"(défaut), "DER" Et "FRE".
CURLOPT_URL URL téléchargeable. Ce paramètre peut également être défini lors de l'initialisation d'une session à l'aide de curl_init().
CURLOPT_USERAGENT Contenu de l'en-tête "Agent utilisateur: ", envoyé dans une requête HTTP.
CURLOPT_USERPWD Login et mot de passe utilisés lors de la connexion, précisés au format ":" .

Pour les valeurs de paramètre d'option suivantes, le paramètre value doit être un tableau :

Paramètre Valeur de consigne Remarques
CURLOPT_HTTP200ALIASES Un tableau de réponses HTTP 200 qui seront traitées comme des réponses correctes plutôt que comme des réponses erronées. Ajouté dans la version 7.10.3 de cURL.
CURLOPT_HTTPEADER Un tableau d'en-têtes HTTP définis, au format array("Content-type: text/plain", "Content-length: 100")
CURLOPT_POSTQUOTE Un tableau de commandes FTP exécutées sur le serveur une fois qu'une requête FTP est terminée.
CURLOPT_QUOTE Un tableau de commandes FTP exécutées sur le serveur avant d'effectuer une requête FTP.

Pour les valeurs de paramètre d'option suivantes, le paramètre value doit être un handle de flux (renvoyé, par exemple, par la fonction fopen()):

Paramètre Valeur de consigne
CURLOPT_FILE Le fichier dans lequel le résultat du transfert sera écrit. Flux de sortie par défaut SORTIE STD(fenêtre du navigateur).
CURLOPT_INFILE Le fichier à partir duquel les données doivent être lues lors du téléchargement sur le serveur.
CURLOPT_STDERR Fichier de sortie d'erreur alternatif utilisé à la place du flux d'erreurs STDERR.
CURLOPT_WRITEHEADER Le fichier dans lequel seront écrits les en-têtes de l'opération en cours.

Pour les valeurs de paramètre d'option suivantes, le paramètre value doit être un nom de fonction ou une fermeture valide :

Paramètre Valeur de consigne
CURLOPT_HEADERFUNCTION La fonction de rappel prend deux paramètres. Le premier paramètre est le handle cURL, le deuxième paramètre est une chaîne contenant les en-têtes à écrire. Les en-têtes doivent être écrits à l'aide de cette fonction de rappel. Doit renvoyer le nombre d'octets écrits.
CURLOPT_PASSWDFUNCTION La fonction de rappel prend trois paramètres. Le premier paramètre est le handle cURL, le deuxième paramètre est la chaîne d'invite du mot de passe et le troisième paramètre est la longueur maximale du mot de passe. Doit renvoyer une chaîne contenant le mot de passe.
CURLOPT_PROGRESSFUNCTION

La fonction de rappel prend cinq paramètres. Le premier est le descripteur cURL, le deuxième est le nombre total d'octets censés être téléchargés depuis le serveur, le troisième est le nombre d'octets déjà téléchargés, le quatrième est le nombre total d'octets censés être envoyés au serveur et le cinquième est le nombre d'octets déjà envoyés.

Commentaire:

La fonction de rappel n'est appelée que si l'option CURLOPT_NOPROGRESS mettre à la valeur FAUX.

Vous pouvez renvoyer une valeur non nulle pour annuler le transfert. Dans ce cas, une erreur sera affichée CURLE_ABORTED_BY_CALLBACK.

CURLOPT_READFUNCTION La fonction de rappel prend trois paramètres. Le premier paramètre est le handle cURL, le deuxième paramètre est la ressource de flux transmise à cURL via l'option CURLOPT_INFILE, et le troisième paramètre est la quantité maximale autorisée de données à lire. La fonction de rappel doit renvoyer une chaîne d'une longueur ne dépassant pas la quantité de données demandée, généralement en lisant à partir de la ressource de streaming transmise. Doit renvoyer une chaîne vide pour signaler la fin du fichier EOF.
CURLOPT_WRITEFUNCTION La fonction de rappel prend deux paramètres. Le premier paramètre est le handle cURL et le deuxième paramètre est la chaîne contenant les données à écrire. Les données doivent être enregistrées à l'aide de cette fonction. Il doit renvoyer le nombre exact d'octets écrits, sinon le téléchargement sera interrompu avec une erreur.

Autres significations :

Valeurs de retour

Retour VRAI après avoir réussi ou FAUX en cas d'erreur.

Liste des changements

Version Description
5.6.0 Option CURL_SAFE_UPLOAD a maintenant une valeur par défaut de VRAI.
5.6.0 Option supprimée CURLOPT_CLOSEPOLICY et ses significations associées.
5.5.0 La ressource cURL est ajoutée comme premier argument de la fonction de rappel CURLOPT_PROGRESSFUNCTION.
5.5.0 Option ajoutée CURLOPT_SHARE.
5.3.0 Option ajoutée CURLOPT_PROGRESSFUNCTION.
5.2.10 Options ajoutées CURLOPT_PROTOCOLES Et CURLOPT_REDIR_PROTOCOLS.
5.1.0 Options ajoutées CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH Et CURLOPT_TIMECONDITION.
5.0.0 Options ajoutées CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE Et CURLOPT_HTTP200ALIASES.

Exemples

Exemple #1 Initialiser une session CURL et charger une page Web

// crée une nouvelle ressource cURL
$ch = curl_init();

/* http://localhost/upload.php :
print_r($_POST);
print_r($_FILES);
*/

$ch = curl_init();

$data = array("name" => "Foo" , "file" => "@/home/user/test.png" );

Curl_setopt($ch, CURLOPT_URL, "http://localhost/upload.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

Curl_exec($ch);
?>

Le résultat de l'exécution de cet exemple :

Tableau ( => Foo) Tableau ( => Tableau ( => test.png => image/png => /tmp/phpcpjNeQ => 0 => 279))

Remarques

Commentaire:

Passer un tableau à CURLOPT_POSTFIELDS code les données comme données multipart/formulaire, alors que transmettre une chaîne codée en URL encodera les données comme application/x-www-form-urlencoded.

CURL est un outil de ligne de commande permettant de recevoir ou d'envoyer des données à l'aide de la syntaxe URL.

Si vous travaillez dans un service d'assistance, vous devriez pouvoir utiliser les commandes cURL pour dépanner les applications Web. cURL est un utilitaire multiplateforme pour Windows, MAC et UNIX.
Vous trouverez ci-dessous quelques exemples de syntaxe couramment utilisés.

1. Vérifiez si l'URL peut être connectée

Si vous êtes sur un système UNIX et que vous essayez de vous connecter à une URL externe, vérifiez d'abord que vous pouvez accéder à la ressource via curl . Pour ce faire, utilisez la commande suivante :

# curl votreurl.com

2. Enregistrement de la sortie URL/URI dans un fichier

# curl votreurl.com > votreurl.html

Par exemple:

# curl 74.125.68.100 >/tmp/google.html

L'exemple ci-dessus enregistrera tout le contenu de l'hôte 74.125.68.100 dans le fichier /tmp/google.html.

3. Afficher l'en-tête de demande et de réponse

Si vous voulez vous assurer de recevoir l'en-tête de requête et de réponse attendu, utilisez la commande suivante :

# curl -v votreurl.com

Par exemple:

# curl -v 74.125.68.100 * Sur le point de se connecter() au port 74.125.68.100 80 (#0) * Essayer 74.125.68.100... * Connecté au port 74.125.68.100 (74.125.68.100) 80 (#0) > GET / HTTP/1.1 > Agent utilisateur : curl/7.29.0 >Hôte : 74.125.68.100 >Accepter : */* >< HTTP/1.1 200 OK

4. Téléchargez à vitesse maximale

Si vous souhaitez savoir combien de temps il faut pour télécharger à une certaine vitesse, utilisez la commande suivante :

# curl --taux-limite 2000B

Par exemple:

# curl --limit-rate 2000B 74.125.68.100

5. Utiliser un proxy pour se connecter

Si vous devez vérifier si un serveur proxy peut être utilisé, utilisez la syntaxe suivante :

# curl --proxyvotreproxy:port http://votreurl.com

6. Vérifier l'URL en saisissant un titre

Pour résoudre un problème spécifique, vous pouvez utiliser Curl pour insérer vos données dans l'en-tête. Prenons l'exemple de requête suivant avec Content-Type :

# curl --header "Content-Type : application/json" http://yoururl.com

Nous demandons à curl de transmettre le Content-Type comme application/json dans l'en-tête de la requête.

7. Ajouter un en-tête supplémentaire

Vous pouvez ajouter un en-tête à une requête en utilisant la syntaxe -header.

# curl --header « X-CustomHeader : GeekFlare » http://yoururl.com

Par exemple:

# curl -v --header "X-CustomHeader: GeekFlare" 74.125.68 * Sur le point de se connecter() au port 74.125.68.100 80 (#0) * Essayer 74.125.68.100... * Connecté à 74.125.68.100 (74.125. 68.100) port 80 (#0) > GET / HTTP/1.1 > Agent utilisateur : curl/7.29.0 > Hôte : 74.125.68.100 > Accepter : */* > X-CustomHeader : GeekFlare >< HTTP/1.1 200 OK

8. Ouvrez uniquement l'en-tête de réponse

Si vous souhaitez vérifier rapidement l'en-tête de réponse, vous pouvez utiliser la syntaxe suivante pour ce faire.

# curl --head http://yoururl.com

# curl -I 74.125.68.100 HTTP/1.1 200 OK Date : dimanche 18 janvier 2015 08:31:22 GMT Expire : -1 Contrôle du cache : privé, max-age=0 Type de contenu : texte/html ; charset=ISO-8859-1 Set-Cookie : NID=67=SpnXKTDUhw7QGakIeLxmDSF ; expire = lundi 20 juillet 2015 08:31:22 GMT ; chemin=/; domaine=.; HttpOnly P3P : CP="Ceci n'est pas une politique P3P ! Consultez http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 pour plus d'informations." Serveur : gws X-XSS-Protection : 1 ; mode=block X-Frame-Options : SAMEORIGIN Protocole alternatif : 80:quic,p=0.02 Transfer-Encoding : chunked Accept-Ranges : aucun Varie : Accept-Encoding #

9. Connectez l'adresse HTTPS/SSLURL et ignorez toutes les erreurs de certificat SSL

Si vous devez accéder à une URL https qui génère une erreur de certificat en raison d'une incompatibilité de nom d'hôte, vous pouvez utiliser la syntaxe suivante.

curl --insecure https://yoururl.com

10. Connectez-vous en utilisant un protocole spécifique (SSL/TLS)

Pour vous connecter à une URL en utilisant SSL V2/V3 ou TLS uniquement, utilisez la syntaxe suivante.

Pour vous connecter via SSLV2 :

# curl --sslv2 https://yoururl.com

Pour vous connecter via SSLV3 :

# curl --sslv3 https://yoururl.com

Pour vous connecter via TLS :

# curl --tlsv1 https://yoururl.com

11. Télécharger le fichier depuis le serveur FTP

À l'aide de cURL, vous pouvez télécharger un fichier depuis un serveur FTP en fournissant un nom d'utilisateur et un mot de passe.

# curl -u utilisateur: mot de passe -O ftp://ftpurl/style.css

Vous pouvez toujours utiliser "-v" avec n'importe quelle syntaxe pour afficher en mode détaillé.

Utiliser cURL en ligne

Oui c'est possible. Vous pouvez exécuter cURL à distance à l'aide des outils suivants.
Online CURL est un outil compact permettant d'extraire une URL en ligne et d'ajouter les paramètres suivants.

Connect-timeout --cookie --data --header --head --location --max-time --proxy --request --user --url --user-agent

Exemple de sortie :

Générateur de ligne de commande cURL – Vous permet de créer une commande cURL que vous pouvez utiliser pour saisir des informations dans l'interface utilisateur.

Avez-vous aimé l'article? Partager avec des amis: