
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!
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.
