
Aloísio Vítor
Image Processing Expert
curl_cffi é uma biblioteca Python que fornece bindings eficientes e de baixo nível para a biblioteca libcurl usando CFFI (C Foreign Function Interface). Isso permite que você execute solicitações HTTP com alto desempenho e controle preciso, semelhante à ferramenta de linha de comando curl, mas dentro do Python. É particularmente útil para tarefas de web scraping que exigem velocidade e configurações avançadas.
Recursos:
libcurl para solicitações HTTP rápidas.Antes de começar a usar o curl_cffi, certifique-se de ter o seguinte instalado:
Em sistemas Ubuntu/Debian, você pode precisar instalar os cabeçalhos de desenvolvimento do libcurl:
sudo apt-get install libcurl4-openssl-dev
Instale o curl_cffi usando o pip:
pip install curl_cffi
Aqui está um exemplo básico de como usar o curl_cffi para executar uma solicitação GET:
from curl_cffi import requests
# Execute uma solicitação GET
response = requests.get('https://httpbin.org/get')
# Verifique o código de status
print(f'Código de Status: {response.status_code}')
# Imprima o conteúdo da resposta
print('Corpo da Resposta:', response.text)
Vamos raspar uma página da web para extrair informações. Usaremos o Quotes to Scrape para obter todas as citações juntamente com seus autores.
from curl_cffi import requests
from bs4 import BeautifulSoup
# URL para raspar
url = 'http://quotes.toscrape.com/'
# Execute uma solicitação GET
response = requests.get(url)
# Analise o conteúdo HTML usando BeautifulSoup
soup = BeautifulSoup(response.content, 'html.parser')
# Encontre todos os elementos de citação
quotes = soup.find_all('div', class_='quote')
# Extraia e exiba as citações e autores
for quote in quotes:
text = quote.find('span', class_='text').get_text()
author = quote.find('small', class_='author').get_text()
print(f'{text} — {author}')
Saída:
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.” — Albert Einstein
“It is our choices, Harry, that show what we truly are, far more than our abilities.” — J.K. Rowling
... (citações adicionais)
Nesta seção, exploraremos como integrar o CapSolver com o curl_cffi para contornar captchas. O CapSolver é um serviço externo que ajuda a resolver vários tipos de captchas, incluindo o ReCaptcha V2, que são comumente usados em sites.
Demonstraremos a resolução do ReCaptcha V2 usando o CapSolver e, em seguida, raspando o conteúdo de uma página que requer a resolução do captcha primeiro.
import os
import capsolver
from curl_cffi import requests
# Considere usar variáveis de ambiente para informações sensíveis
capsolver.api_key = os.getenv("CAPSOLVER_API_KEY", "Sua Chave de API CapSolver")
PAGE_URL = os.getenv("PAGE_URL", "https://example.com") # URL da página com o captcha
PAGE_KEY = os.getenv("PAGE_SITE_KEY", "SITE_KEY") # Chave do site para o captcha
def solve_recaptcha_v2(url, site_key):
solution = capsolver.solve({
"type": "ReCaptchaV2TaskProxyless",
"websiteURL": url,
"websiteKey": site_key,
"proxy": PROXY
})
return solution['solution']['gRecaptchaResponse']
def main():
print("Resolvendo reCaptcha V2...")
captcha_solution = solve_recaptcha_v2(PAGE_URL, PAGE_KEY)
print("Captcha Resolvido!")
if __name__ == "__main__":
main()
Observação: Substitua PAGE_URL pela URL da página que contém o captcha e PAGE_SITE_KEY pela chave do site do captcha. Você pode encontrar a chave do site na fonte HTML da página, geralmente dentro do <div> contendo o widget do captcha.
Se você precisar rotear suas solicitações por meio de um proxy, o curl_cffi simplifica isso:
from curl_cffi import requests
# Defina as configurações do proxy
proxies = {
'http': 'http://username:password@proxyserver:port',
'https': 'https://username:password@proxyserver:port',
}
# Execute uma solicitação GET usando o proxy
response = requests.get('https://httpbin.org/ip', proxies=proxies)
# Imprima o conteúdo da resposta
print('Corpo da Resposta:', response.text)
Você pode gerenciar cookies usando o CookieJar do módulo http.cookiejar do Python:
from curl_cffi import requests
from http.cookiejar import CookieJar
# Crie uma instância CookieJar
cookie_jar = CookieJar()
# Crie uma sessão com o cookie jar
session = requests.Session()
session.cookies = cookie_jar
# Execute uma solicitação GET
response = session.get('https://httpbin.org/cookies/set?name=value')
# Exiba os cookies
for cookie in session.cookies:
print(f'{cookie.name}: {cookie.value}')
Você pode enviar cabeçalhos personalizados e executar solicitações POST com curl_cffi:
from curl_cffi import requests
# Defina cabeçalhos personalizados
headers = {
'User-Agent': 'Mozilla/5.0 (compatible)',
'Accept-Language': 'en-US,en;q=0.5',
}
# Dados para enviar na solicitação POST
data = {
'username': 'testuser',
'password': 'testpass',
}
# Execute uma solicitação POST
response = requests.post('https://httpbin.org/post', headers=headers, data=data)
# Imprima a resposta JSON
print('Resposta JSON:', response.json())
Resgate seu Código Bônus para as melhores soluções de captcha no CapSolver: scrape. Após resgatá-lo, você receberá um bônus extra de 5% após cada recarga, ilimitadas vezes.

Com o curl_cffi, você pode executar tarefas de web scraping de forma eficiente, tendo controle detalhado sobre suas solicitações HTTP. A integração com o CapSolver permite que você contorne captchas como o ReCaptcha V2, permitindo o acesso a conteúdo que seria difícil de raspar de outra forma.
Sinta-se à vontade para expandir esses exemplos para atender às suas necessidades específicas de raspagem. Lembre-se sempre de respeitar os termos de serviço dos sites que você raspa e de seguir as diretrizes legais.
Feliz raspagem!
Aprenda o que causa o erro 1020 Acesso Negado do Cloudflare, como o Firewall de Aplicação Web e a detecção de bots funcionam e como os desenvolvedores podem reduzir falsos positivos em fluxos de trabalho de automação legítimos.

Aprenda como usar o modelo CapSolver n8n para monitorar páginas de produtos protegidas pelo AWS WAF, resolver desafios, extrair preços, comparar mudanças e disparar alertas automaticamente.
