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 u002du002dversioncurl.exe u002du002dversion
Isso deverá reproduzir algo semelhante a:
curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDNnnRelease-Date: 2023-03-20nnProtocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftpnnFeatures: AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSocketsn
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 curlsudo 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:
[u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e][u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e]
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: 8443IP Address: 71.19.249.97; Port: 8443
Isso significa que o URL do proxy é:
http://71.19.249.97:8443http://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:9321http://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 u0022https://httpbin.org/ipu0022curl u0022https://httpbin.org/ipu0022
Como você pode ver, a sintaxe básica do curl
é:
curl [optional_commands] u003cURLu003ecurl [optional_commands] u003cURLu003e
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:
{nn u0022originu0022: u0022194.33.243.7u0022nn}
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 [u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e] u003cURLu003ecurl -x [u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e] u003cURLu003e
Ou:
curl u002du002dproxy [u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e] u003cURLu003ecurl u002du002dproxy [u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e] u003cURLu003e
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 u0022http://71.19.249.97:8443u0022 u0022https://httpbin.org/ipu0022curl -x u0022http://71.19.249.97:8443u0022 u0022https://httpbin.org/ipu0022
Ou o equivalente:
curl u002du002dproxy u0022http://71.19.249.97:8443u0022 u0022https://httpbin.org/ipu0022curl u002du002dproxy u0022http://71.19.249.97:8443u0022 u0022https://httpbin.org/ipu0022
Deverá obter:
{nn u0022originu0022: u002271.19.249.97u0022nn}
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=u0022[u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e]u0022nnexport https_proxy=u0022[u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e]u0022
Assim, os dois comandos se tornarão:
export http_proxy=u0022http://71.19.249.97:8443u0022nnexport https_proxy=u0022http://71.19.249.97:8443u0022
No Windows, você precisa usar esta sintaxe do PowerShell:
$env:http_proxy = u0022[u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e]u0022nn$env:https_proxy = u0022[u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e]u0022n
Então, em nosso exemplo:
$env:http_proxy = u0022http://71.19.249.97:8443u0022nn$env:https_proxy = u0022http://71.19.249.97:8443u0022
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/ipnn{nn u0022originu0022: u002271.19.249.97u0022nn}
Para desativar os proxies do curl
remova a configuração das variáveis de ambiente com:
unset http_proxynnunset https_proxy
Ou no Windows:
$env:http_proxy = u0022u0022nn$env:https_proxy = u0022u0022
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=u0022http://71.19.249.97:8443u0022proxy=u0022http://71.19.249.97:8443u0022
A sintaxe dessa instrução é:
proxy=u0022[u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e]u0022proxy=u0022[u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e]u0022
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>AppDataRoaming
.
Agora, o curl
usará automaticamente o proxy especificado no arquivo de configuração:
curl u0022http://httpbin.org/ipu0022curl u0022http://httpbin.org/ipu0022
Você obterá:
{nn u0022originu0022: u002271.19.249.97u0022nn}nn
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 [u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e] u003cURLu003ecurl -x [u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e] u003cURLu003e
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 u0022socks5://94.14.109.54:2478u0022 u0022http://httpbin.org/ipu0022curl -x u0022socks5://94.14.109.54:2478u0022 u0022http://httpbin.org/ipu0022
Como esperado, o resultado será:
{nn u0022originu0022: u002294.14.109.54u0022nn}
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 u002du002dsocks4|u002du002dsocks4a|u002du002dsocks5 u003cHOSTu003e[:u003cPORTu003e] u003cURLu003e u002du002dproxy-user u003cUSERNAMEu003e:u003cPASSWORDu003ecurl u002du002dsocks4|u002du002dsocks4a|u002du002dsocks5 u003cHOSTu003e[:u003cPORTu003e] u003cURLu003e u002du002dproxy-user u003cUSERNAMEu003e:u003cPASSWORDu003e
Por exemplo:
curl u002du002dsocks4 u002293.16.238.41:8721u0022 u0022http://httpbin.org/ipu0022 u002du002dproxy-user admin334:kv4NsDgc3curl u002du002dsocks4 u002293.16.238.41:8721u0022 u0022http://httpbin.org/ipu0022 u002du002dproxy-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=u0022export http_proxy='[u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e]';export https_proxy='[u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e]'u0022nalias proxyoff=u0022unset http_proxy;unset https_proxyu0022alias proxyon=u0022export http_proxy='[u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e]';export https_proxy='[u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e]'u0022alias proxyoff=u0022unset http_proxy;unset https_proxyu0022
Assim, em nosso exemplo, seria:
alias proxyon=u0022export http_proxy='http://71.19.249.97:8443';export https_proxy='http://71.19.249.97:8443'u0022nnalias proxyoff=u0022unset http_proxy;unset https_proxyu0022
Salve o arquivo e reinicie sua máquina.
Agora, você pode ativar e desativar um proxy curl
com:
proxyonnncurl u0022http://httpbin.org/ipu0022nn# other HTTP requests...nnproxyoff
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 u002du002dnoproxy u0022*u0022 u003cURLu003ecurl u002du002dnoproxy u0022*u0022 u003cURLu003e
Isso instrui o curl
a não usar proxies para todos os URLs.
Configure um proxy e execute:
curl u002du002dnoproxy u0022*u0022 u0022https://httpbin.org/ipu0022curl u002du002dnoproxy u0022*u0022 u0022https://httpbin.org/ipu0022
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 [u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e] -k u003cURLu003ecurl -x [u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e] -k u003cURLu003e
-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 u0022http://71.19.249.97:8443u0022 -k u0022https://httpbin.org/ipu0022curl -x u0022http://71.19.249.97:8443u0022 -k u0022https://httpbin.org/ipu0022
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 [u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e] -v u003cURLu003ecurl -x [u003cPROTOCOLu003e://][u003cUSERNAMEu003e:u003cPASSWORDu003e]@u003cHOSTu003e[:u003cPORTu003e] -v u003cURLu003e
Isso exibirá os detalhes sobre as conexões estabelecidas e os cabeçalhos usados pela ferramenta:
$curl -x u0022http://71.19.249.97:8443u0022 -v u0022https://httpbin.org/ipu0022nn* Trying 71.19.249.97:8443...nn* Connected to 71.19.249.97 (71.19.249.97) port 8443 (#0)nn* allocate connect buffernn* Establish HTTP proxy tunnel to httpbin.org:443nnu003e CONNECT httpbin.org:443 HTTP/1.1nnu003e Host: httpbin.org:443nnu003e User-Agent: curl/8.0.1nnu003e Proxy-Connection: Keep-Alivennu003ennu003c HTTP/1.0 200 OKnnu003cnn* CONNECT phase completednn* CONNECT tunnel established, response 200nn* schannel: disabled automatic use of client certificatenn* ALPN: offers http/1.1nn* ALPN: server accepted http/1.1nn* using HTTP/1.1nnu003e GET /ip HTTP/1.1nnu003e Host: httpbin.orgnnu003e User-Agent: curl/8.0.1nnu003e Accept: */*nnu003ennu003c HTTP/1.1 200 OKnnu003c Date: Sat, 26 Aug 2023 10:39:13 GMTnnu003c Content-Type: application/jsonnnu003c Content-Length: 31nnu003c Connection: keep-alivennu003c Server: gunicorn/19.9.0nnu003c Access-Control-Allow-Origin: *nnu003c Access-Control-Allow-Credentials: truennu003cnn{nn u0022originu0022: u002271.19.249.97u0022nn}nn* Connection #0 to host 71.19.249.97 left intactn
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 150 million+ 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.