qu'est-ce que Linux Curl

青灯夜游
青灯夜游original
2023-04-20 17:05:463464parcourir

Sous Linux, curl est un outil très pratique pour transférer des données avec le serveur. Il s'agit d'un outil de transfert de fichiers qui utilise des règles d'URL pour fonctionner sous la ligne de commande ; il prend en charge le téléchargement et le téléchargement de fichiers et constitue un outil de transfert complet. Curl fournit de nombreuses fonctions très utiles, notamment l'accès proxy, l'authentification des utilisateurs, le téléchargement et le téléchargement FTP, HTTP POST, la connexion SSL, la prise en charge des cookies, la reprise du point d'arrêt, etc.

qu'est-ce que Linux Curl

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

Sous Linux, curl est un outil de transfert de fichiers qui utilise des règles d'URL pour fonctionner sous la ligne de commande. On peut dire qu'il s'agit d'un outil de ligne de commande http très puissant. Il prend en charge le téléchargement et le téléchargement de fichiers et constitue un outil de transmission complet. Cependant, selon la tradition, il est d'usage d'appeler URL un outil de téléchargement.

curl est un outil très pratique pour transférer des données vers et depuis des serveurs ; les protocoles pris en charge incluent (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET et TFTP), curl est conçu pour effectuer le travail sans interaction de l'utilisateur ; curl fournit de nombreuses fonctions très utiles, notamment l'accès proxy, l'authentification des utilisateurs, le téléchargement et le téléchargement FTP, HTTP POST, la connexion SSL. , prise en charge des cookies, reprise du point d'arrêt....

1. Les commandes curl les plus couramment utilisées

1. Envoyer la demande GET

curl URL
curl URL?a=1&b=nihao

2. Envoyer une demande au format json :

curl -X POST -d 'a=1&b=nihao' URL
curl -H "Content-Type: application/json" -X POST -d '{"abc":123,"bcd":"nihao"}' URL

Parmi eux, -H représente l'en-tête, -X précise le type de requête (POST/GET/HEAD/DELETE/PUT/PATCH) et

-d

représente les données à transmettre. Ce sont les plus couramment utilisés. Afficher toutes les commandes curl : man curl ou curl -h En-tête de requête : H,A,e En-tête de réponse : I,i,D Cookie : b,c,j Transmission : F(POST),G(GET ), T(PUT), Explication détaillée de la syntaxe de la commande et des paramètres de la commande curl




1. Syntaxe de la commande Curl


curl -H "Content-Type: application/json" -X POST -d @test.json URL


2. Explication détaillée des paramètres de la commande curl

Depuis la fonction curl Linux. est très puissant, il existe de nombreux paramètres de commande. Le tableau suivant n'est que quelques paramètres sélectionnés par Aiezu (aiezu.com), veuillez exécuter la commande "man curl" pour afficher plus de paramètres.

S'il vous plaît-H "name: value"(HTTP) Ajouter un en-tête http (en-tête de requête http); -H "name:"(HTTP) Supprimer un en-tête http (en-tête de requête http -A "string"); (HTTP) Définissez l'en-tête de la requête HTTP "User-Agent". Le serveur peut utiliser "User-Agent" pour déterminer le nom du navigateur et le type de système d'exploitation utilisé par le client. Ce paramètre peut amener le serveur à porter des jugements incorrects. -e 258c40d94d8689854ad79c4076dd5f96(HTTP) pour définir la page source ; lors de l'accès, indiquez au service http à partir de quelle page accéder à cette page ; - -head(HTTP) génère uniquement l'en-tête HTTP et n'obtient pas le contenu (HTTP/FTP/FILE). (tel que : curl -I file://test.txt)-D 28897b20adb25fbae118a3f80f538dec(HTTP) Vider les en-têtes de réponse http dans le fichier spécifié ;cookie --cookie name=data(HTTP) Envoyer les données du cookie au serveur HTTP, les données Le format est : "NAME1=VALUE1; NAME2=VALUE2" ; La valeur du paramètre spécifiée est "-" Sera dirigé vers la sortie standard "comme la console" -x host:portUtilisez l'accès proxy HTTP ; si aucun port n'est spécifié, le port 8080 est utilisé par défaut ; http_proxy , HTTPS_PROXY, chaussettes4, chaussettes4a, chaussettes5; --socks4 aa3755fb6675d042aec4e88952ca7a83 utiliser le proxy SOCKS4 ; Utiliser le proxy SOCKS4A ; Utiliser le proxy SOCKS5 --proxy-négocie --basic - -diges --negotiate - -proxy-user a0cdbb1e98c0a7f7bc41394907e02e8dTransfert ; -G-d @file--data-ascii "string"
--data-binary "string"
--data-urlencode "string"
-r 01fbef2219010f55027ff7800552222a( HTTP/FTP/SFTP/FILE) ne transmet que le contenu spécifié Partie : --ntlm Généralement utilisé pour les sites Web IIS qui utilisent NTLM ; ) utilise l'authentification HTTP Digest pour le cryptage, utilisée pour le protocole HTTP ; --negotiate(HTTP) utilise GSS-Négociation ; méthode d'authentification pour le protocole HTTP ; --anyauth(HTTP) indique à curl de choisir automatiquement la méthode d'authentification appropriée et de choisir la méthode la plus sécurisée ; -u user:passwordUtiliser l'authentification par nom d'utilisateur et mot de passe Ce paramètre remplacera les options "-n", "--netrc" et "--netrc-optional" Si vous le faites uniquement ; Fournissez un nom d'utilisateur et curl vous demandera de saisir un mot de passe ; Si vous utilisez la bibliothèque curl ouverte par "SSPI" pour l'authentification "NTLM", vous pouvez utiliser l'option "-u:" sans nom d'utilisateur ni mot de passe pour forcer curl à utiliser le nom d'utilisateur et le mot de passe actuellement connectés pour l'authentification ; Ce paramètre équivaut à définir l'en-tête http "Autorisation :" (SSL) indique à curl le type de certificat ; fournis : PEM, DER, ENG, etc. ;(SSL) indique à curl que les certificats CA dans le répertoire spécifié sont utilisés pour la vérification Ces certificats doivent être au format "PEM" (HTTPS/ FTPS) Fournit un fichier au format PEM spécifiant une liste de certificats révoqués ; --insecure(SSL) La configuration de cette option permettra les connexions et les transferts utilisant un SSL non sécurisé sans certificat. Autres--ciphers e8f064f971a27002865e16550000e50d Définissez un moteur de chiffrement OpenSSL pour les opérations de chiffrement ; Utilisez "curl --engine list" pour afficher la liste des moteurs de chiffrement pris en charge ; (SSL) spécifie le nom du chemin du fichier contenant données aléatoires ; données Il est utilisé pour générer des graines aléatoires pour les connexions SSL ; (SSL) est le nom de chemin spécifié par le générateur de graines aléatoires EGD (Entropy Gathering Daemon socket). --tlsv1.0 --tlsv1.1 --tlsv1.2 (SSL) utilise TLS version 1.2 pour communiquer avec le serveur distant ; serveur distant ; Clé publique--clé ; 42538adbdb6240b2b083a000a615d5bd(SSL) spécifie le type de fichier de clé privée, prend en charge : DER, PEM, ENG, la valeur par défaut est PEM ; (SSL/SSH) spécifie le mot de passe du fichier de clé privée ; (SSH) Utilisez votre clé publique fournie dans le fichier spécifié file; -P --ftp-port c2e067b3d52dc47db52e2a785e35c40b(FTP) En mode FTP actif, définissez une adresse pour attendre la connexion au serveur, telle que : Nom d'hôte : aiezu.com(FTP) Convertir le saut de ligne (LF) en saut de ligne retour chariot ( CRLF) lors du téléchargement ; (FTP) informations sur le compte ftp (FTP) Valeurs facultatives : multicwd/nocwd/ singlecwd; (FTP) Utiliser le mode PASV (passif)/EPSV (FTP) Lors de l'utilisation de PASV, ignorez le spécifié IP ; (FTP) Créer automatiquement des répertoires distants lors du téléchargement (FTP) Liste des fichiers FTP ; -B(FTP/LDAP) Utiliser le mode de transfert Ascii pour FTP et LDAP ; dans FTP équivaut à utiliser le mode "type=A;". --disable-epsv--disable-eprtSpeed ​​​​LimiteSi un téléchargement est plus lent que la limite de vitesse en octets par seconde pendant une période de vitesse, le téléchargement est interrompu. Si la vitesse est utilisée, la limite de vitesse par défaut sera de 1. sauf si elle est définie avec -Y. Cette option contrôle les transferts et n'affectera donc pas les connexions lentes, etc. Si cela vous préoccupe, essayez l'option --connect-timeout.-Y ; -SAfficher le message d'erreur en mode silencieux ; Message d'erreur enregistrer le fichier -o file --output file affichera le contenu renvoyé dans le fichier. Sera enregistré sous : "a.txt", "b.txt"; --remote ; -name affichera le contenu renvoyé dans le répertoire courant, dans un fichier portant le même nom que le fichier dans l'url (à l'exclusion des répertoires À utiliser avec le "-o); " paramètre pour créer la hiérarchie de répertoires locaux nécessaire --write-out formatUne fois l'opération terminée, ajoutez le contenu spécifié à la fin des informations de retour ; le contenu à ajouter peut être un string "string", récupérez "@filename" du fichier ou récupérez-le à partir de l'entrée standard "@-"--trace 28897b20adb25fbae118a3f80f538dec Utilisez "-" comme nom de fichier pour envoyer la sortie vers la sortie standard. Videz toutes les données entrantes et sortantes dans un fichier, y compris les informations de description, videz uniquement la partie ASCII, plus facile à lire Utilisez "-" comme nom de fichier pour envoyer la sortie ; sortie standard. Lisez les paramètres du fichier de configuration, reportez-vous à : http://curl.haxx.se/docs/-v affiche des informations plus détaillées, utilisées lors du débogage ; help-M --manual-haide à l'utilisation de Linux Curl ;

Explication complète des paramètres de curl -h :

Groupe de paramètres Paramètre Description
url url Une ou plusieurs URL qui doivent être explorées
Plusieurs façons de suivre les caractères génériques :
1. http://{www, ftp ; ,mail}.aiezu.com;
2. http://aiezu.com/images/[001-999].jpg 3. http://aiezu.com/images/[1-999].html ;
4. ftp://aiezu.com/file[a-z].txt
s'il vous plaît
header
--header "name: value"
--header "name:"
--user-agent "string"

Vous pouvez également utiliser "-H", "--header option" pour définir cette option ;
--referer 258c40d94d8689854ad79c4076dd5f96

-e "aiezu.com" équivaut à "-H "Référent : www.qq.com"" ;
-I
Lorsqu'il est utilisé pour le service HTTP, obtenez l'en-tête http de la page ;
(tel que : curl -I http://aiezu.com)
Lorsqu'il est utilisé pour FTP/FILE, la taille du fichier et l'heure de la dernière modification seront obtenues ;

-i
--include

(HTTP) Afficher l'en-tête HTTP et renvoyer le contenu ;
- -dump-header < ;file>

-b name=data
S'il n'y a pas de "=" dans la ligne, la valeur du paramètre sera considérée comme le nom du fichier cookie ; Ces données de cookie ; peut être obtenu par l'en-tête de réponse http du serveur "Set-Cookie :" ligne envoyée

-c filename
--cookie-jar file name


(HTTP) Après avoir terminé l'opération, enregistrez les cookies renvoyés par le serveur vers le fichier spécifié ;

-j
--junk-session-cookies
(HTTP) indique à curl de le supprimer ; tous les "cookies de session"
Équivalent au redémarrage du navigateur
Proxy
-x [protocol://[user:pwd@]host[:port]
--proxy [protocole ; ://[user:pwd@]host[:port]
le protocole est par défaut http_proxy, les autres valeurs possibles incluent : Par exemple :
--proxy 8.8.8.8 : 8080;
-x "http_proxy://aiezu:123@aiezu.com:80"

-p
-- proxytunnel

Utilisez le proxy du paramètre "-x" comme canal pour proxy les protocoles non HTTP, tels que ftp;
--socks4a 95e0e655625abd055d8fe9a2a259f49d
--socks5 aa3755fb6675d042aec4e88952ca7a83
Ce paramètre remplacera le paramètre "-x" ;
--proxy-anyauth
--proxy-basic
--proxy-diges
--proxy-ntlm

méthode d'authentification proxy http, reportez-vous à :
--anyauth
--ntlm



-U a0cdbb1e98c0a7f7bc41394907e02e8d

Définissez le nom d'utilisateur et le mot de passe du proxy



data
--get
Si ce paramètre est utilisé, les paramètres des paramètres "-d/", " --data" et "--data-binary" sont ajoutés à l'URL et demandés en mode GET ;
-d "chaîne"
--data "chaîne"
(HTTP) utilise HTTP POST pour envoyer des données de "paire clé/valeur", ce qui équivaut à un Attributs du formulaire du navigateur (method="POST", enctype="application/x-www-form-urlencoded")
-d, --data : données HTTP POST
--data-ascii : données HTTP POST ascii
- -data-binary : données binaires HTTP POST ;
--data-urlencode : données HTTP POST (urlencode) ;
Si les données commencent par "@" et sont suivies d'un fichier, le contenu du fichier post sera publié ;
-F name=@file
-F name=a14c305d2a097f4ab2596005704e701e
(HTTP) est similaire à "--form", mais "@" et "af0003e889b040bb4e01958e1ce43275
--continue-at ab76cfca1a1dc7ff1291dcdf873f72ec
Reprendre le point d'arrêt et continuer le téléchargement à partir de la position spécifiée dans l'en-tête du fichier
offset Le position où commence le CV, si la valeur de décalage est "-", curl identifiera automatiquement la position de départ dans le fichier et démarrera la transmission
--range 01fbef2219010f55027ff7800552222a
0-499 : les 500 premiers octets
-500 : les 500 derniers octets
9500- : les 9500 premiers octets ; : le premier et le dernier 1 octet ;
100-199,500-599 : Deux 100 octets


Authentification

--basic
(HTTP) indique à curl d'utiliser l'authentification HTTP Basic (lors de l'utilisation du protocole HTTP ), qui est la méthode d'authentification par défaut ;
(HTTP) utilise la méthode d'authentification NTLM pour le protocole HTTP ; Utilisez l'option "-u/--user" pour empêcher l'envoi de mots de passe en texte clair
Son objectif principal est de prendre en charge l'authentification Kerberos5
--user user:password

Certificate
-E 76e7e0c5a7b262bbb8bb18edc550d8eb
--cert 7fd527678c0850216a739b89a337e37b
La valeur par défaut est "PEM" ;
--cacert ee9bc78e716c38f84f8ae829b72583a3 (SSL) indique à curl que le fichier de certificat CA spécifié doit être au format "PEM" ; Chemin du certificat>

--crlfile 28897b20adb25fbae118a3f80f538dec
-k

SSL

(SSL) spécifie la méthode de cryptage à utiliser par SSL telle que : "aes_256_sha_256"
--engine

--random-file
--egd-file 28897b20adb25fbae118a3f80f538dec
-1/--tlsv1
-2/--sslv2
-3/--sslv3

(SSL) Utiliser TLS version 2 avec le serveur distant Communication ;
(SSL) utilise TLS version 1.0 pour communiquer avec le serveur distant ;
(SSL) utilise TLS version 1.1 pour communiquer avec le serveur distant ;
(SSL) utilise SSL version 2 pour communiquer avec le serveur distant Communication du serveur distant ;
(SSL) Utilisez SSL version 3 pour communiquer avec le serveur distant



Clé privée

(SSL/SSH) Spécifiez un nom de fichier de clé privée ; Lorsque spécifié, essayez automatiquement d'utiliser les fichiers suivants : "~/.ssh/id_rsa", "~/.ssh/id_dsa", ". /id_rsa'", "./id_dsa";
--key-type fe064393ae21641016c0f1f708a7a2f9
--pass b6cb73fae0efbdb0e9a26fd2eaddb3bb
--pubkey 42538adbdb6240b2b083a000a615d5bd
FTP
Carte réseau : eth1
IP : 8.8.8.8
Vous pouvez ajouter le numéro de port : eth1:20000-21000;



-- crlf
--ftp-account [data]
-- ftp-method [method]
--ftp-pasv
- -ftp-skip-pasv-ip
--ftp-create-dirs
--list-only
--use-ascii

(FTP) indique à curl de ne pas utiliser EPSV en PASV (mode passif) ;
(FTP) indique à curl de désactiver EPRT et LPRT ;
--limit-rate 0525e6a15abb94ecba5807e114b60ce6 Limiter la bande passante maximale utilisée par curl si l'unité n'est pas spécifiée, l'unité par défaut est "octets/seconde", vous pouvez également spécifier ; l'unité comme « K », « M », « G » et d'autres unités, telles que : « --limit-rate 1m » consiste à limiter la bande passante maximale à « 1 m octets/seconde » ; --speed-time 701425f2dac6a379291315d27192845a
--speed-limit 0525e6a15abb94ecba5807e114b60ce6 Si un téléchargement est plus lent que cette vitesse donnée (en octets par seconde) pendant speed-time secondes, il est interrompu speed-time est défini avec -y et est de 30 s'il n'est pas défini.
Autres
Options
-0/--http1.0 (HTTP) Forcer curl à utiliser HTTP 1.0 au lieu du HTTP 1.1 par défaut
--interface 8a11bc632ea32a57b3e3693c7987c420 Utilisation spécifiée ; Accès à l'interface de la carte réseau ;
curl --interface eth0 http://aiezu.com
curl --interface 10.0.0.101 http://aiezu.com
-X e2b9f03cad787b9644e1f51fd23b7dac
--request f199bef8c3606dcc4057f8cff7e82775
Définissez l'heure de conservation
--no-keepalive Désactivez la fonction keepalive
--no-buffer Désactivez la mise en mémoire tampon du flux de sortie
--buffer Activez ; flux de sortie mise en mémoire tampon ;
-L
--location
(HTTP/HTTPS) suit l'en-tête de réponse http "Location:" pour diriger vers la page après le saut ;
(utilisé lorsque le code de réponse http est 3XX, comme 301 jump, 302 jump)
--location-trusted (HTTP/HTTPS) est identique à "--location", mais le nom d'utilisateur et le mot de passe avant le saut seront envoyés après le saut
--compressed (HTTP) la requête utilise l'algorithme de compression du contenu renvoyé pour la compression ; curl prend en charge la décompression de la compression gzip
--connect-timeout 0e72eeb93e8222d25f37582edca0e1bc Spécifie le délai d'expiration de connexion maximum en "secondes" ; ;
-m seconds
--max- time seconds
Limiter la durée maximale de l'ensemble de l'opération de curl, en secondes
-s
--silent
mode silencieux. Ne pas afficher de barre de progression ni de message d'erreur
-#
--progress-bar
Afficher une barre de progression
error
option
-f
--fail
(HTTP) lorsque ; la connexion échoue (erreur 400 ou supérieure) ne renvoie pas la page d'erreur par défaut, mais renvoie un code d'erreur curl "22"
--retry d2c1e15f2758ae4ead444247148d09ea
--retry-delay 0e72eeb93e8222d25f37582edca0e1bc
- -retry-max-time 0e72eeb93e8222d25f37582edca0e1bc
Nombre de tentatives échouées ;
Intervalle de nouvelle tentative ;
--show-error
-- stderr 28897b20adb25fbae118a3f80f538dec
output
Si vous utilisez des caractères génériques pour obtenir plusieurs URL, vous pouvez utiliser "#" suivi de "numéro de séquence numérique", et curl le remplacera automatiquement par le mot-clé correspondant, tel que :
 curl "http://aiezu.com/{ a,b }.txt" -o "#1.txt";

curl "http://aiezu.com/{a,b }_[1 -3].txt" -o "#1#2.txt";
Sera enregistré sous : a1.txt, a2.txt, a3.txt, b1.txt, b2.txt, b3.txt

Si vous souhaitez créer un répertoire de création et de sauvegarde de règles, reportez-vous à : "--create-dirs"

Spécifier "-" dirigera la sortie standard "comme la console"



-O

--create-dirs
-w

Vous pouvez utiliser %{variable_name} dans les paramètres de format pour utiliser des variables liées aux informations de réponse, telles que : %{content_type}, %{http_code}, %{local_ip}..., pour plus de variables, veuillez vous référer à "man curl "Get ;
Les paramètres de format peuvent utiliser "n", "r", "t" et autres caractères d'échappement ;



Debug
Dump toutes les données entrantes et sortantes dans un fichier, y compris les informations de description ;
--trace-ascii file
Cette option écrasera les options -v, --verbose, --trace-ascii précédemment utilisées
--trace-time Ajouter des informations de temps au fichier de vidage ; 3d662b901940af3bef41b485ee9e3dc6

--verbose

Afficher le manuel d'aide complet ;
--help

Peut utiliser « n'importe quelle » méthode d'authentification --de base                                          -B/--use-ascii                                                                                            Méthode HTTP POST pour transmettre des données--cert-type fe064393ae21641016c0f1f708a7a2f9 ​​​​​​​​--key-type 7674b22ef33c73b930516fd6bc30b7a3                                                                                        ​​​​​​ --engine db20373c7b261c625fd6775baa65beba ​​​​​​--capath 6f655ecf17a4459bb2d05758ed836e3d                                                                                                                                                                                                                                                                                .--connect-timeout 0e72eeb93e8222d25f37582edca0e1bc                             - -ftp-create-dirs                                                             Si le répertoire distant n'existe pas, créez-le Contrôler l'utilisation de CWD Utiliser PASV/EPSV au lieu du port--ftp-skip-pasv-ip                                                                                                                                                                                                                                                                           -F/-Form & LT;et []-IGNORE-Content-Length - -I/-Affichage en tête uniquement des informations sur le document -J/-junk-session-cookies Lors de la lecture de fichiers, ignorez la session cookie-interface & lt; interface & gt; Utiliser l'interface/adresse réseau spécifiée --krb4 d01d6777fee22c1abcc265b0d6170d56                                                                      ​​ Autoriser les sites SSL sans certificats-K/ - -CONFIG 的 Le fichier de configuration spécifié lit -l/-list-only répertorie le nom du fichier dans le répertoire FTP -Limit -rate & lt rate & gt; vitesse --local-port7a16b29f015c60d23685bc81cbbd96c2                                                                                                                                                           Définir le temps de transfert maximum --max-redirs M/---manual                                                                                            -N/--no-buffer                                           R-P/-Proxytunnel Choisissez n'importe quelle méthode d'authentification proxy Utilisez la vérification d'identité de base -R/--remote-time                                                                     -Rtry-max-time & lt secondes & gt; -- chaussettes5 aa3755fb6675d042aec4e88952ca7a83 -t/-- telnet-option 67aea6ab925e1fd5e2ee4553bfe0973c --trace --trace-time                                                                             , ajoutez un horodatage --url 258c40d94d8689854ad79c4076dd5f96                                -V /--version                                                                                                                                                     avec les informations de version y/--speed-time                                                                             Accélérez le temps requis.La valeur par défaut est 30 Réglage du temps de transmission SSLV3 (SSL) Like -Q pour l'URL source pour le transfert tiers URL, Utiliser une transmission tierce 3-3P-User -4/-IPv4 -6/ -IPv6

3. Codes de sortie de la commande Linux curl

Voici les codes d'erreur de la commande Linux curl et leurs messages d'erreur correspondants, qui peuvent apparaître dans des environnements difficiles.

-a/--append                                                                                                                                                                                                                                   ​
- -data-ascii < data> - négocier DIGEST 字 Utilisation de l'authentification numérique
-Désactiver-EPRT Utilisation interdite de l'EPRT ou du LPRT
-Désactiver-Epsv Utilisation interdite de l'EPRT
- Egd-File & LT ; Fichier & GT ; Définir le chemin du socket EGD pour les données aléatoires (SSL)
--tcp-nodelay                                                                                                                                                                              > Fichier et mot de passe (SSL)
Nom du fichier de clé privée (SSL)
Mot de passe de clé privée (SSL)
CA Certificate (SSL)
--chiffres 4309a73696dbaeac0ddd115cebb6f9b7                                                                                                                                       gzip)
Le téléchargement consiste à convertir LF en CRLF
--ftp-method [multicwd/nocwd/singlecw d]
--ftp-pasv
Essayez d'utiliser SSL/TLS pour la transmission de données FTP
--ftp -SSL-Reqd 用. nécessite l'utilisation de SSL/TLS pour transférer la transmission de données FTP
-G/--get    Help
-H/--header 15a73cc5312745b1b00671f6e690e36a递 Les informations d'en-tête personnalisées sont transmises au serveur
La longueur des informations d'en-tête http
-n/--netrc                                                                                                                   Utiliser . netrc ou URL pour remplacer -n
--ntlm Utiliser l'authentification HTTP NTLM
Utilisez le proxy http
-nyauth
PROXY-BASIC
--proxy-digest                                                                                                                                                                                          Utiliser ntlm authentification
-P/--ftp-port
Le nombre de tentatives en cas de problème avec la transmission -Retry-Dlay & lt; secondes & gt; En cas de problème de transmission, configurez un intervalle de nouvelle tentative
-S/--show-error                                                                                                         s4 proxy étant donné l'hôte et le port
Proxy l'hôte et le port donnés avec chaussettes5
Définir le nom d'utilisateur et le mot de passe du proxy
-Y/-Speed-Limit pour arrêter la limite de vitesse de transmission, temps de vitesse 'seconds-z/-time-cond
-0 //- -http1.0 2/--sslv2                                                                                                                                                                                                                                                via -3/-SSLV3
--3p-Quote
-3p- URL
Utiliser le nom d'utilisateur et le mot de passe pour effectuer une transmission tierce
Utiliser IP4
Utilisez IP6
67Le nom d'utilisateur, le mot de passe ou similaire n'a pas été accepté et curl n'a pas réussi à se connecter.
退出码 错误描述
1 Protocole non pris en charge. Cette version de curl ne prend pas en charge ce protocole.
2 Échec de l'initialisation.
3 URL mal formée. La syntaxe n'était pas correcte.
5 Impossible de résoudre le proxy. L'hôte proxy donné n'a pas pu être résolu.
6 Impossible de résoudre l'hôte. L'hôte distant donné n'a pas été résolu.
7 Échec de la connexion à l'hôte.
8 Réponse étrange du serveur FTP. Le serveur a envoyé des données que Curl n'a pas pu analyser.
9 Accès FTP refusé. Le serveur a refusé la connexion ou l'accès à la ressource ou au répertoire particulier que vous souhaitiez atteindre. Le plus souvent, vous avez essayé de passer à un répertoire qui n'existe pas sur le serveur.
11 Réponse PASS bizarre FTP. Curl n'a pas pu analyser la réponse envoyée à la demande PASS.
13 Réponse PASV bizarre FTP, Curl n'a pas pu analyser la réponse envoyée à la demande PASV.
14 Format FTP bizarre 227. Curl n'a pas pu analyser la ligne 227 envoyée par le serveur.
15 FTP ne peut pas obtenir l'hôte. Impossible de résoudre l'adresse IP de l'hôte que nous avons obtenue sur la ligne 227.
17 FTP n'a pas pu définir le binaire. Impossible de changer la méthode de transfert en binaire.
18 Fichier partiel. Seule une partie du fichier a été transférée.
19 FTP n'a pas pu télécharger/accéder au fichier donné, la commande RETR (ou similaire) a échoué.
21 Erreur de citation FTP. Une commande quote a renvoyé une erreur du serveur.
22 Page HTTP non récupérée. L'URL demandée n'a pas été trouvée ou a renvoyé une autre erreur avec le code d'erreur HTTP égal ou supérieur à 400. Ce code retour n'apparaît que si -f/--fail est utilisé.
23 Erreur d'écriture. Curl n'a pas pu écrire de données sur un système de fichiers local ou similaire.
25 FTP n'a pas pu stocker le fichier. Le serveur a refusé l'opération STOR, utilisée pour le téléchargement FTP.
26 Erreur de lecture. Divers problèmes de lecture.
27 Mémoire insuffisante. Une demande d'allocation de mémoire a échoué.
28 Délai d'expiration de l'opération. Le délai d'attente spécifié a été atteint conformément aux conditions.
30 Échec du PORT FTP. La commande PORT a échoué. Tous les serveurs FTP ne prennent pas en charge la commande PORT, essayez plutôt d'effectuer un transfert en utilisant PASV !
31 FTP n'a pas pu utiliser REST. La commande REST a échoué. Cette commande est utilisée pour la reprise des transferts FTP.
33 Erreur de plage HTTP. La "commande" de plage n'a pas fonctionné.
34 Erreur de publication HTTP. Erreur interne de génération post-demande.
35 Erreur de connexion SSL. L'établissement de liaison SSL a échoué.
36 Reprise de téléchargement FTP incorrecte. Impossible de poursuivre un téléchargement précédemment interrompu.
37 FILE n'a pas pu lire le fichier. Échec de l'ouverture du fichier. Autorisations ?
38 LDAP ne peut pas lier. L'opération de liaison LDAP a échoué.
39 La recherche LDAP a échoué.
41 Fonction introuvable. Une fonction LDAP requise est introuvable.
42 Annulé par rappel. Une application a demandé à curl d'abandonner l'opération.
43 Erreur interne. Une fonction a été appelée avec un mauvais paramètre.
45 Erreur d'interface. Une interface sortante spécifiée n'a pas pu être utilisée.
47 Trop de redirections. Lorsque vous suivez des redirections, curl atteint le montant maximum.
48 Option TELNET inconnue spécifiée.
49 Option telnet mal formée.
51 Le certificat SSL du homologue ou l'empreinte digitale SSH MD5 n'était pas ok.
52 Le serveur n'a rien répondu, ce qui ici est considéré comme une erreur.
53 Moteur de chiffrement SSL introuvable.
54 Impossible de définir le moteur de chiffrement SSL comme par défaut.
55 Échec de l'envoi des données réseau.
56 Échec de la réception des données réseau.
58 Problème avec le certificat local.
59 Je ne pouvais pas utiliser le chiffrement SSL spécifié.
60 Le certificat homologue ne peut pas être authentifié avec des certificats CA connus.
61 Encodage de transfert non reconnu.
62 URL LDAP non valide.
63 Taille maximale du fichier dépassée.
68 Fichier introuvable sur le serveur TFTP.
69 Problème d'autorisation sur le serveur TFTP.
70 Espace disque insuffisant sur le serveur TFTP.
71 Opération TFTP illégale .
72 ID de transfert TFTP inconnu.
73 Le fichier existe déjà (TFTP).
74 Aucun utilisateur de ce type (TFTP).
75 Conversion de caractères échoué.
76 Fonctions de conversion de caractères requises.
77 Problème de lecture du certificat SSL CA (chemin ? droits d'accès ?).
78 La ressource référencée dans l'URL ne n'existe pas.
79 Une erreur non spécifiée s'est produite lors de la session SSH.
80 Échec de l'arrêt de la connexion SSL.
82 Impossible de charger le fichier CRL, manquant ou erroné format (ajouté dans 7.19.0) Ceux qui existent sont censés ne jamais changer.

4. Utilisation courante

1. Télécharger (option :-o ou option :-O)

1.1. dodo1.JPG

#Veuillez noter que l'url après -O doit être spécifique à un certain fichier, sinon il ne sera pas capturé

curl -O http://www.linux.com/dodo1.JPG

1.2 : Téléchargement en boucle

Parfois, les noms des premières parties des images téléchargées peuvent être les mêmes, mais les noms des dernières vertèbres de la queue sont différents. Cela enregistrera tous les dodo1, dodo2, dodo3, dodo4 et dodo5

curl -O http://www.linux.com/dodo[1-5].JPG

1.3 : Téléchargez et renommez

dans hello/dodo1 Le . Le fichier JPG deviendra hello_dodo1.JPG après le téléchargement, et ainsi de suite pour les autres fichiers, évitant ainsi efficacement l'écrasement du fichier

curl -o #1_#2.JPG http://www.linux.com/{hello ,bb}/ dodo[1-5].JPG

Étant donné que les noms de fichiers dans les fichiers hello et bb téléchargés sont tous dodo1, dodo2, dodo3, dodo4, dodo5. Par conséquent, le deuxième téléchargement écrasera le premier téléchargement et le fichier devra donc être renommé.

curl -O http://www.linux.com/{hello,bb}/dodo[1-5].JPG


1.4 : Télécharger en morceaux (option : -r)

curl -r 0-100 -o dodo1_part1.JPG http://www.linux.com/dodo1.JPG

curl -r 100-200 -o dodo1_part2.JPG http://www.linux.com/dodo1.JPG
curl -r 200- -o dodo1_part3 .JPG http://www.linux.com/dodo1.JPG
cat dodo1_part* > dodo1.JPG #De cette façon, vous pouvez voir le contenu de dodo1.JPG

1.5 : Téléchargez les fichiers via FTP (option : -u)

curl peut télécharger des fichiers via FTP. curl fournit deux syntaxes pour le téléchargement depuis ftp

curl -O -u username:password ftp://www.linux.com/dodo1.JPG
curl -O ftp://username :Password@ www.linux.com/dodo1.JPG

1.6 : Télécharger, afficher la barre de progression (option : -#) ou ne pas afficher la barre de progression (option : -s)

curl -# -O http://www. .com/dodo1.JPG

curl -s -O http://www.linux.com/dodo1.JPG

1.7, télécharger, reprendre le transfert à partir du point d'arrêt (-C ab76cfca1a1dc7ff1291dcdf873f72ec)

reprendre le transfert à partir du point d'arrêt, Continuer téléchargement/téléchargement à partir de la position spécifiée dans l'en-tête du fichier ; décalez la position de départ du transfert de reprise. Si la valeur de décalage est "-", curl identifiera automatiquement la position de départ dans le fichier et démarrera la transmission. centos6.8.iso -C - http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso

curl -C -O http://www.linux.com /dodo1.JPG


2. Télécharger le fichier (option : -T)

curl -T dodo1.JPG -u Nom d'utilisateur : Mot de passe ftp://www.linux.com/img/

3 . Page source forgée|Faux référent|Lien chaud (option : -e)

De nombreux serveurs vérifieront le référent de l'accès http pour contrôler l'accès. Par exemple : vous visitez d'abord la page d'accueil, puis accédez à la page de messagerie sur la page d'accueil. L'adresse de référence de l'adresse e-mail est ici l'adresse de la page après avoir accédé avec succès à la page d'accueil. Si le serveur constate que l'adresse de référence de la page de messagerie est. pas l'adresse de la page d'accueil, il le déterminera. C'est une connexion volée #Cela fera penser au serveur que vous avez cliqué sur un lien de www.linux.com

curl -e "www.linux.com" http:// mail.linux.com

#Tell Love the E family, je viens de Baidu
curl -e http://baidu.com http://aiezu.com


4 Faux équipement proxy (imitation navigateur)

. Certains sites Web doivent utiliser des navigateurs spécifiques pour y accéder, et certains nécessitent l'utilisation de versions spécifiques. L'option intégrée de Curl : -A nous permet de spécifier le navigateur pour accéder au site Web curl -A "Mozilla/4.0 (compatible ; MSIE 8.0; Windows NT 5.0)" http://www.linux.com

#Tell the E les gens, je suis une araignée d'exploration GOOGLE (en fait, je suis la commande curl)

curl -A "Mozilla/5.0 (compatible ; Googlebot/2.1; +http://www.google.com/bot.html)" http : //aiezu.com
#Dites à Aiezu, j'utilise le navigateur intégré de WeChat
curl -A "Mozilla/5.0 AppleWebKit/600 Mobile MicroMessenger/6.0" http://aiezu.com



5. request

5.1. Définir l'en-tête de la requête http (ou option :-H ou option :--head) curl -H "Cache-Control:no-cache" http://aiezu.com

5.2. serveur et autre port (option ::-x)
#Souvent, vous devez utiliser un serveur proxy pour accéder à Internet (par exemple, lorsque vous utilisez un serveur proxy pour accéder à Internet ou que votre adresse IP est bloquée par d'autres parce que vous utilisez curl sur les sites Web d'autres personnes), heureusement, curl utilise l'option intégrée : -x pour prendre en charge la configuration du proxy

curl -x 192.168.100.100:1080 http://www.linux.com



6, réponse http en-tête

6.1. Afficher l'en-tête de réponse http (option :-I)
# Voir à quoi ressemble l'en-tête http de ce site
curl -I http://aiezu.com
Sortie :
HTTP/1.1 200 OK
Date : vendredi , 25 novembre 2016 16:45:49 GMT
Serveur : Apache
Set-Cookie : rox__Session=abdrt8vesprhnpc3f63p1df7j4; path=/
Expire : jeu. 19 novembre 1981 08:52:00 GMT
Contrôle du cache : pas de magasin, non -cache, must-revalidate, post-check=0, pre-check=0
Pragma : no-cache
Vary : Accept-Encoding
Content-Type : text/html; charset=utf-8

6.2. Les informations d'en-tête dans la réponse (option : -D)
curl -D cookied.txt http://www.linux.com
Après l'exécution, les informations du cookie seront enregistrées dans cookied.txt
Remarque : -c (minuscule) Les cookies générés sont différents des cookies en -D.

7. Envoyer les données du formulaire

curl -F "pic=@logo.png" -F "site=aiezu" http://aiezu.com/

Cookie

8.1. Envoyer des cookies (option :-b)
#Certains sites Web utilisent des cookies pour enregistrer les informations de session. Pour les navigateurs comme Chrome, les informations sur les cookies peuvent être facilement traitées, mais les cookies peuvent également être facilement traités en ajoutant des paramètres pertinents dans curl
curl -b "domain=aiezu.com" http://aiezu.com
#De nombreux sites Web Ils surveillent tous vos informations de cookies pour déterminer si vous visitez leur site Web conformément aux règles, nous devons donc utiliser les informations de cookies enregistrées. Option intégrée : -b
curl -b cookiec.txt http://www.linux.com

8.2 Enregistrez les informations du cookie dans la réponse http (option : -c)
Après l'exécution, les informations du cookie dans le La réponse http sera Elle est enregistrée dans cookiec.txt
curl -c cookiec.txt http://www.linux.com

9 Tester une URL

9.1 Tester si une URL est accessible
curl. -v http ://www.linux.com

9.2. Testez la valeur de retour de la page Web (option : -w [format])
curl -o /dev/null -s -w %{http_code} www.linux.com

10. Enregistrez la page Web visitée (>>)

2.1 : Utilisez la fonction de redirection de Linux pour enregistrer
curl http://www.linux.com >>

11. Méthode de requête curl -i -v -H '' -X POST -d '' http:www.test.com/a/b

Parmi eux, -X POST -d, -X GET -d, -X PUT -d est équivalent à -F, -G -d, -P respectivement


Prenons l'exemple de la demande de publication :

11.1, -X POST -d

(11.1.1), application POST/x -www-form-urlencoded
application/x-www-form-urlencoded est la valeur par défaut
curl -X POST -d "param1=value1¶m2=value2" http://localhost:3000/data
Équivalent à
curl -H " Content-Type:application/ x-www-form-urlencoded" -X POST -d "param1=value1¶m2=value2" http://localhost:3000/data
Utilisation de fichiers de données
curl -X POST -d "@data. txt" http:// localhost:3000/data
Le contenu de data.txt est le suivant : param1=value1¶m2=value2

(11.1.2), POST application/json

curl -H "Content-Type:application/ json" -X POST -d '{ "key1":"value1","key2":"value2"}' http://localhost:3000/data

Si vous utilisez des fichiers de données :
curl -X POST -d "@ data.json" http://localhost :3000/data
Le contenu de data.json est le suivant : {"key1": "value1", "key2": "value2"}
Autre exemple :
curl -H " Type de contenu :application/json" -X POST -d "{"app_key":"$appKey","time_stamp":"$time"}" http://www.test.com.cn/a/b

11.2、-F

curl -v - H "token: 222" -F "file=@/Users/funglio/Downloads/401.png" localhost:8000/api/v1/upimg


curl -f http:/ /www.linux.com/error

11.3. Autres exemples

(11.3.1),

curl -X POST "http://www.test.com/e/f" -H "Content-Type : application/x-www-form-urlencoded; charset=UTF-8"

-d "a=b"

-d "c=d"
-d "e=f"
-d "g=h"

(11.3.2), erreur : curl - i -G -d "a=b#1&c=d" http://www.test.com/e/f

Correct : utilisez l'urlencode pour convertir les valeurs de paramètres qui sont symboles spéciaux

curl -i -G -d "a=b%231&c=d" http://www.test.com/e/f

12.

curl -v可以显示一次http通信的整个过程,包括端口连接和http request头信息。
如果觉得还不够,那么下面的命令可以查看更详细的通信过程:
curl --trace output.txt www.baidu.com 或者 curl --trace-ascii output.txt www.baidu.com 
运行后,请打开output.txt文件查看。
curl --trace output.txt  http://www.baidu.com
curl --trace-ascii output2.txt  http://www.baidu.com
curl --trace output3.txt --trace-time http://www.baidu.com
curl --trace-ascii output4.txt --trace-time http://www.baidu.com 

举例:有需求每5分钟请求一次http://www.test.com/a/b生成一个日志文件。希望一月的日志(正确的和错误的)能写入一个日志文件
day=`date +%F`
logfile='/var/logs/www.test.com_'`date +%Y%m`'.log'
/usr/bin/echo -e "\n\n[${day}] Start request \n " >> ${logfile}
/bin/curl -v "http://www.test.com/a/b" -d "ccccc" 1>> ${logfile} 2>> ${logfile} --trace-time
/usr/bin/echo -e "\n\n[${day}] End request\n" >> ${logfile}

13、显示抓取错误

curl -f http://www.linux.com/error

相关推荐:《Linux视频教程

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

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