Nesta publicação, abordaremos:
- O que é curl
- Instalação do curl.
- Do que você precisará para começar a usar proxies
- Como especificar um proxy HTTP/HTTPS no curl.
- Como definir proxies SOCKS no curl.
- Dicas e truques importantes
- Quais proxies são mais indicados para o curl?
O que é cURL?
cURL, abreviação de “URL do cliente” em inglês, é uma ferramenta para enviar e receber dados pela internet usando URLs. Como projeto de software, ele oferece uma biblioteca (libcurl
) e uma ferramenta de linha de comando (curl
). Aqui, vamos nos concentrar no curl
, a ferramenta de linha de comando para transferir dados por meio da sintaxe de URL.
O projeto suporta uma grande variedade de protocolos, incluindo HTTP, HTTPS, FTP, FTPS, SFTP, POP3, POP3S, IMAP, IMAPS, LDAP, LDAPS, SCP e muitos outros. Por isso, o curl
é o cliente HTTP de linha de comando mais popular e usado no mundo.
O cURL é altamente versátil e representa uma solução comum para realizar diversas tarefas, como fazer solicitações HTTP, baixar arquivos, fazer upload de dados e interagir com APIs. Ele oferece vários recursos, desde a personalização de solicitações até o suporte para proxies.
Instalação do curl
Agora vamos aprender como instalar o curl
em sua máquina.
macOS
Não é necessário instalar o curl
no macOS. A ferramenta já está incluída no sistema operacional e você pode usá-la nativamente no aplicativo Terminal.
Windows
A partir do Windows 10, o Windows já vem com uma cópia do curl
. Ao mesmo tempo, o comando curl
é um alias (pseudônimo) para o comando Invoke-WebRequest
do PowerShell. Isso significa que os comandos curl
no terminal do Windows invocarão o Invoke-Request
nos bastidores. Para evitar isso e realmente usar curl
do cURL, substitua “curl” por “curl.exe”. Dessa forma, o PowerShell executará o curl e não Invoke-Request
.
Por exemplo, você pode confirmar no terminal a versão atual do curl
instalada em sua máquina Windows com:
curl.exe --version
Isso deverá reproduzir algo semelhante a:
curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN
Release-Date: 2023-03-20
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSockets
Se você for usuário do Windows, substitua todas as ocorrências de “curl” nos comandos do artigo pela sequência “curl.exe”. Caso contrário, configure o Subsistema do Windows para Linux (WSL) e siga as instruções abaixo.
Linux
No Linux, o procedimento para instalar o curl
muda dependendo da distribuição específica que você está usando. Distribuições populares do Linux, como Ubuntu e Fedora, vêm com ele por padrão. Portanto, você pode usar o curl
diretamente no terminal.
Em outras distribuições, o curl
pode não estar incluído. Nesses casos, você pode adicioná-lo usando o gerenciador de pacotes de distribuição. Em um sistema operacional baseado em Debian, você pode instalar o curl com o seguinte comando:
sudo apt-get install curl
Do que você precisa para usar um proxy no curl
Um proxy atua como intermediário entre o cliente e o servidor de destino. Ele intercepta solicitações do cliente, encaminha-as para o servidor, recebe a resposta do servidor e a envia de volta ao cliente. Essa abordagem de intermediário aumenta o anonimato e ajuda a evitar restrições de rede. Isso se deve ao fato de o servidor de destino ver as solicitações como sendo provenientes do IP e da localização do servidor proxy escolhido, não de você.
Para começar a usar o curl com serviços de proxies, primeiro você precisa de acesso a um proxy. Especificamente, aqui está a sintaxe de um URL de proxy:
[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]
Ela consiste em:
<PROTOCOL>
: o protocolo a ser usado para se conectar ao servidor proxy. Se nenhum protocolo for especificado, o curl usará http:// por padrão.<HOST>
: o endereço IP ou URL necessário do nome do host do servidor proxy.<PORT>
: o número da porta que o servidor proxy está escutando. Se nenhuma porta for especificada, o curl usará 1080 por padrão.<USERNAME>
: o nome de usuário opcional a especificar quando a autenticação for necessária.<PASSWORD>
: a senha opcional a especificar quando a autenticação for necessária.
Quanto aos protocolos de proxy, os mais populares são HTTP e HTTPS, seguidos por SOCKS.
É hora de recuperar um proxy HTTP válido!
Você pode obter um gratuitamente na lista de proxies gratuitos, conforme abaixo:
IP Address: 71.19.249.97; Port: 8443
Isso significa que o URL do proxy é:
http://71.19.249.97:8443
Essa solução é válida para fins de aprendizado, mas você não pode confiar neles em situações da vida real. Os serviços de proxies gratuitos não são confiáveis, são propensos a erros, lentos, consomem muitos dados e têm vida curta. Não os use!
A solução? Proxies premium da Bright Data, o melhor provedor do mercado. Inscreva-se e experimente nossos proxies confiáveis gratuitamente.
Lembre-se de que as soluções premium são protegidas por autenticação. Suponha que o protocolo seja HTTP
, que o host seja 71.103.203.109
, que a porta seja 9321
, e que o par de credenciais seja admin-32458
e rTuJ3tEwf
. Nesse caso, o URL do proxy curl seria:
http://admin-32458:@rTuJ3tEwf71.103.203.109:9321
Como especificar um proxy HTTP/HTTPS no curl
Antes de começar, execute o comando abaixo no seu terminal:
curl "https://httpbin.org/ip"
Como você pode ver, a sintaxe básica do curl
é:
curl [optional_commands] <URL>
Ao utilizar o curl
, o recomendado é colocar URLs entre aspas duplas para evitar problemas com caracteres especiais.
Após executar o comando, você deverá obter algo assim:
{
"origin": "194.33.243.7"
}
O projeto HttpBin permite obter informações sobre as suas solicitações HTTP. Em detalhes, o endpoint /ip
retorna o IP de origem da solicitação, que é o endereço IP da máquina que realizou a solicitação. Em outras palavras, ele retorna seu IP.
Depois de configurar um proxy no curl
, você deverá ver o endereço IP do servidor proxy, e não o seu.
Existem várias maneiras de configurar um proxy no curl
. Vamos agora falar sobre as maneiras mais populares de especificar um proxy HTTP/HTTPS no curl
.
Usando um argumento de linha de comando
O curl oferece dois argumentos de linha de comando para configurar um URL de proxy:
-x
--proxy
Os dois podem ser usados de forma intercambiável, pois fazem exatamente a mesma coisa. O último é apenas um alias do primeiro.
Então, a sintaxe para usar o curl
com serviços de proxies se torna:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>
Ou:
curl --proxy [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>
Observação: as opções de linha de comando diferenciam maiúsculas de minúsculas no curl
. Por exemplo, -x
e -X
têm dois significados diferentes.
Se você executar agora:
curl -x "http://71.19.249.97:8443" "https://httpbin.org/ip"
Ou o equivalente:\
curl --proxy "http://71.19.249.97:8443" "https://httpbin.org/ip"
Deverá obter:
{
"origin": "71.19.249.97"
}
A origem corresponde ao IP do servidor proxy. Isso significa que o site de destino vê a solicitação como sendo proveniente do proxy, como desejado. Perfeito!
Não se esqueça de que os proxies gratuitos duram pouco, então é improvável que o servidor acima ainda esteja disponível no momento em que você ler este artigo. Em caso de erro, substitua-o por outro proxy.
Usando variáveis de ambiente
Outra forma de usar um proxy no curl
é definindo as duas variáveis de ambiente a seguir:
http_proxy
: o URL do servidor proxy a ser usado para acessar URLs envolvendo o protocolo HTTP.https_proxy
: o URL do servidor proxy a ser usado para acessar URLs envolvendo o protocolo HTTP.
No macOS e no Linux, você pode configurar esses dois ambientes com a sintaxe abaixo:
export http_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
export https_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
Assim, os dois comandos se tornarão:
export http_proxy="http://71.19.249.97:8443"
export https_proxy="http://71.19.249.97:8443"
No Windows, você precisa usar esta sintaxe do PowerShell:
$env:http_proxy = "[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
$env:https_proxy = "[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
Então, em nosso exemplo:
$env:http_proxy = "http://71.19.249.97:8443"
$env:https_proxy = "http://71.19.249.97:8443"
De agora em diante, cada comando curl
passará pelos proxies especificados sem a necessidade de usar a opção -x:
Novamente, isso retornará:
curl https://httpbin.org/ip
{
"origin": "71.19.249.97"
}
Para desativar os proxies do curl
remova a configuração das variáveis de ambiente com:
unset http_proxy
unset https_proxy
Ou no Windows:
$env:http_proxy = ""
$env:https_proxy = ""
O curl
voltará ao seu comportamento padrão e https://httpbin.org/ip
agora retornará o seu IP.
Usando um arquivo de configuração
Você pode especificar globalmente um proxy para o curl
criando um arquivo de configuração .curlrc
.
No Linux e no macOS, abra o terminal e navegue até o seu diretório pessoal:
cd ~
Em seguida, acesse o .curlrc com nano:
nano .curlrc
Se o arquivo já existir, ele será aberto. Caso contrário, ele será criado primeiro e depois aberto.
Adicione a seguinte linha ao arquivo .curlrc
:
proxy="http://71.19.249.97:8443"
A sintaxe dessa instrução é:
proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
Salve o arquivo, feche o terminal e reinicie-o.
No Windows, é necessário criar um arquivo _curlrc
dentro do diretório %APPDATA%
com o mesmo conteúdo. Cole %APPDATA%
na barra de endereço do explorador de arquivos e pressione ENTER para acessar o diretório.
Isso deverá levar você a C:\Users\<YOUR_USER>\AppData\Roaming
.
Agora, o curl
usará automaticamente o proxy especificado no arquivo de configuração:
curl "http://httpbin.org/ip"
Você obterá:
{
"origin": "71.19.249.97"
}
Perfeito! Você acabou de aprender a usar o curl
com servidores proxy de três maneiras diferentes!
Como configurar proxies SOCKS no curl
Se você quiser usar um proxy SOCKs, a estrutura de comando permanece a mesma:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>
A principal diferença é que <PROTOCOL>
será socks4
, socks4a
, socks5
ou socks5h
em vez de http
e https
.
Um exemplo completo de um proxy SOCKS no curl
em ação é:
curl -x "socks5://94.14.109.54:2478" "http://httpbin.org/ip"
Como esperado, o resultado será:
{
"origin": "94.14.109.54"
}
Uma abordagem alternativa envolve as opções de linha de comando --socks4
, --socks4a
, --socks5
em vez de -x. Nesse caso, você deve definir o URL do proxy sem nome de usuário e senha após a opção e, em seguida, as credenciais após --proxy-user
:
curl --socks4|--socks4a|--socks5 <HOST>[:<PORT>] <URL> --proxy-user <USERNAME>:<PASSWORD>
Por exemplo:
curl --socks4 "93.16.238.41:8721" "http://httpbin.org/ip" --proxy-user admin334:kv4NsDgc3
Isso se conectará ao HTTPBin por meio do proxy socks4
93.16.238.41:8721
, usando admin334
como nome de usuário e kv4NsDgc3
como senha para autenticação.
Dicas e truques importantes
Nesta seção, você verá alguns truques interessantes e dicas valiosas para lidar com um proxy curl
como um profissional.
Ativação e desativação rápida de proxies
A ideia, aqui, é definir aliases para configurar e remover proxies programaticamente por meio de variáveis de ambiente com comandos personalizados.
No macOS e no Linux, é possível fazer isso criando um arquivo .bashrc
. Esse é um arquivo de script que é executado toda vez que o usuário faz login.
Vá para sua pasta pessoal:
cd ~
Em seguida, crie ou abra um arquivo .bashrc:
nano .bashrc
Adicione ao arquivo o conteúdo no formato abaixo:
alias proxyon="export http_proxy='[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]';export https_proxy='[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]'"
alias proxyoff="unset http_proxy;unset https_proxy"
Assim, em nosso exemplo, seria:
alias proxyon="export http_proxy='http://71.19.249.97:8443';export https_proxy='http://71.19.249.97:8443'"
alias proxyoff="unset http_proxy;unset https_proxy"
Salve o arquivo e reinicie sua máquina.
Agora, você pode ativar e desativar um proxy curl
com:
proxyon
curl "http://httpbin.org/ip"
# other HTTP requests...
proxyoff
Observe os comandos personalizados proxyon
e proxyoff
. Eles executam as operações especificadas pelos aliases no arquivo .bashrc
.
No Windows, você pode obter algo semelhante com os aliases do PowerShell.
Ignorar proxies para uma única solicitação
Se você quiser evitar que curl
use um proxy configurado para uma solicitação específica, poderá usar o argumento --noproxy “*
” indicado abaixo:
curl --noproxy "*" <URL>
Isso instrui o curl
a não usar proxies para todos os URLs.
Configure um proxy e execute:
curl --noproxy "*" "https://httpbin.org/ip"
A origem resultante conterá o seu IP, não o do servidor proxy.
Evitar erros no certificado SSL
Ao usar proxies no curl
, suas solicitações podem falhar devido a erros no certificado SSL. Para evitar isso, use a opção -k
como na sintaxe abaixo:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -k <URL>
-k
ajuda a evitar erros no certificado, pois permite conexões de servidor sem segurança por SSL.
Por exemplo, você pode contatar o HTTPBin contornando problemas no SSL com:
curl -x "http://71.19.249.97:8443" -k "https://httpbin.org/ip"
Obter mais informações sobre a solicitação
Quando uma solicitação no curl
falha, não é fácil entender o que aconteceu. Para diagnosticar o erro e ver todas as operações realizadas pelo curl
, defina a opção -v:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -v <URL>
Isso exibirá os detalhes sobre as conexões estabelecidas e os cabeçalhos usados pela ferramenta:
$curl -x "http://71.19.249.97:8443" -v "https://httpbin.org/ip"
* Trying 71.19.249.97:8443...
* Connected to 71.19.249.97 (71.19.249.97) port 8443 (#0)
* allocate connect buffer
* Establish HTTP proxy tunnel to httpbin.org:443
> CONNECT httpbin.org:443 HTTP/1.1
> Host: httpbin.org:443
> User-Agent: curl/8.0.1
> Proxy-Connection: Keep-Alive
>
< HTTP/1.0 200 OK
<
* CONNECT phase completed
* CONNECT tunnel established, response 200
* schannel: disabled automatic use of client certificate
* ALPN: offers http/1.1
* ALPN: server accepted http/1.1
* using HTTP/1.1
> GET /ip HTTP/1.1
> Host: httpbin.org
> User-Agent: curl/8.0.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sat, 26 Aug 2023 10:39:13 GMT
< Content-Type: application/json
< Content-Length: 31
< Connection: keep-alive
< Server: gunicorn/19.9.0
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Credentials: true
<
{
"origin": "71.19.249.97"
}
* Connection #0 to host 71.19.249.97 left intact
Quais proxies são mais indicados para o curl
?
A resposta para essa pergunta depende do seu caso de uso e da natureza das solicitações do curl
que você precisa fazer. Para encontrar a solução ideal para as suas necessidades, confira os diferentes tipos de proxies disponíveis:
- Proxies de data centers: são velozes, mas podem ser facilmente detectados e bloqueados pelos sites devido aos seus intervalos de IP identificáveis.
- Proxies residenciais: garantem um alto nível de anonimato porque oferecem endereços IP provenientes de dispositivos reais em locais específicos. Os proxies residenciais são perfeitos para acessar sites que dependem de bloqueios com restrição geográfica ou medidas antibots e para realizar extração de dados da web com o curl.
- Proxies de ISPs: são velozes, seguros e muito confiáveis, pois fornecem IPs de dispositivos registrados para ISPs. Os proxies de ISPs representam a solução perfeita para monitoramento de SEO, navegação na web e pesquisa de mercado.
- Proxies de dispositivos móveis: fornecem IPs de dispositivos móveis reais para um alto nível de anonimato. São úteis para acessar aplicativos, sites ou conteúdos específicos para dispositivos móveis.
Essa foi apenas uma breve recapitulação, mas você pode descobrir mais em nosso guia sobre tipos de IPs de proxies.
Conclusão
Neste guia de proxies para o curl, você aprendeu o que é o cURL
, o que ele tem a oferecer e como configurar um proxy HTTP/HTTPS/SOCKS. Como constatado, não se pode depender do curl utilizando-se serviços de proxies de provedores gratuitos. Assim, a principal decisão técnica a ser tomada é qual provedor de proxies adotar. Poupe tempo e energia e escolha o melhor do mercado: a Bright Data.
A Bright Data controla os melhores servidores de proxy do mundo, atendendo a empresas listadas na Fortune 500 e a mais de 20.000 clientes. Sua rede mundial de proxies envolve:
- Proxies de data centers — mais de 770.000 IPs de data centers.
- Proxies residenciais — mais de 72 milhões de IPs residenciais em mais de 195 países.
- Proxies de ISPs — mais de 700.000 IPs de ISPs.
- Proxies de dispositivos móveis — mais de 7 milhões de IPs móveis.
De modo geral, essa é uma das maiores e mais confiáveis redes de proxies voltadas para extração de dados do mercado. Junte-se à maior rede de proxies e obtenha uma avaliação gratuita.
Não é necessário cartão de crédito