# CURL

O cURL (pronuncia-se) é um projeto de software de computador que fornece uma biblioteca e uma ferramenta de linha de comando para transferir dados usando vários protocolos .O projeto cURL produz dois produtos, libcurl e cURL. Lançado pela primeira vez em 1997, o nome cURL vem do inglês "Client URL", que significa "URL do cliente". O autor original e principal desenvolvedor é o desenvolvedor sueco Daniel Stenberg .

## libcurl

libcurl é uma biblioteca de transferência de URL do lado do cliente, suportando cookies, DICT, FTP, FTPS, Gopher, HTTP (com suporte a HTTP/2 ), HTTP POST, HTTP PUT, proxy HTTP, HTTPS, IMAP, Kerberos, LDAP, POP3, RTSP, SCP e SMTP. A biblioteca suporta o esquema URI de arquivos, SFTP, Telnet, TFTP, retomada de transferência de arquivos, upload de FTP, upload baseado em formulário HTTP, certificados HTTPS, LDAPS, proxies e autenticação de usuário.
A biblioteca libcurl é portável. Ela constrói e funciona de forma idêntica em muitas plataformas, incluindo AIX, AmigaOS, Android , BeOS, BlackBerry Tablet OS e BlackBerry 10, OpenVMS, Darwin, DOS, FreeBSD, HP-UX, HURD, iOS, IRIX, Linux, MacOS , NetBSD, NetWare, OpenBSD, OS / 2, QNX Neutrino, SO RISC, Solaris, Symbian, Tru64, Ultrix, UnixWare e Windows.
A biblioteca libcurl é gratuita, "thread-safe" e compatível com IPv6. Vinculações estão disponíveis para mais de 40 linguagens, incluindo C/C++, Java, PHP e Python.
A biblioteca libcurl pode suportar axTLS, GnuTLS, mbed TLS, NSS, QSOSSL no IBM i, SChannel no Windows, Secure Transport no macOS e iOS, SSL / TLS pelo OpenSSL, e wolfSSL.

## cURL

cURL é uma ferramenta de linha de comando utilizada para obter ou enviar dados, incluindo arquivos, usando a sintaxe URL.
Por utilizar a biblioteca libcurl, cURL suporta vários protocolos de rede comuns, incluindo HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, LDAP, DAP, DICT, TELNET, ARQUIVO, IMAP, POP3, SMTP e RTSP (os quatro últimos apenas em versões mais recentes que 7.20.0 ou 9 de fevereiro de 2010).
O cURL suporta HTTPS e executa a verificação de certificado SSL por padrão quando um protocolo seguro é especificado, como HTTPS. Quando o cURL se conecta a um servidor remoto via HTTPS, ele obtém o certificado do servidor remoto e verifica em seu armazenamento de certificados CA a validade do mesmo, de modo a garantir que o servidor remoto seja aquele que afirma ser. Alguns pacotes cURL são embutidos com um arquivo que armazena os certificados CA. Existem várias opções para especificar um certificado de CA, como --cacert e --capath . A opção --cacert pode ser usada para especificar o local do arquivo onde o certificado CA está armazenado. Na plataforma Windows, se um arquivo de certificado de CA não for especificado, o cURL procurará por um arquivo com nome “curl-ca-bundle.crt” na seguinte ordem:
* Diretório onde o programa cURL está localizado.
* Diretório de trabalho atual.
* Diretório do sistema do Windows.
* Diretório do Windows.
* Diretórios especificados nas variáveis de ambiente %PATH%.
O cURL retornará uma mensagem de erro se o servidor remoto estiver usando um certificado autoassinado ou se o certificado do servidor remoto não estiver assinado por uma CA listada no arquivo de certificado da CA. A opção -k ou --insecure pode ser usada para pular a verificação de certificados. Como alternativa, se o servidor remoto for confiável, o certificado CA do servidor remoto poderá ser adicionado ao arquivo de armazenamento dos certificados CA.