curl es una herramienta de línea de comandos comúnmente utilizada para solicitar un servidor web. Su nombre es el significado de la herramienta de URL del cliente.
Su función es muy poderosa, Linux básicamente viene con curl, se puede ver contenido más completo: Curl Cookbook
Enlace de referencia para este artículo: http://www.ruanyifeng.com/blog/2019/09/curl-reference.html
1. Cuando no hay parámetros, curl envía una solicitud GET.
curl https: // www.baidu.com/
El comando anterior envía una solicitud GET a www.baidu.com, y el contenido devuelto por el servidor se mostrará en la línea de comando.
-UNA
-A
El parámetro especifica el encabezado del agente de usuario del cliente, es decir User-Agent
. La cadena de agente de usuario predeterminada para curl es curl/[version]
.
$ curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com
El comando anterior se User-Agent
cambiará al navegador Chrome.
$ curl -A '' https://google.com
El comando anterior eliminará el User-Agent
encabezado.
También puede -H
especificar el encabezado directamente a través de parámetros y cambiarlo User-Agent
.
$ curl -H 'User-Agent: php/1.0' https://google.com
-si
-b
Los parámetros se utilizan para enviar cookies al servidor.
$ curl -b 'foo=bar' https://google.com
El comando anterior generará un encabezado Cookie: foo=bar
y enviará una cookie nombrada foo
y valorada al servidor bar
.
$ curl -b 'foo1=bar;foo2=bar2' https://google.com
El comando anterior envía dos cookies.
$ curl -b cookies.txt https://www.google.com
El comando anterior lee el archivo local cookies.txt
, que contiene la cookie establecida por el servidor (ver -c
parámetros), y la envía al servidor.
-C
-c
El parámetro escribe la cookie establecida por el servidor en un archivo.
$ curl -c cookies.txt https://www.google.com
El comando anterior escribe la cookie establecida por la respuesta HTTP del servidor a un archivo de texto cookies.txt
.
-re
-d
El parámetro se usa para enviar el cuerpo de datos de la solicitud POST.
$ curl -d'login=emma&password=123'-X POST https://google.com/login # 或者 $ curl -d 'login=emma' -d 'password=123' -X POST https://google.com/login
Después de usar los -d
parámetros, la solicitud HTTP agregará automáticamente encabezados Content-Type : application/x-www-form-urlencoded
. Y convertirá automáticamente la solicitud al método POST, por lo que puede omitirse -X POST
.
-d
El parámetro puede leer los datos del archivo de texto local y enviarlo al servidor.
$ curl -d '@data.txt' https://google.com/login
El comando anterior lee data.txt
el contenido del archivo y lo envía al servidor como un cuerpo de datos.
--data-urlencode
--data-urlencode
El parámetro es equivalente al -d
cuerpo de datos de la solicitud POST. La diferencia es que los datos enviados serán codificados por URL automáticamente.
$ curl --data-urlencode 'comment=hello world' https://google.com/login
En el código anterior, hello world
hay un espacio entre los datos enviados , que requiere codificación de URL.
-mi
-e
El parámetro se usa para establecer el encabezado HTTP Referer
, que indica el origen de la solicitud.
curl -e 'https://google.com?q=example' https://www.example.com
El comando anterior establece el Referer
encabezado https://google.com?q=example
.
-H
Los parámetros se pueden agregar directamente Referer
para lograr el mismo efecto.
curl -H 'Referer: https://google.com?q=example' https://www.example.com
-F
-F
El parámetro se usa para cargar un archivo binario al servidor.
$ curl -F '[email protected]' https://google.com/profile
El comando anterior agregará un encabezado a la solicitud HTTP Content-Type: multipart/form-data
y luego cargará el archivo photo.png
como un file
campo.
-F
El parámetro puede especificar el tipo MIME.
$ curl -F '[email protected];type=image/png' https://google.com/profile
El comando anterior especifica el tipo MIME image/png
; de lo contrario, curl establecerá el tipo MIME application/octet-stream
.
-F
El parámetro también puede especificar el nombre del archivo.
$ curl -F '[email protected];filename=me.png' https://google.com/profile
En el comando anterior, el nombre del archivo original es photo.png
, pero el nombre del archivo recibido por el servidor me.png
.
-SOL
-G
Los parámetros se utilizan para construir la cadena de consulta de la URL.
$ curl -G -d 'q=kitties' -d 'count=20' https://google.com/search
El comando anterior emitirá una solicitud GET, la URL solicitada real es https://google.com/search?q=kitties&count=20
. Si se omite --G
, se emitirá una solicitud POST.
Si los datos requieren codificación URL, los --data--urlencode
parámetros se pueden combinar .
$ curl -G --data-urlencode 'comment=hello world' https://www.example.com
-H
-H
El parámetro agrega el encabezado de la solicitud HTTP.
$ curl -H 'Accept-Language: en-US' https://google.com
El comando anterior agrega un encabezado HTTP Accept-Language: en-US
.
$ curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' https://google.com
El comando anterior agrega dos encabezados HTTP.
$ curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://google.com/login
El comando anterior agrega el encabezado de la solicitud HTTP Content-Type: application/json
y luego -d
envía los datos JSON con parámetros.
-yo
-i
El parámetro imprime el encabezado HTTP al que responde el servidor.
$ curl -i https://www.example.com
Después de recibir la respuesta del servidor, el comando anterior genera el encabezado de la respuesta del servidor, luego deja en blanco una línea y luego genera el código fuente de la página web.
-YO
-I
El parámetro envía una solicitud HEAD al servidor y luego imprime los encabezados HTTP devueltos por el servidor.
$ curl -I https://www.example.com
El comando anterior genera la respuesta del servidor a la solicitud HEAD.
--head
El parámetro es equivalente a -I
.
$ curl --head https://www.example.com
-k
-k
El parámetro especifica omitir la detección SSL.
$ curl -k https://www.example.com
El comando anterior no verificará si el certificado SSL del servidor es correcto.
-L
-L
El parámetro hace que la solicitud HTTP siga la redirección del servidor. curl no sigue las redirecciones por defecto.
$ curl -L -d 'tweet=hi' https://api.twitter.com/tweet
- tasa límite
--limit-rate
Se utiliza para limitar el ancho de banda de las solicitudes y respuestas HTTP, simulando un entorno de velocidad de red lenta.
$ curl --limit-rate 200k https://google.com
El comando anterior limita el ancho de banda a 200K bytes por segundo.
-o
-o
El parámetro guarda la respuesta del servidor como un archivo, que es equivalente al wget
comando.
$ curl -o example.html https://www.example.com
El comando anterior se www.example.com
guardará como example.html
.
-O
-O
El parámetro guarda la respuesta del servidor como un archivo y utiliza la última parte de la URL como el nombre del archivo.
$ curl -O https://www.example.com/foo/bar.html
El comando anterior guarda la respuesta del servidor como un archivo con el nombre del archivo bar.html
.
-s
-s
El parámetro no generará información de error y progreso.
$ curl -s https://www.example.com
Una vez que se produce un error en el comando anterior, el mensaje de error no se mostrará. Si no se produce ningún error, el resultado de la operación se mostrará normalmente.
Si desea que curl no produzca salida, puede usar el siguiente comando.
$ curl -s -o /dev/null https://google.com
-S
-S
El parámetro especifica que solo se emite el mensaje de error, que generalmente se -s
usa junto con él.
$ curl -s -o /dev/null https://google.com
El comando anterior no tiene salida a menos que ocurra un error.
-u
-u
Los parámetros se utilizan para establecer el nombre de usuario y la contraseña para la autenticación del servidor.
$ curl -u 'bob:12345' https://google.com/login
El comando anterior establece el nombre de usuario bob
y la contraseña 12345
y luego lo convierte en un encabezado HTTP Authorization: Basic Ym9iOjEyMzQ1
.
curl puede reconocer el nombre de usuario y la contraseña en la URL.
$ curl https://bob:12345@google.com/login
El comando anterior puede identificar el nombre de usuario y la contraseña en la URL y convertirlo en el encabezado HTTP en el ejemplo anterior.
$ curl -u 'bob' https://google.com/login
El comando anterior solo establece el nombre de usuario. Después de la ejecución, curl le pedirá al usuario que ingrese la contraseña.
-v
-v
Todo el proceso de comunicación de salida de parámetros se utiliza para la depuración.
$ curl -v https://www.example.com
--trace
Los parámetros también se pueden usar para depurar y también generar datos binarios sin formato.
$ curl --trace - https://www.example.com
-X
-x
El parámetro especifica el proxy para la solicitud HTTP.
$ curl -x socks5://james:cats@myproxy.com:8080 https://www.example.com
El comando anterior especifica que la solicitud HTTP se myproxy.com:8080
envía a través del proxy socks5.
Si no se especifica ningún protocolo proxy, el valor predeterminado es HTTP.
$ curl -x james:cats@myproxy.com:8080 https://www.example.com
En el comando anterior, el proxy solicitado utiliza el protocolo HTTP.
-X
-X
El parámetro especifica el método de la solicitud HTTP.
$ curl -X POST https://www.example.com
El comando anterior https://www.example.com
emite una solicitud POST.