
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!
Um guia específico para LangGraph para loops de CAPTCHA, focado no design de gráfico de estado, saídas de ferramentas do navegador, interrupções, limites de recursão e recuperação responsável.

Um guia focado no login para agentes de IA bloqueados pelo CAPTCHA, abrangendo o estado das credenciais, cookies de sessão, MFA, respostas 401/403 e regras de parada.
