PHP CURL - Fonctions et exemples d'utilisation. Outils de ligne de commande pour les paramètres de ligne de commande de développeur Web CURL

CURL est un package logiciel composé d'un utilitaire de ligne de commande et d'un utilitaire de bibliothèque de données à l'aide de la syntaxe d'URL.

Curl enregistre une variété de protocoles, dont dict, fichier, ftp, FTPS, gopher, http, https, IMAP, imps, LDAP, LDAPS, POP3, POP3, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET et Tftp.

Charger un fichier séparé
La commande suivante recevra le contenu de l'URL et l'affiche dans la sortie standard (c'est-à-dire dans votre terminal).

CURL HTTPS://MI-AL.RU/\u003e MI-AL.HTM% Total %% reçu% xferd Vitesse moyenne Temps Temps Durée Délai de téléchargement Total dépensé de gauche 100 14378 0 14378 0 0 5387 0 -: - : - - 0:00:02 -: - :: 5387

Sauvegarde de la sortie CURL au fichier
Nous pouvons enregistrer le résultat de la commande CURL à un fichier en utilisant -O / O Options.
  • -o. (o registre inférieur) Le résultat sera enregistré dans le fichier spécifié dans l'invite de commande.
  • -O. (O Top Registre) Le nom du fichier sera pris à partir de l'URL et sera utilisé pour enregistrer les données obtenues.

$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/getext.html

Maintenant, la page GetText.html sera enregistrée dans le fichier avec le nom 'mygetText.html'. Lorsque CURL fonctionne avec option -o, il affiche l'échelle de progression comme suit.

% Total %% reçu% xferd Temps de temps de temps de temps de temps actuel Dallopload Téléchargement Total dépensé de gauche 66 1215k 66 805k 0 0 33060 0:00:37 0:00:24 0:00:13 45900 100 1215K 100 1215K 0 0 0 39474 0 0:00:31 0:00:31 -: :: 68987

Lorsque vous utilisez Curl -o (o Upper Register), il enregistre en soi le contenu sur le fichier appelé "gettext.html" sur la machine locale.

$ CURL -O http://www.gnu.org/software/getText/manual/getext.html

Remarque: lorsque les boucles doivent écrire des données dans la borne, elle désactive l'échelle de progression afin qu'il n'y ait aucune confusion dans les données imprimées. Nous pouvons utiliser des options '\u003e' | -o '| -o' -o 'pour transférer les résultats du fichier.

Sélection de plusieurs fichiers en même temps
Nous pouvons télécharger plusieurs fichiers à la fois, définir toute l'URL de la ligne de commande.

CURL -O URL1 -O URL2

La commande ci-dessous téléchargera à la fois index.html et gettext.html et enregistrera les mêmes noms dans le répertoire actuel.

Curl -o http://www.gnu.org/software/gettext/manual/html_node/index.html -o http://www.gnu.org/software/getText/manual/getext.html

Veuillez noter que lorsque nous téléchargons plusieurs fichiers d'un serveur, comme indiqué ci-dessus, CURL essaiera de réutiliser la connexion.

Suivez l'emplacement HTTP dans les titres avec l'option -L
Par défaut, CURL ne suit pas l'emplacement HTTP dans les titres (redirections). Lorsque la page Web demandée est déplacée vers un autre emplacement, la réponse correspondante sera transférée dans les en-têtes d'emplacement HTTP.
Par exemple, lorsque quelqu'un imprime google.com dans une barre de navigateur de son pays, elles seront automatiquement redirigées vers "Google.co.xx". Ceci est fait sur la base de l'en-tête HTTP Emplacement, comme indiqué ci-dessous.

Curl https://www.google.com/?gws_rd\u003dSSL.

302 déplacé.

302 déplacé.

Le document a été déplacé ici.

La conclusion ci-dessus dit que le document demandé a été transféré à '

Caché des invités

.
Vous pouvez spécifier CURL pour suivre les redirects, cela se fait à l'aide de l'option -L, comme indiqué ci-dessous. Maintenant, le code source HTML sera téléchargé

Caché des invités

.

CURL -L https://www.google.com/?gws_rd\u003dssl

Correction de l'injection précédente

Utilisation de l'option -C, vous pouvez continuer à télécharger, qui a été arrêté pour une raison quelconque. Il sera utile lors de la coupe du chargement de grands fichiers.
Si nous disons '-c -', alors Curl recherchera, à partir de quel endroit pour reprendre le téléchargement. Nous pouvons également définir '-c<смещение>'. Un décalage d'octet prédéterminé sera ignoré dès le début du fichier source.
Commencez une grosse botte avec CURL et appuyez sur Ctrl-C pour vous arrêter au milieu du téléchargement.

$ CURL -O http://www.gnu.org/software/getText/manual/getext.html ############## 20.1%

Le téléchargement a été arrêté de 20,1%. Utilisation de CURL -C - "Nous pouvons continuer à télécharger à partir de l'endroit où nous nous sommes arrêtés. Maintenant, téléchargez pour continuer de 20,1%.

Curl -C - -O http://www.gnu.org/software/getText /Mark/getext.html ################ 21.1%

Limite de vitesse de transfert de données
Vous pouvez limiter la quantité d'option de vitesse de transfert de données -LIMIT-Taux. Vous pouvez transmettre la vitesse maximale comme argument.

$ Curl - Tarif de 1000b -o http://www.gnu.org/software/getText/manual/getext.html

La commande ci-dessus limitera le taux de transfert de 1000 octets / seconde. Curl peut utiliser la vitesse au-dessus des pics. Mais la vitesse moyenne sera d'environ 1000 octets / seconde.
L'indicateur de progression est présenté ci-dessous pour la commande présentée ci-dessus. Vous pouvez voir cette vitesse actuelle dans la superficie de 1000 octets.

% Total %% reçu% xferd Temps de temps de temps de temps de temps actuel Dallopload Total passé Vitesse de gauche 1 1215K 1 13601 0 0 0 957 0 0 0 0 0 0 0 0:1 0:00:14 0:21:26 999 1 1215K 1 14601 0 0 960 0 00:21:36 0:00:15 0:21:21 0:21:21 999 1 1215k 1 15601 0 0 962 0 0 0:01:34 0:00:16 0:218 999

Fichier de téléchargement uniquement s'il est modifié pour / après une heure donnée
Vous pouvez obtenir des fichiers qui ont été changés après un certain temps en utilisant l'option -z en boucle. Cela fonctionnera pour FTP et pour HTTP.

La commande ci-dessus téléchargera YY.HTML uniquement si elle a changé plus tard que la date et l'heure spécifiées.

La commande ci-dessus téléchargera Fichier de fichier.html s'il est remplacé par une date et une heure donnée. Dial 'Man curl_getDate' Pour en savoir plus sur diverses syntaxes prises en charge pour les expressions de date.

Passage de l'authentification HTTP dans CURL
Parfois, les sites Web nécessitent un nom d'utilisateur et un mot de passe pour afficher leur contenu. À l'aide de l'option -u, vous pouvez transférer ces informations d'identification du CURL sur le serveur Web, comme indiqué ci-dessous.

$ CURL -U Nom d'utilisateur: URL de mot de passe

Remarque: Par défaut, CURL utilise l'authentification HTTP de base. Nous pouvons définir d'autres méthodes d'authentification à l'aide -ntlm | -Digérer.


CURL peut également être utilisé pour télécharger des fichiers à partir de serveurs FTP. Si le chemin FTP spécifié est un répertoire, la liste des fichiers par défaut est affichée.

$ CURL -U FTPUser: FTPPPASS -O FTP: //FTP_SERVER/Public_html/XSS.php

La commande ci-dessus téléchargera le fichier XSS.PHP à partir du serveur FTP et l'enregistre dans le répertoire local.

$ CURL -U FTPuer: FTPPASS -O FTP: // FTP_SERVER / PUBLIC_HTML /

Ici, l'URL fait référence au répertoire. Par conséquent, CURL effectuera une liste de fichiers et de répertoires en fonction d'une adresse URL spécifiée.


Curl prend en charge les gammes spécifiées dans l'URL. Lorsque la plage est donnée, les fichiers correspondants de cette plage seront téléchargés. Il sera utile lors de la chargement de paquets à partir de miroirs de sites FTP.

$ curl ftp://ftp.uk.debian.org/debian/pool/main//

La commande ci-dessus établira une liste de tous les packages dans la plage A-Z du terminal.

Déchargement de fichiers sur le serveur FTP
Curl peut également être utilisé pour décharger sur le serveur FTP avec l'option -t.

$ CURL -U FTPUser: FTPPASS -T MYFILE.TXT FTP://FTP.TESTSERVER.COM

La commande ci-dessus déchargera le fichier nommé myfile.txt sur le serveur FTP. Vous pouvez également décharger plusieurs fichiers à la fois avec des bandes.

$ CURL -U FTPUser: FTPPASS -T "(Fichier1, File2)" FPC://ftp.estSserver.com

Éventuellement, nous pouvons utiliser "." Pour obtenir de l'entrée standard et la transférer sur une machine distante.

$ CURL -U FTPUser: FTPPass -T - FTP://ftp.TestSserver.com/myfile_1.txt

La commande ci-dessus recevra une sortie de l'utilisateur à partir d'une entrée standard et enregistrera le contenu sur le serveur FTP sous le nom 'myFile_1.txt'.
Vous pouvez définir '-t' pour chaque URL, et chaque fichier d'adresse de paire déterminera quoi décharger

Plus d'informations avec une augmentation de l'option verbale et de trace
Vous pouvez découvrir ce qui se passe à l'aide de l'option -v. L'option -v inclut le mode verbal et les détails d'impression.

Curl -v https://www.google.co.th/?gws_rd\u003dssl.

L'équipe ci-dessus affichera ce qui suit

* URL reconstruite à: https://www.google.co.th/?gws_rd\u003dssl * Nom d'hôte n'a pas été trouvé dans le cache DNS * essayant 27.123.17.49 ... * Connecté à www.google.co.th (27.123. 17.49) Port 80 (n ° 0)\u003e Obtenir / http / 1.1\u003e User-Agent: Curl / 7.38.0\u003e Host: www.google.co.th\u003e Accepter: * / *\u003e< HTTP/1.1 200 OK < Date: Fri, 14 Aug 2015 23:07:20 GMT < Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=windows-874 < P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." * Server gws is not blacklisted < Server: gws < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < Set-Cookie: PREF=ID=1111111111111111:FF=0:TM=1439593640:LM=1439593640:V=1:S=FfuoPPpKbyzTdJ6T; expires=Sun, 13-Aug-2017 23:07:20 GMT; path=/; domain=.google.co.th ... ... ...

Si vous avez besoin d'informations plus détaillées, vous pouvez utiliser l'option -Trace. L'option -Trace inclura une vidage complète de traçabilité toutes les données entrantes / sortantes pour un fichier spécifié.



CURL est un package logiciel composé d'un utilitaire de ligne de commande et d'un utilitaire de bibliothèque de données à l'aide de la syntaxe d'URL.

Curl enregistre une variété de protocoles, dont dict, fichier, ftp, FTPS, gopher, http, https, IMAP, imps, LDAP, LDAPS, POP3, POP3, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET et Tftp.

Charger un fichier séparé
La commande suivante recevra le contenu de l'URL et l'affiche dans la sortie standard (c'est-à-dire dans votre terminal).

CURL HTTPS://MI-AL.RU/\u003e MI-AL.HTM% Total %% reçu% xferd Vitesse moyenne Temps Temps Durée Délai de téléchargement Total dépensé de gauche 100 14378 0 14378 0 0 5387 0 -: - : - - 0:00:02 -: - :: 5387

Sauvegarde de la sortie CURL au fichier
Nous pouvons enregistrer le résultat de la commande CURL à un fichier en utilisant -O / O Options.
  • -o. (o registre inférieur) Le résultat sera enregistré dans le fichier spécifié dans l'invite de commande.
  • -O. (O Top Registre) Le nom du fichier sera pris à partir de l'URL et sera utilisé pour enregistrer les données obtenues.

$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/getext.html

Maintenant, la page GetText.html sera enregistrée dans le fichier avec le nom 'mygetText.html'. Lorsque CURL fonctionne avec option -o, il affiche l'échelle de progression comme suit.

% Total %% reçu% xferd Temps de temps de temps de temps de temps actuel Dallopload Téléchargement Total dépensé de gauche 66 1215k 66 805k 0 0 33060 0:00:37 0:00:24 0:00:13 45900 100 1215K 100 1215K 0 0 0 39474 0 0:00:31 0:00:31 -: :: 68987

Lorsque vous utilisez Curl -o (o Upper Register), il enregistre en soi le contenu sur le fichier appelé "gettext.html" sur la machine locale.

$ CURL -O http://www.gnu.org/software/getText/manual/getext.html

Remarque: lorsque les boucles doivent écrire des données dans la borne, elle désactive l'échelle de progression afin qu'il n'y ait aucune confusion dans les données imprimées. Nous pouvons utiliser des options '\u003e' | -o '| -o' -o 'pour transférer les résultats du fichier.

Sélection de plusieurs fichiers en même temps
Nous pouvons télécharger plusieurs fichiers à la fois, définir toute l'URL de la ligne de commande.

CURL -O URL1 -O URL2

La commande ci-dessous téléchargera à la fois index.html et gettext.html et enregistrera les mêmes noms dans le répertoire actuel.

Curl -o http://www.gnu.org/software/gettext/manual/html_node/index.html -o http://www.gnu.org/software/getText/manual/getext.html

Veuillez noter que lorsque nous téléchargons plusieurs fichiers d'un serveur, comme indiqué ci-dessus, CURL essaiera de réutiliser la connexion.

Suivez l'emplacement HTTP dans les titres avec l'option -L
Par défaut, CURL ne suit pas l'emplacement HTTP dans les titres (redirections). Lorsque la page Web demandée est déplacée vers un autre emplacement, la réponse correspondante sera transférée dans les en-têtes d'emplacement HTTP.
Par exemple, lorsque quelqu'un imprime google.com dans une barre de navigateur de son pays, elles seront automatiquement redirigées vers "Google.co.xx". Ceci est fait sur la base de l'en-tête HTTP Emplacement, comme indiqué ci-dessous.

Curl https://www.google.com/?gws_rd\u003dSSL.

302 déplacé.

302 déplacé.

Le document a été déplacé ici.

La conclusion ci-dessus dit que le document demandé a été transféré à '

Caché des invités

.
Vous pouvez spécifier CURL pour suivre les redirects, cela se fait à l'aide de l'option -L, comme indiqué ci-dessous. Maintenant, le code source HTML sera téléchargé

Caché des invités

.

CURL -L https://www.google.com/?gws_rd\u003dssl

Correction de l'injection précédente

Utilisation de l'option -C, vous pouvez continuer à télécharger, qui a été arrêté pour une raison quelconque. Il sera utile lors de la coupe du chargement de grands fichiers.
Si nous disons '-c -', alors Curl recherchera, à partir de quel endroit pour reprendre le téléchargement. Nous pouvons également définir '-c<смещение>'. Un décalage d'octet prédéterminé sera ignoré dès le début du fichier source.
Commencez une grosse botte avec CURL et appuyez sur Ctrl-C pour vous arrêter au milieu du téléchargement.

$ CURL -O http://www.gnu.org/software/getText/manual/getext.html ############## 20.1%

Le téléchargement a été arrêté de 20,1%. Utilisation de CURL -C - "Nous pouvons continuer à télécharger à partir de l'endroit où nous nous sommes arrêtés. Maintenant, téléchargez pour continuer de 20,1%.

Curl -C - -O http://www.gnu.org/software/getText /Mark/getext.html ################ 21.1%

Limite de vitesse de transfert de données
Vous pouvez limiter la quantité d'option de vitesse de transfert de données -LIMIT-Taux. Vous pouvez transmettre la vitesse maximale comme argument.

$ Curl - Tarif de 1000b -o http://www.gnu.org/software/getText/manual/getext.html

La commande ci-dessus limitera le taux de transfert de 1000 octets / seconde. Curl peut utiliser la vitesse au-dessus des pics. Mais la vitesse moyenne sera d'environ 1000 octets / seconde.
L'indicateur de progression est présenté ci-dessous pour la commande présentée ci-dessus. Vous pouvez voir cette vitesse actuelle dans la superficie de 1000 octets.

% Total %% reçu% xferd Temps de temps de temps de temps de temps actuel Dallopload Total passé Vitesse de gauche 1 1215K 1 13601 0 0 0 957 0 0 0 0 0 0 0 0:1 0:00:14 0:21:26 999 1 1215K 1 14601 0 0 960 0 00:21:36 0:00:15 0:21:21 0:21:21 999 1 1215k 1 15601 0 0 962 0 0 0:01:34 0:00:16 0:218 999

Fichier de téléchargement uniquement s'il est modifié pour / après une heure donnée
Vous pouvez obtenir des fichiers qui ont été changés après un certain temps en utilisant l'option -z en boucle. Cela fonctionnera pour FTP et pour HTTP.

La commande ci-dessus téléchargera YY.HTML uniquement si elle a changé plus tard que la date et l'heure spécifiées.

La commande ci-dessus téléchargera Fichier de fichier.html s'il est remplacé par une date et une heure donnée. Dial 'Man curl_getDate' Pour en savoir plus sur diverses syntaxes prises en charge pour les expressions de date.

Passage de l'authentification HTTP dans CURL
Parfois, les sites Web nécessitent un nom d'utilisateur et un mot de passe pour afficher leur contenu. À l'aide de l'option -u, vous pouvez transférer ces informations d'identification du CURL sur le serveur Web, comme indiqué ci-dessous.

$ CURL -U Nom d'utilisateur: URL de mot de passe

Remarque: Par défaut, CURL utilise l'authentification HTTP de base. Nous pouvons définir d'autres méthodes d'authentification à l'aide -ntlm | -Digérer.


CURL peut également être utilisé pour télécharger des fichiers à partir de serveurs FTP. Si le chemin FTP spécifié est un répertoire, la liste des fichiers par défaut est affichée.

$ CURL -U FTPUser: FTPPPASS -O FTP: //FTP_SERVER/Public_html/XSS.php

La commande ci-dessus téléchargera le fichier XSS.PHP à partir du serveur FTP et l'enregistre dans le répertoire local.

$ CURL -U FTPuer: FTPPASS -O FTP: // FTP_SERVER / PUBLIC_HTML /

Ici, l'URL fait référence au répertoire. Par conséquent, CURL effectuera une liste de fichiers et de répertoires en fonction d'une adresse URL spécifiée.


Curl prend en charge les gammes spécifiées dans l'URL. Lorsque la plage est donnée, les fichiers correspondants de cette plage seront téléchargés. Il sera utile lors de la chargement de paquets à partir de miroirs de sites FTP.

$ curl ftp://ftp.uk.debian.org/debian/pool/main//

La commande ci-dessus établira une liste de tous les packages dans la plage A-Z du terminal.

Déchargement de fichiers sur le serveur FTP
Curl peut également être utilisé pour décharger sur le serveur FTP avec l'option -t.

$ CURL -U FTPUser: FTPPASS -T MYFILE.TXT FTP://FTP.TESTSERVER.COM

La commande ci-dessus déchargera le fichier nommé myfile.txt sur le serveur FTP. Vous pouvez également décharger plusieurs fichiers à la fois avec des bandes.

$ CURL -U FTPUser: FTPPASS -T "(Fichier1, File2)" FPC://ftp.estSserver.com

Éventuellement, nous pouvons utiliser "." Pour obtenir de l'entrée standard et la transférer sur une machine distante.

$ CURL -U FTPUser: FTPPass -T - FTP://ftp.TestSserver.com/myfile_1.txt

La commande ci-dessus recevra une sortie de l'utilisateur à partir d'une entrée standard et enregistrera le contenu sur le serveur FTP sous le nom 'myFile_1.txt'.
Vous pouvez définir '-t' pour chaque URL, et chaque fichier d'adresse de paire déterminera quoi décharger

Plus d'informations avec une augmentation de l'option verbale et de trace
Vous pouvez découvrir ce qui se passe à l'aide de l'option -v. L'option -v inclut le mode verbal et les détails d'impression.

Curl -v https://www.google.co.th/?gws_rd\u003dssl.

L'équipe ci-dessus affichera ce qui suit

* URL reconstruite à: https://www.google.co.th/?gws_rd\u003dssl * Nom d'hôte n'a pas été trouvé dans le cache DNS * essayant 27.123.17.49 ... * Connecté à www.google.co.th (27.123. 17.49) Port 80 (n ° 0)\u003e Obtenir / http / 1.1\u003e User-Agent: Curl / 7.38.0\u003e Host: www.google.co.th\u003e Accepter: * / *\u003e< HTTP/1.1 200 OK < Date: Fri, 14 Aug 2015 23:07:20 GMT < Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=windows-874 < P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." * Server gws is not blacklisted < Server: gws < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < Set-Cookie: PREF=ID=1111111111111111:FF=0:TM=1439593640:LM=1439593640:V=1:S=FfuoPPpKbyzTdJ6T; expires=Sun, 13-Aug-2017 23:07:20 GMT; path=/; domain=.google.co.th ... ... ...

Si vous avez besoin d'informations plus détaillées, vous pouvez utiliser l'option -Trace. L'option -Trace inclura une vidage complète de traçabilité toutes les données entrantes / sortantes pour un fichier spécifié.



Je suggère un peu parler du langage de programmation PHP, mais n'affections spécifiquement le sujet de l'expansion Boucle. Possibilité d'interagir avec différents serveurs sur divers protocoles du script PHP lui-même.

Avant de procéder à la considération de courbure, je tiens à vous rappeler que le langage PHP que nous avons déjà affecté, par exemple, dans le matériau sur le déchargement pour exceller sur PHP ou la capacité d'authentification de PHP, et parlons maintenant de la capacité d'envoyer des demandes à Php.

Qu'est-ce que CURL?

Boucle - Il s'agit d'une bibliothèque de fonctions PHP, avec laquelle vous pouvez envoyer des demandes, par exemple, HTTP, du script PHP. CURL prend en charge ces protocoles tels que HTTP, HTTPS, FTP et autres. Envoyer des demandes HTTP peut être des méthodes, poster, mettre.

CURL peut être utile dans les cas où vous devez appeler un script à distance et obtenir le résultat ou simplement enregistrer le code HTML de la page appelée, en général, chacun peut trouver son application, mais la signification est celle qui peut envoyer des demandes pendant l'exécution du script .

Connecter la bibliothèque CURL en PHP

Pour utiliser la bibliothèque CURL, il doit être connecté en conséquence.

Noter! À titre d'exemple, nous utiliserons PHP 5.4.39 sous Windows 7, et comme serveur Web effectuera Apache 2.2.22.

La première chose à faire est de copier les bibliothèques ssleay32.dll, libey32.dll, libsssh2.dll Ils sont situés dans le répertoire avec PHP, dans le répertoire système Windows, nommément in C: \\ Windows \\ System32.

Ensuite, dans php.ini, connectez la bibliothèque php_curl.dll, c'est-à-dire Rassembler la ligne suivante

La bibliothèque n'est pas connectée

; extension \u003d php_curl.dll

La bibliothèque est connectée

Extension \u003d php_curl.dll.

Tout, redémarrez Apache, appelez la fonction phpinfo () et en cas de connexion réussie, vous devez paraître en boucle.


Si ce n'est pas le cas, cela signifie que la bibliothèque ne démarre pas, la raison la plus courante de ceci n'a pas été copiée par la DLL ci-dessus dans le répertoire système Windows.

Exemple de curl - Demander une page distante pour la sortie

Dans cet exemple, nous demandons simplement une page distante à l'aide du protocole HTTP à l'aide de la méthode GET et apportez son contenu à l'écran.

Nous avons un répertoire de test dans IT 2 PHP Files est test_curl.php et test.php, où Test_Curl.php est un script où nous utiliserons CURL et le script à distance tester.php que nous appellerons. J'ai commenté en détail en détail.

Test_curl.php code

Code Test.PHP

Titre 1."; Break; Cas 2: Echo"<Н2>Titre 2."; Break; Cas 3: Echo"<Н3>Titre 3."Break;))?\u003e

En conséquence, si vous démarrez test_curl.php, vous afficherez l'inscription "Titre 1", vous pouvez expérimenter avec le transfert des paramètres d'identification ( dans ce cas, 2 ou 3).

Exemple de courbure - appelez un script à distance et obtenez le résultat

Essayons maintenant d'appeler le script et d'obtenir le résultat, afin de le traiter, par exemple, utilisons la méthode postale. Les noms de fichier laisseront la même chose.

Test_curl.php code

Code Test.PHP

Et si nous commençons test_curl.php, nous prendrons 111 à l'écran, c'est-à-dire 1.11 reçu à la suite de la référence à un script distant multiplié par 100.

Et maintenant parlons des fonctions et des constantes.

Fonctions de courbure et constantes fréquemment utilisées

  • curl_init - initialise la session;
  • curl_close - complète la session;
  • curl_exec - demande;
  • curl_errno - renvoie le code d'erreur;
  • curl_setopt - Définit un paramètre de session, par exemple:
    • Curlopt_header - valeur 1 signifie que vous devez retourner les en-têtes;
    • Curlopt_infilesize - paramètre pour spécifier la taille de fichier attendue;
    • Curlopt_verbose - Valeur 1 signifie que CURL affichera des messages détaillés sur toutes les opérations fabriquées;
    • Curlopt_noprogress - désactivation de l'indicateur de progrès de l'opération, valeur 1;
    • Curlopt_nobody - Si vous n'avez pas besoin d'un document, mais uniquement des titres sont nécessaires, puis mettez la valeur 1;
    • Curlopt_upload - pour télécharger le fichier sur le serveur;
    • Curlopt_post - exécuter la demande par la méthode postale;
    • Curlopt_ftplistonly - Recevoir une liste de fichiers dans le répertoire du serveur FTP, valeur 1;
    • Curlopt_put - exécuter la demande par la méthode de vente, valeur 1;
    • Curlopt_returnTransfert - renvoie le résultat sans afficher le navigateur, valeur 1;
    • Curlopt_timeout - l'heure d'exécution maximale en secondes;
    • Curlopt_url - spécifiant les adresses de circulation;
    • Curlopt_userpwd - chaîne avec nom d'utilisateur et mot de passe dans le formulaire:;
    • Curlopt_postfields - Données pour la demande postale;
    • Curlopt_Referer - Définit le HTTP "Référeur:" Hauteur;
    • Curlopt_useragent - Définit le titre HTTP "User-Agent:";
    • Curlopt_cookie - le contenu de l'en-tête "Cookie:", qui sera envoyé avec la demande HTTP;
    • CURLOPT_SSLCERT- Nom de fichier avec un certificat au format PEM;
    • Curlopt_ssl_verifypeer - Valeur 0 Afin d'interdire la vérification d'un certificat de serveur distant (par défaut 1);
    • CURLOPT_SSLCERPASSWD - Mot de passe dans le fichier de certificat.
  • curl_getinfo - renvoie des informations sur l'opération, le deuxième paramètre peut effectuer une constante pour indiquer ce qu'il est nécessaire de montrer, par exemple:
    • Curlinfo_effective_url - la dernière URL utilisée;
    • Curlinfo_http_code - le dernier code HTTP obtenu;
    • Curlinfo_fileTime - modification de la date du document téléchargé;
    • Curlinfo_total_time - l'heure d'exécution de l'opération en secondes;
    • Curlinfo_namelaookup_time - Nom de serveur Autorisations en secondes;
    • Curlinfo_connect_time - temps passé à l'installation de la connexion en quelques secondes;
    • Curlinfo_pretransfer_time - temps qui s'est passé depuis le début de l'opération avant la disponibilité de la transmission de données réelle, en secondes;
    • Curlinfo_starttransfer_time - le temps passé du début de l'opération jusqu'à ce que le premier octet de données soit transféré en secondes;
    • Curlinfo_redirect_time - temps passé à la redirection, en quelques secondes;
    • Curlinfo_size_upload - le nombre d'octets lors du téléchargement;
    • Curlinfo_size_download - le nombre d'octets lors du 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 titres obtenus;
    • Curlinfo_request_size - la taille totale de toutes les demandes envoyées;
    • Curlinfo_ssl_verifyResult - résultat de la vérification du certificat SSL demandé en définissant le paramètre curlopt_ssl_verifypeer;
    • Curlinfo_content_lengthddownload - la taille du document téléchargé, lisez à partir de l'en-tête de longueur de contenu;
    • Curlinfo_content_length_upload - la taille des données téléchargées;
    • Curlinfo_content_type - Le contenu de l'en-tête de type contenu obtenu ou null dans le cas où ce titre n'a pas été reçu.

Plus d'informations sur les fonctions de CURL et de constantes peuvent-elles être consultées sur le site Web PHP officiel -

La vie du développeur Web est éclipsée par des difficultés. Il est particulièrement désagréable lorsque la source de ces difficultés est inconnue. Qu'il s'agisse d'un problème d'envoi d'une demande ou d'une réponse, ou d'une bibliothèque tierce, que l'API externe soit buggy? Il y a un tas de diverses attaques capables de simplifier notre vie. Voici quelques outils de ligne de commande que je considère personnellement inestimable.

boucle
cURL est un programme de transfert de données sur divers protocoles similaires à Wget. La principale différence est que, par défaut, l'WGET enregistre dans le fichier et CURL s'affiche à la ligne de commande. Vous pouvez donc très simplement regarder le contenu du site Web. Par exemple, c'est comment obtenir rapidement votre adresse IP externe actuelle:

$ CURL IFCONFIG.ME 93.96.141.93
Paramètres -JE. (montrer des titres) et -JE. (Afficher uniquement les titres) Fabriquez un excellent outil de boucle pour déboguer les réponses HTTP et l'analyse de ce que le serveur vous envoie spécifiquement:

$ Curl -i habrahabr.ru http / 1.1 200 OK Server: NGinx Date: Thu, 18 août 2011 14:15:36 GMT Type de contenu: Texte / HTML; Charset \u003d UTF-8 Connection: Gardez-le-Garder-Alive: Timeout \u003d 25
Paramètre -L. Également utile, il provoque automatiquement des redirections. CURL prend en charge l'authentification HTTP, les cookies, le tunnelage via le proxy HTTP, les paramètres manuels des titres et beaucoup plus encore.

Siège
Siege - Outil pour les tests de charge. De plus, il a une option commode. -G.qui est très similaire à curl -il.Mais, en outre, vous montrez également les en-têtes de requête HTTP. Voici un exemple de Google.com (certains titres sont supprimés pour courts):

$ Siege -g www.google.com Obtenir / http / 1.1 Host: www.google.com User-Agent: Joedog / 1.00 (X11; I; SIEGE 2.70) Connexion: Fermer http / 1.1 302 Trouvé Lieu: http: // www.google.co.uk/ Type de contenu: Texte / HTML; Charset \u003d UTF-8 Server: GWS Contenu-Longueur: 221 Connexion: Fermer GET / HTTP / 1.1 HÔTEUR: www.google.co.uk User-Agent: Joedog / 1.00 (x11; i; Siege 2.70) Connexion: fermer http / 1.1 200 OK Type de contenu: Texte / HTML; Charset \u003d ISO-8859-1 X-XSS-Protection: 1; Mode \u003d Connexion de bloc: Fermer
Mais pour lequel le siège est vraiment approprié, il est donc pour les tests de charge. Comme référence Apachevsky uN BIl peut envoyer une variété de demandes parallèles sur le site et voir comment elle s'oppose au trafic. Dans l'exemple suivant, il est montré comment nous testons Google en utilisant 20 demandes pendant 30 secondes, après quoi le résultat est dérivé:

$ Siege -C20 www.google.co.uk -b -t30s ... Soulever le siège du serveur ... fait. Transactions: 1400 hits Disponibilité: 100,00% Temps écoulé: 29,22 secs Données transférées: 13,32 Mo Délai de réponse: 0.41 secondes Taux de transaction: 47.91 TRANSFULATION TRANSPUT: 0.46 MB / SEC Concurrence: 19.53 Transactions réussies: 1400 Transactions échouées: 0 La transaction la plus longue: 0 4.08 Transaction la plus courte: 0.08
L'une des fonctions les plus utiles du siège est que cela peut fonctionner non seulement avec une adresse, mais également avec une liste d'URL du fichier. C'est génial pour les tests de charge, car vous pouvez simuler du trafic réel sur le site et non seulement pour appuyer à nouveau sur la même URL et encore. Par exemple, voici comment utiliser Siege pour charger le serveur à l'aide des adresses de votre journal Apache:

$ coupe -d "" -f7 /var/log/apache2/access.log\u003e URLS.TXT $ SIEGE -C -B -f urls.txt
Ngrép
Pour une analyse de trafic sérieux, il existe des filtres avec des milliers de réglages, de filtres et de configurations. Il y a aussi une version de ligne de commande tshark.. Mais pour des tâches simples, des fonctionnalités de Wireshark, je considère excessif. Aussi tant que je n'ai pas besoin d'armes puissantes, j'utilise. Il vous permet de faire avec des packs de réseau la même chose que grep. Fait avec des fichiers.

Pour le trafic Web, vous souhaitez presque toujours utiliser le paramètre -W.Pour enregistrer la formatage des chaînes ainsi que le paramètre -Q.qui cache des informations redondantes sur des packages inappropriés. Voici un exemple de commande qui intercepte tous les packages avec la commande get ou post:

NGREP -Q -W BYLINE "^ (GET | POST). *"
Vous pouvez ajouter un filtre en option pour les packages, par exemple, sur une adresse IP ou un port donné. Voici un filtre pour tout le trafic entrant et sortant sur Google.com, Port 80, qui contient le mot "recherche".

NGREP -Q -W BYLINE "RECHERCHE" HOSTER www.google.com et Port 80

Exemple pratique réel: Vous devez redémarrer le routeur (modem) pour modifier l'adresse IP. Pour ce faire, vous devez: connecter dans le routeur, accéder à la page de service 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, je ne veux pas faire cette routine à chaque fois. Curl vous permet d'automatiser tout cela. Littéralement quelques commandes CURL, vous pouvez obtenir une autorisation et une exécution de la tâche sur le routeur.

  • curl est pratique pour les données de sites Web sur la ligne de commande.
Un autre exemple pratique: nous voulons mettre en œuvre la série de statistiques générales pour plusieurs sites. Si vous utilisez CURL, il devient une tâche de manière assez triviale: à l'aide de CURL, nous passons l'authentification sur le service de collecte de statistiques (si nécessaire), puis (à nouveau, les commandes de CURL) Nous obtenons les pages nécessaires, les données dont nous avons besoin; La procédure est répétée pour tous nos sites, puis nous replions et émis le résultat final.

Ceux. Les cas d'utilisation de CURL sont tout à fait réels, cependant, dans la plupart des programmes, les programmeurs qui l'utilisent pour leurs programmes.

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

curl en ligne PHP et commande

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

Pour activer CURL dans PHP sur le serveur, vous devez définir la ligne dans le fichier php.ini.

Extension \u003d php_curl.dll.

Puis redémarrez le serveur.

Sur Linux, vous devez installer le paquet CURL.

Sur Debian, Ubuntu ou Linux Mint:

$ sudo apt-get install curl


Sur Fedora, Centos ou Rhel:

$ sudo yum installer boucle

Pour connaître clairement la différence d'utilisation dans PHP et sur la ligne de commande, nous serons les mêmes tâches deux fois: d'abord dans le script PHP, puis sur la ligne de commande. Nous allons essayer de ne pas être confus.

Obtenir des données en utilisant curl

Obtenir des données en utilisant CURL dans PHP

Un exemple sur PHP:

Tout est très simple:
$ cible_url - l'adresse du site qui nous intéresse. Après l'adresse du site, vous pouvez mettre un point de point et ajouter une adresse de port (si le port diffère de la norme).

curl_init. - initialise une nouvelle session et renvoie un disciple, lequel dans notre exemple est attribué à une variable $ ch.

Ensuite, nous exécutons la fonction de fonction CURL curl_execque la discrétion est transmise comme un paramètre.

Tout est très logique, mais lors de l'exécution de ce script, le contenu du site apparaît sur notre page. Et si nous ne voulons pas afficher le contenu, mais nous voulons l'écrire dans une variable (pour un traitement ou une analyse ultérieure).

Ajoutez légèrement notre script:

0) (ECHO "ERREUR CURL:". CURL_ERROR ($ CH);) curl_close ($ CH); ?\u003e

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

curl_setopt. - Spécifie les options. La liste complète des options est disponible sur cette page:

Caché des invités

$ Réponse_data \u003d curl_exec ($ ch);

Maintenant, la valeur du script est attribuée à la variable $ de réponse_data avec laquelle d'autres opérations peuvent être effectuées. Par exemple, vous pouvez retirer son contenu.

Dossier

Si (curl_errno ($ CH)\u003e 0) (écho "Erreur Curl:". Curl_Error ($ CH);)

servir de débogage, en cas d'erreurs.

Obtenir des données en utilisant CURL sur la ligne de commande

Dans la ligne de commande, il suffit de composer

mi-al.ru. - adresse de votre site.

Si vous avez besoin de copier les données sur la variable et que vous n'entraînons pas le résultat à l'écran, nous le faisons:

Temp \u003d "curl mi-al.ru"

Dans le même temps, certaines données sont décrites:

Afin qu'ils ne soient pas affichés, ajoutez la clé -s.:

Temp \u003d "curl -s mi-al.ru"

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

Echo $ temp | moins

Authentification de base et authentification HTTP

Authentification, Mettez simplement, cela introduit un nom d'utilisateur et un mot de passe.

L'authentification de base est l'authentification des outils du serveur. Deux fichiers sont créés pour cela: .htaccess. et .htpasswd.

Le contenu du fichier.htaccess est approximativement

Authname "uniquement pour les utilisateurs enregistrés!" AuthType Basic exige un utilisateur valide authtunerfile /home/freeforum.biz/htdocs/.htpassw


Le contenu du fichier.htpasswd est approximativement:

MIAL: CRDII.ZRZQRC.

Ceux. Connexion et mot de passe de hachage.

Lorsque vous essayez d'accéder au dossier Pellets, le navigateur apparaît approximativement à une telle fenêtre:

L'authentification HTTP est le cas lorsque nous entrons dans le login et le mot de passe dans le formulaire sur le site. C'est une telle authentification qui est utilisée à l'entrée du bureau de poste, des forums, etc.

CURL Authentification de base (PHP)

Il y a un site web

Caché des invités

Nous essayons notre script initial:

0) (ECHO "ERROR CURL:" CURL_ERROR ($ CH);) Autres (echo $ Response_Data;) curl_close ($ CH); ?\u003e

Bien que le script estime qu'il n'y a pas d'erreur, mais nous n'aimons pas le résultat de la sortie:

Ajouter deux lignes:

Curl_setopt ($ CH, curlopt_httpauth, curlauth_basic); Curl_setopt ($ ch, curlopt_userpserpwd "ru-board: ru-board");

La première ligne que nous spécifions le type d'authentification - basique. La deuxième ligne contient un nom et un mot de passe à travers un colon (dans notre cas, le nom et le mot de passe sont les mêmes - RU-Board). Il s'est avéré comme ceci:

0) (ECHO "ERROR CURL:" CURL_ERROR ($ CH);) Autres (echo $ Response_Data;) curl_close ($ CH); ?\u003e Essayez: 30946 Excellent! L'authentification de base de CURL (sur la ligne de commande) du même dans la ligne de commande peut être réalisée par une ligne: CURL -U RU-Board: RU-Board http://62.113.208.29/update_fed_days/

Je n'ai pas oublié de spécifier le type d'authentification, simplement dans le boucle, le type d'authentification de base est par défaut.

Dans la ligne de commande, tout s'est passé si rapidement que j'ai écrit ce programme du désordre ici. Il se connecte au site et télécharge la dernière mise à jour:

TEMP \u003d `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" | UNIQ | Queue 1`; Curl -o $ Temp -u RU-Board: En-board http://62.113.208.29/update_fed_days/$temp

Littéralement plus que plusieurs commandes, vous pouvez ajouter:

  • déballage des archives sur le répertoire spécifié;
  • l'exécution des mises à jour ConsultantPlus (ce sont des mises à jour pour elle);
  • vous pouvez implémenter un chèque - si la dernière mise à jour disponible a déjà été téléchargée ou qu'un nouveau est apparu;
  • ajoutez tout cela en cron pour les mises à jour quotidiennes.
Authentification HTTP CURL

Authentification HTTP CURL dans PHP

Nous avons besoin de savoir:

  • adresse où envoyer des données pour l'authentification
  • méthode d'envoi de get ou de poste
  • connexion
  • le mot de passe
Parfois, ces données ne suffisent pas. Trouvons.

L'adresse où vous souhaitez envoyer des données peuvent être prises à partir du formulaire d'authentification. Par example:

Nous regardons la propriété action.. Ceux. La page de destination est login.php.. Nous avons besoin d'une adresse complète, telle que telle

Caché des invités

Ici, nous trouvons et envoyons la méthode: méthode \u003d "post"

Connexion et mot de passe Je sais aussi: admin et qwerasdfzxcv
Ceux. Le serveur utilisant la méthode postale est transmis au serveur. Théoriquement, notre précédent script, dans lequel nous avons ajouté une nouvelle ligne devrait fonctionner. Ceux. Il devrait y avoir une authentification.

0) (ECHO "ERREUR CURL:". CURL_ERROR ($ CH);) sinon () curl_close ($ CH); ?\u003e

Dans le script une nouvelle ligne

curl_setopt ($ ch, CURLOPT_POSTFIELDS, "login_user \u003d admin & login_passwd \u003d qwerasdfzxcv");

Ici curl_setopt. - déjà familier à nous la fonction d'établir des options de curl, Curlopt_postfields. - Ce nom est l'option que nous avons définie. Curlopt_postfields.contient toutes les données transmises par la méthode postale. Eh bien, la ligne elle-même Login_user \u003d admin & login_passwd \u003d qwerasdfzxcv - Ce sont les mêmes données que nous passons.

Si vous étudiez attentivement le formulaire, vous pouvez voir qu'il contient également des champs cachés. Et ensuite, les données peuvent être traitées ou complétées par JavaScript "AMI. Vous pouvez étudier tout cela, mais je préfère une manière plus simple.

J'utilise Wireshark. Ce programme est conçu pour le trafic (interception). Et c'est qu'il est très pratique de regarder cela, ce qui est transmis exactement au site.

Regarde cette petite vidéo:


Ceux. Avec l'adresse où les données sont transmises, je suppose. Mais la ligne transmise s'est avérée beaucoup plus compliquée.

J'ai entré le paramètre correct, ainsi qu'un peu effrayé le script afin qu'il ne soit pas simplement connecté, mais aussi quelque chose du routeur:

0) (Echo "erreur Curl:" curl_error ($ CH.);) AUTRE ($ target_url2 \u003d "http://188.35.8.64:8080/bsc_wlan.php"; $ CH2 \u003d curl_init (target_url2 $); curl_setopt ($ CH2, CURLOPT_RETURNTRANSFER, 1); $ response_data2 \u003d curl_exec (CH2) $; preg_match ( "| f.ssid.value \u003d" (*). "|, $ response_data2, $ résultats2); $ résultats2 \u003d str_replace (" F. ssid.Value \u003d "", "", $ résultats2); $ résultats2 \u003d str_replace ( "", "" "$ résultats2); echo" Nom du réseau Wi-Fi: $ Résultats2.
"; Preg_match (" | F_WPA.WPAPSK1.VALUE (*) « ; |., $ Response_Data2, résultats3 $); $ résultats3 \u003d str_replace ("f_wpa.wpapsk1.value", "", $ résultats3); $ résultats3 \u003d str_replace ("\u003d" "", "", $ résultats3); $ résultats3 \u003d str_replace (""; ", $ résultats3); ECHO "Mot de passe Wi-Fi: Résultats $3.« ;) Curl_close ($ ch);?\u003e

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

Caché des invités

(Ceci est une vulnérabilité bien connue du DIR-300 de D-Link, D-LINK DIR-320 et D-Link DAP-1353).

Authentification HTTP CURL sur la ligne de commande

Adresse complète, ainsi qu'une chaîne dont vous avez besoin pour transmettre, nous savons déjà. Par conséquent, tout est simple:

Curl --Data "Action_post \u003d Login & FileCode \u003d & Verification_Code \u003d & LOGIN_USER \u003d admin & login_passwd \u003d qwerasdfzxcv & login \u003d journal + in + & ver_code \u003d" http://188.35.8.64:8080/Login.php

Je pense que tout est si compréhensible, puisque nous avons déjà tenu compte de ces délais. Si quelqu'un est incompréhensible - demander dans les commentaires.

Un exemple d'utilisation de CURL à recevoir et d'analyser les données peut être l'ensemble de commandes suivant:

CURL -S --data "ACTION_POST \u003d Connexion & fileCode \u003d & VERIFICATION_CODE \u003d & login_user \u003d admin & login_passwd \u003d qwerasdfzxcv & login \u003d log + dans + & ver_code \u003d" http://188.35.8.64:8080/login.php\u003e / 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 \u003d" (.) * ";" | sed "s / f.ssid.value \u003d" // "| sed" s / "; //" && echo "mot de passe réseau Wi-Fi" && boucle -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 / \u003d" // "

Ces rubriques seraient plus correctes pour écrire comme ceci: des cas d'autorisation "complexes". Ceux. Le mot "complexe" prend des citations. Ils sont toxiques à première vue, quand il n'est pas clair: où il est envoyé, quel nom les champs, ce qui est envoyé exactement, etc.

Mais, en fait, tous sont réduits pour poster ou obtenir des méthodes. Pour comprendre ce qu'il est envoyé, vous pouvez enregistrer une page avec un formulaire sur votre disque et sur le bouton d'envoi pour accrocher la fonction d'affichage pour l'envoi de données. Ou encore plus facile - comme moi, Wireshark "Ohm.

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

  • définissez la ligne correcte du référent
  • définissez la chaîne "correcte" de l'agent utilisateur.
Tout cela peut être fait par les méthodes de base de la boucle de base, mais je ne m'arrêterai pas dessus. La leçon s'est avérée être déjà grande et je voulais toujours montrer quelques astuces avec boucle.

TIPS ET TRIX CURL

Curl et recevoir des cookies en plus de Curlopt_Cookiejar

Je pense qu'il est déjà devenu évident que Curl traite correctement les cookies - les enregistre, utilise lorsque le serveur demande, etc., mais parfois des cookies doivent être enregistrés. Pour ce faire, il y a l'option Curlopt_Cookiejar, mais il n'est pas toujours possible de l'utiliser. Notre premier tour est dédié à cela.

Parfois, en raison des caractéristiques des paramètres PHP sur le serveur, ces options que curlopt_cookiejar ne sont pas disponibles pour nous (vous permettent de sauvegarder les cookies reçus dans le fichier) et curlopt_cookiefile (vous permet d'utiliser des cookies dans le fichier). Parce que Ils disent qu'à utiliser ces options, nous pourrons tirer n'importe quel fichier de leur serveur. Voici la solution à ce problème:

1) N'utilisez pas curlopt_folleclocation
2) Utilisez curl_setopt ($ ch, curlopt_header, 1)
3) Nous recueillons du cuisisme de l'en-tête d'en-tête quelque chose comme ceci:

Preg_Match_All ("| Set-Cookie: (. *); | U», $ Content, $ résultats); $ Cookies \u003d implorez (";", $ résultats);

4) Nous leur demandons d'utiliser curl_setopt ($ ch, curlopt_cookie, $ cookies);

Deuxième conseil. Des attaquants, nous pouvons essayer de sacrifier. Afin de ne pas devenir victime de l'homme d'attaque au milieu, nous le faisons.

Veuillez tout, arrêtez de régler le paramètre Curlopt_ssl_verifypeer sur FALSE ou 0. Si votre paramètre PHP n'a pas de jeu de certificats de racine CA en cours, téléchargez-en un sur le site Web de CURL et enregistrez-le sur votre serveur:

Caché des invités

Puis définissez le chemin dans votre fichier de fichier php.ini, tel que Windows:

Curl.cainfo \u003d c: phpcaCert.pem

Désactiver Curlopt_ssl_verifypeer vous permet d'effectuer une attaque d'une personne-in-midi (MITM), et nous n'en avons pas besoin!

Eh bien, le dernier conseil aujourd'hui. Savez-vous qu'un grand nombre de demandes asynchrones asynchrones asynchrones est-elle possible?

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


Pour la lecture en russe, prépara également la deuxième partie de la leçon de courbure: "".
Avez-vous aimé l'article? Partager avec des amis: