O que é o cURL
O cURL (pronuncia-se "kurl") é uma ferramenta de linha de comando para transferir dados de e para servidores. Com poucas linhas no terminal você move grandes volumes de dados de um servidor para outro.
Como todo comando, o cURL segue uma sintaxe fixa:
curl [opções] [URL]A parte das "opções" diz o que o comando deve fazer. Desses parâmetros — também chamados de flags — existem cerca de 380. Um dos mais conhecidos é o -o, que grava o conteúdo de uma página em um arquivo.
Como origem ou destino, o cURL precisa de uma URL (Uniform Resource Locator), uma forma específica de identificador uniforme de recursos. Protocolos de rede que não são endereçados por URL não funcionam com o cURL.
Por baixo, o cURL se apoia na biblioteca libcurl, que traz os protocolos aceitos. A libcurl é portável e se comporta igual no Linux, no Windows e no macOS; nesses sistemas costuma vir pré-instalada. Se não estiver, baixe o pacote no site do cURL.
Quais protocolos o cURL aceita
O cURL aceita protocolos que transferem dados nos dois sentidos e são endereçados por URL. HTTP é o padrão; além dele, funciona com:
- DICT
- FILE
- FTP e FTPS
- GOPHER e GOPHERS
- IMAP e IMAPS
- LDAP e LDAPS
- MQTT
- POP3 e POP3S
- RTMP e RTSP
- SCP e SFTP
- SMB e SMBS
- SMTP e SMTPS
- TELNET
- TFTP
Por que usar o cURL
O cURL é popular porque é versátil, simples e confiável. Ele baixa páginas inteiras e transfere arquivos em qualquer formato aceito, e ainda faz autenticação de usuário, HTTP POST, Metalink, upload por FTP e uso de proxy em conexões SSL. Some a isso:
- uma saída detalhada do que foi enviado e recebido, valiosa para depurar
- suporte a muitos protocolos de rede
- a possibilidade de indicar várias variações de uma URL em um único comando com chaves
- o mesmo comportamento em todos os sistemas operacionais usuais
cURL com proxy HTTP ou HTTPS
Para testar, serve bem um serviço que devolva o IP de origem da requisição: se o proxy estiver funcionando, você vê o endereço dele e não o seu.
Os comandos
Abra um terminal e consulte as opções:
curl --helpNa lista aparece, entre outras:
-x, --proxy [protocol://]host[:port]O x é minúsculo. Os dados do proxy são passados com -x ou com --proxy; as duas formas significam a mesma coisa:
curl -x "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"ou
curl --proxy "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"Se aparecerem erros de certificado SSL, acrescente -k em minúsculo. Com isso o cURL aceita conexões não verificadas:
curl --proxy "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip" -kA URL do proxy e a de destino ficam entre aspas duplas. Não é por acaso: essa é a forma recomendada para que caracteres especiais na URL não confundam o interpretador de comandos.
O protocolo de proxy padrão é o HTTP, então estes dois comandos fazem exatamente a mesma coisa:
curl --proxy "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"
curl --proxy "user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"cURL com proxy SOCKS
curl -x "socks5://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"Conforme a versão do SOCKS, você escreve socks4://, socks4a://, socks5:// ou socks5h://. Com socks5h:// quem resolve o nome de host é o proxy, e não a sua máquina — em geral a opção recomendada para scraping, já que, do contrário, a consulta DNS sai pela sua própria conexão.
Como alternativa, dá para definir o proxy com --socks5 em vez de -x; nesse caso, usuário e senha vão em --proxy-user.
O cURL é uma ferramenta muito forte para automação e, em suporte a proxy, uma das linhas de comando mais completas disponíveis. Como a libcurl ainda se dá bem com o PHP, muitas aplicações web a usam em projetos de scraping, o que faz do cURL parte do equipamento básico de qualquer scraper. Os endereços que você escolher decidem a taxa de sucesso: Proxies residenciais para alvos exigentes e Proxies de datacenter para coletas rápidas em volume.




