
Aloísio Vítor
Image Processing Expert

aiohttp é um poderoso framework cliente/servidor HTTP assíncrono para Python. Ele utiliza a biblioteca asyncio do Python para habilitar operações de rede concorrentes, tornando-o altamente eficiente para tarefas como web scraping, desenvolvimento web e quaisquer operações ligadas à rede.
Recursos:
asyncio para operações de rede não bloqueantes.Antes de começar a usar o aiohttp, certifique-se de que você tenha:
Instale o aiohttp usando o pip:
pip install aiohttp
Aqui está como executar uma solicitação GET simples usando aiohttp:
import asyncio
import aiohttp
async def fetch(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
status = response.status
text = await response.text()
print(f'Código de Status: {status}')
print('Corpo da Resposta:', text)
if __name__ == '__main__':
asyncio.run(fetch('https://httpbin.org/get'))
Vamos raspar o site Quotes to Scrape para extrair citações e seus autores:
import asyncio
import aiohttp
from bs4 import BeautifulSoup
async def fetch_content(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.text()
async def scrape_quotes():
url = 'http://quotes.toscrape.com/'
html = await fetch_content(url)
soup = BeautifulSoup(html, 'html.parser')
quotes = soup.find_all('div', class_='quote')
for quote in quotes:
text = quote.find('span', class_='text').get_text(strip=True)
author = quote.find('small', class_='author').get_text(strip=True)
print(f'{text} — {author}')
if __name__ == '__main__':
asyncio.run(scrape_quotes())
Saída:
“O mundo como o criamos é um processo de nosso pensamento. Ele não pode ser mudado sem mudar nosso pensamento.” — Albert Einstein
“São nossas escolhas, Harry, que mostram o que realmente somos, muito mais do que nossas habilidades.” — J.K. Rowling
... (citações adicionais)
Nesta seção, exploraremos como integrar o CapSolver com o aiohttp para contornar captchas. O CapSolver é um serviço externo que ajuda a resolver vários tipos de captchas, incluindo ReCaptcha v2, v3
Demonstraremos como resolver o ReCaptcha V2 usando o CapSolver e, em seguida, acessar uma página que requer a resolução de captcha.
Primeiro, instale o pacote CapSolver:
pip install capsolver
Agora, aqui está como você pode resolver um ReCaptcha V2 e usar a solução em sua solicitação:
import asyncio
import os
import aiohttp
import capsolver
# Defina sua chave de API CapSolver
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 captcha
SITE_KEY = os.getenv("SITE_KEY", "SITE_KEY") # Chave do site do captcha
async def solve_recaptcha_v2():
solution = capsolver.solve({
"type": "ReCaptchaV2TaskProxyless",
"websiteURL": PAGE_URL,
"websiteKey": SITE_KEY
})
return solution['solution']['gRecaptchaResponse']
async def access_protected_page():
captcha_response = await solve_recaptcha_v2()
print("Captcha Resolvido!")
async with aiohttp.ClientSession() as session:
data = {
'g-recaptcha-response': captcha_response,
# Inclua outros dados do formulário se necessário pelo site
}
async with session.post(PAGE_URL, data=data) as response:
content = await response.text()
print('Conteúdo da Página:', content)
if __name__ == '__main__':
asyncio.run(access_protected_page())
Observação: Substitua PAGE_URL pela URL da página que contém o captcha e SITE_KEY pela chave do site do captcha. A chave do site geralmente é encontrada no código-fonte HTML da página dentro do widget do captcha.
Para rotear suas solicitações através de um proxy, especifique o parâmetro proxy:
import asyncio
import aiohttp
async def fetch(url, proxy):
async with aiohttp.ClientSession() as session:
async with session.get(url, proxy=proxy) as response:
return await response.text()
async def main():
proxy = 'http://username:password@proxyserver:port'
url = 'https://httpbin.org/ip'
content = await fetch(url, proxy)
print('Corpo da Resposta:', content)
if __name__ == '__main__':
asyncio.run(main())
Você pode gerenciar cookies usando CookieJar:
import asyncio
import aiohttp
async def main():
jar = aiohttp.CookieJar()
async with aiohttp.ClientSession(cookie_jar=jar) as session:
await session.get('https://httpbin.org/cookies/set?name=value')
# Exibir os cookies
for cookie in jar:
print(f'{cookie.key}: {cookie.value}')
if __name__ == '__main__':
asyncio.run(main())
Você pode enviar cabeçalhos personalizados e executar solicitações POST com aiohttp:
import asyncio
import aiohttp
async def main():
headers = {
'User-Agent': 'Mozilla/5.0 (compatible)',
'Accept-Language': 'pt-BR,pt;q=0.5',
}
data = {
'username': 'testuser',
'password': 'testpass',
}
async with aiohttp.ClientSession() as session:
async with session.post('https://httpbin.org/post', headers=headers, data=data) as response:
json_response = await response.json()
print('Resposta JSON:', json_response)
if __name__ == '__main__':
asyncio.run(main())
Receba seu código Bônus para as melhores soluções de captcha em CapSolver: scrape. Após resgatá-lo, você receberá um bônus extra de 5% após cada recarga, ilimitadas vezes.

Com o aiohttp, você pode executar tarefas de web scraping assíncronas de forma eficiente e lidar com várias operações de rede simultaneamente. A integração com o CapSolver permite que você resolva captchas como o ReCaptcha V2, permitindo o acesso a conteúdo que pode estar restrito.
Sinta-se à vontade para expandir esses exemplos para atender às suas necessidades específicas. Lembre-se sempre de respeitar os termos de serviço dos sites que você raspa e seguir as diretrizes legais.
Boas raspadas!
Um guia de arquitetura de ferramentas para agentes MCP bloqueados pelo CAPTCHA, focado em modelagem de estado, transferência de navegador, memória de sessão, orçamentos de tentativa e política de acesso seguro.

Um guia voltado para a impressão digital para agentes de IA, abrangendo coerência do ambiente do navegador, sinais do WebDriver, consistência TLS, temporização da interação e validação de traços.
