2019-10-19 14:41:42 +01:00
# curl
2024-10-24 14:49:48 -03:00
> Transfere dados entre o computador local e um servidor.
> Suporta a maioria dos protocolos de comunicação, incluindo HTTP, HTTPS, FTP, SCP, etc.
2023-05-20 07:49:15 +05:30
> Mais informações: <https://curl.se/docs/manpage.html>.
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
- Faz um pedido HTTP GET e descarrega os conteúdos em `stdout` (saída padrão):
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
`curl {{https://example.com}}`
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
- Faz um pedido HTTP GET, segue redirecionamentos ``3xx` e descarrega os cabeçalhos da resposta e conteúdos para `stdout` :
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
`curl --location --dump-header - {{https://example.com}}`
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
- Baixa um arquivo, salvando a saída no arquivo indicado pela URL:
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
`curl --remote-name {{https://example.com/arquivo.zip}}`
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
- Envia dados codificados por formulário (pedido POST do tipo `application/x-www-form-urlencoded` ). Usa `--data @file_name` ou `--data @'-'` para ler da `stdin` :
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
`curl -X POST --data {{'nome=maria'}} {{http://example.com/formulario}}`
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
- Envia um pedido com um cabeçalho adicional, usando um método HTTP personalizado e por meio de um proxy (tal como BurpSuite), ignorando certificados autoassinados inseguros:
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
`curl -k --proxy {{http://127.0.0.1:8080}} --header {{'Authorization: Bearer token'}} --request {{GET|PUT|POST|DELETE|PATCH|...}} {{https://example.com}}`
2019-10-19 14:41:42 +01:00
2023-12-27 15:37:07 -03:00
- Envia dados no formato JSON, especificando o cabeçalho de tipo de conteúdo (content-type) apropriado:
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
`curl --data {{'{"nome":"maria"}'}} --header {{'Content-Type: application/json'}} {{http://example.com/usuarios/1234}}`
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
- Passa o certificado do cliente e chave para um recurso, pulando a validação do certificado:
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
`curl --cert {{cliente.pem}} --key {{chave.pem}} --insecure {{https://example.com}}`
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
- Resolve um hostname para um endereço de IP personalizado, com a saída verbosa (similar a editar o arquivo `/etc/hosts` para resolução de DNS personalizada):
2019-10-19 14:41:42 +01:00
2024-10-24 14:49:48 -03:00
`curl --verbose --resolve {{example.com}}:{{80}}:{{127.0.0.1}} {{http://example.com}}`