O scraping de dados de concorrentes é uma prática comum para marketers, vendedores de marketplaces e agências. Você monitora preços no Wildberries, coleta anúncios do Avito, analisa o sortimento dos concorrentes. Mas a maioria dos sites bloqueia solicitações em massa, e ignorar o arquivo robots.txt pode levar a problemas legais. Neste artigo, vamos discutir como usar proxies para fazer scraping de forma ética: respeitando as regras dos sites, evitando bloqueios e coletando dados sem riscos para o negócio.
O que é robots.txt e por que é importante para os sites
O arquivo robots.txt é um documento de texto na raiz do site que informa aos robôs de busca e scrapers quais seções podem ser indexadas e quais são proibidas. Por exemplo, uma loja online pode proibir a indexação do carrinho ou da área do cliente, para que essas páginas não apareçam no Google.
Um arquivo robots.txt típico se parece com isto:
User-agent: * Disallow: /admin/ Disallow: /cart/ Disallow: /api/ Crawl-delay: 10 User-agent: Googlebot Allow: / Sitemap: https://example.com/sitemap.xml
Análise das diretrizes:
User-agent: *— regras para todos os bots (o asterisco significa "qualquer bot")Disallow: /admin/— proibido escanear a seção /admin/Crawl-delay: 10— delay de 10 segundos entre solicitaçõesUser-agent: Googlebot— regras especiais para o Google (tudo permitido)
Por que os sites usam robots.txt:
- Proteção contra sobrecarga do servidor — scraping em massa cria carga no servidor, diminuindo a performance para usuários reais
- Ocultação de páginas técnicas — carrinhos, formulários de pagamento, endpoints de API não devem ser indexados
- Proteção de dados comerciais — marketplaces não querem que concorrentes baixem facilmente todo o catálogo de produtos
- Economia de tráfego — cada solicitação de bot custa dinheiro para o proprietário do site
Importante: robots.txt é uma recomendação, não uma barreira técnica. O arquivo não bloqueia o acesso fisicamente, mas ignorar as regras pode levar ao bloqueio do seu IP ou ações judiciais (especialmente nos EUA e na Europa).
Riscos legais do scraping: o que diz a lei
O scraping de dados está em uma zona cinzenta da legislação. Em diferentes países, existem regras diferentes, mas há princípios gerais que é importante conhecer para não receber uma ação judicial.
Legislação da Rússia
Na Rússia, não há uma lei específica sobre scraping, mas aplicam-se normas gerais:
- Direitos autorais (Código Civil da Federação Russa, artigo 1259) — não é permitido copiar textos únicos, fotografias, descrições de produtos sem a permissão do titular dos direitos. Scraping de preços e características geralmente é seguro, pois são dados factuais.
- Dados pessoais (152-FZ) — é proibido coletar dados pessoais dos usuários (nome, telefone, e-mail) sem consentimento. Isso se aplica ao scraping de perfis de redes sociais ou bancos de contatos.
- Concorrência desleal (artigo 14.33 do Código de Infrações Administrativas da Federação Russa) — se o scraping for usado para copiar um modelo de negócio ou enganar clientes, pode-se receber uma multa de até 500.000 rublos.
Legislação dos EUA e Europa
Nos EUA e na UE, as leis são mais rígidas:
- CFAA (Computer Fraud and Abuse Act, EUA) — acesso não autorizado a sistemas computacionais é considerado crime. A violação do robots.txt pode ser interpretada como "acesso não autorizado". Um caso famoso: LinkedIn vs hiQ Labs (2022) — o tribunal decidiu que o scraping de dados públicos é legal, mas ignorar barreiras técnicas (como CAPTCHA) não é.
- GDPR (Regulamento Geral sobre a Proteção de Dados, UE) — é proibida a coleta de dados pessoais de cidadãos da UE sem consentimento explícito. Multas de até 20 milhões de euros ou 4% do faturamento anual da empresa.
- Termos de Serviço (Acordos de Usuário) — muitos sites proíbem explicitamente o scraping em suas regras. A violação pode levar a uma ação judicial por quebra de contrato.
Dica prática: Antes de fazer scraping, verifique três documentos: robots.txt, Termos de Serviço e Política de Privacidade do site-alvo. Se o scraping for explicitamente proibido — busque fontes alternativas de dados (APIs públicas, programas de parceria, conjuntos de dados prontos).
O que é seguro fazer scraping
| Tipo de dados | Risco | Comentário |
|---|---|---|
| Preços de produtos | Baixo | Dados factuais, não protegidos por direitos autorais |
| Características de produtos | Baixo | Dados técnicos são seguros |
| Descrições únicas | Alto | Protegidas por direitos autorais |
| Fotografias de produtos | Alto | Necessita de permissão do titular dos direitos |
| Contatos de usuários | Crítico | Violação da 152-FZ e GDPR |
| Estatísticas públicas | Baixo | Dados abertos são seguros |
Scraping ético: como coletar dados sem violações
O scraping ético é um equilíbrio entre as necessidades do negócio e o respeito pelos proprietários dos sites. Você pode coletar os dados necessários sem criar problemas para o recurso alvo e sem violar as leis.
Princípios básicos do scraping ético
- Respeite o robots.txt — se a seção for proibida para scraping, não tente contorná-la. Busque fontes alternativas de dados.
- Limite a velocidade das solicitações — não envie 1000 solicitações por segundo. Faça delays de 2-10 segundos entre as solicitações para não sobrecarregar o servidor.
- Use o User-Agent do seu scraper — não se disfarce como um usuário comum. Indique um User-Agent honesto, por exemplo: "MyCompanyParser/1.0 (contact@mycompany.com)". Isso permite que os administradores do site entrem em contato com você se houver problemas.
- Faça scraping apenas de dados públicos — não tente acessar seções restritas, APIs ou bancos de dados.
- Não revenda dados copiados — use as informações coletadas para necessidades internas (análise de concorrentes, monitoramento de preços), e não para criar um serviço concorrente.
- Cache os dados — não solicite a mesma página várias vezes. Salve os resultados localmente e atualize-os em um cronograma (uma vez por dia, uma vez por semana).
Quando NÃO fazer scraping
Existem situações em que o scraping cria mais problemas do que benefícios:
- O site fornece API — muitos marketplaces (Wildberries, Ozon, Yandex.Market) têm APIs oficiais para parceiros. Use-as em vez de scraping — é mais rápido, legal e confiável.
- Os dados estão protegidos por CAPTCHA ou autenticação — contornar a proteção pode ser considerado uma invasão de sistema.
- O site proíbe explicitamente o scraping nos Termos de Serviço — o risco de uma ação judicial é muito alto.
- Você está coletando dados pessoais — isso viola o GDPR e a 152-FZ, com multas enormes.
Como ler e respeitar robots.txt corretamente
O arquivo robots.txt está na raiz do domínio: https://example.com/robots.txt. Antes de começar o scraping, sempre verifique este arquivo.
Diretrizes principais do robots.txt
| Diretiva | Significado | Exemplo |
|---|---|---|
User-agent |
Para qual bot as regras se aplicam | User-agent: * (todos os bots) |
Disallow |
Seções proibidas para scraping | Disallow: /admin/ |
Allow |
Seções permitidas (exceção de Disallow) | Allow: /public/ |
Crawl-delay |
Delay mínimo entre solicitações (em segundos) | Crawl-delay: 10 |
Sitemap |
Link para o mapa do site (lista de todas as páginas) | Sitemap: /sitemap.xml |
Exemplos de robots.txt e como interpretá-los
Exemplo 1: Proibição total de scraping
User-agent: * Disallow: /
Isso significa: "Todos os bots estão proibidos de escanear todo o site". Fazer scraping de tal site é uma violação das regras do proprietário. Busque fontes alternativas de dados.
Exemplo 2: Restrições seletivas
User-agent: * Disallow: /admin/ Disallow: /api/ Disallow: /cart/ Allow: /products/ Crawl-delay: 5
Isso significa: "É permitido fazer scraping da seção /products/ (produtos), mas /admin/, /api/ e /cart/ são proibidos. Faça uma pausa de 5 segundos entre as solicitações". Essas são condições normais — é possível fazer scraping de produtos, respeitando os limites.
Exemplo 3: Regras para bots específicos
User-agent: Googlebot Allow: / User-agent: * Disallow: / Crawl-delay: 10
Isso significa: "O Google pode escanear todo o site, mas todos os outros bots não podem". Se você não é o Google, o scraping é proibido.
Como verificar robots.txt antes do scraping
A maioria das linguagens de programação possui bibliotecas para verificar automaticamente o robots.txt. Exemplo em Python:
from urllib.robotparser import RobotFileParser
rp = RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()
# Verificando se é permitido fazer scraping da página
url = "https://example.com/products/item123"
user_agent = "MyParser/1.0"
if rp.can_fetch(user_agent, url):
print("Scraping permitido")
else:
print("Scraping proibido pelo robots.txt")
Isso verificará automaticamente as regras e informará se é permitido fazer scraping de uma URL específica.
Rate Limiting e delays entre solicitações
Rate Limiting (limitação de taxa de solicitações) é uma proteção para sites contra sobrecarga. Se você enviar muitas solicitações em um curto período, o servidor pode bloquear seu IP ou mostrar um CAPTCHA.
Por que é importante respeitar delays
- Evitar bloqueio de IP — os sites monitoram a frequência de solicitações de um único IP. Se você enviar 100 solicitações por minuto, será bloqueado como um bot.
- Reduzir a carga no servidor — scraping em massa pode "derrubar" o site, especialmente se for um recurso pequeno em um hosting barato.
- Respeitar o Crawl-delay do robots.txt — se o site indicou um delay de 10 segundos, ignorar essa regra é antiético.
- Comportamento mais natural — usuários comuns não abrem 10 páginas por segundo. Delays fazem seu scraper parecer um ser humano real.
Delays recomendados para diferentes tarefas
| Tipo de scraping | Delay entre solicitações | Comentário |
|---|---|---|
| Site pequeno (até 1000 páginas) | 5-10 segundos | Baixa capacidade do servidor |
| Site médio (loja online) | 2-5 segundos | Equilíbrio ideal |
| Grande marketplace (Wildberries, Ozon) | 1-3 segundos | Infraestrutura poderosa, mas forte proteção |
| Endpoints de API | De acordo com os limites da API (geralmente 10-100 solicitações/min) | Consulte a documentação da API |
| Redes sociais (Instagram, VK) | 10-30 segundos | Limites muito rigorosos, alto risco de banimento |
Como implementar delays no código
Exemplo em Python usando a biblioteca time:
import time
import requests
urls = [
"https://example.com/product1",
"https://example.com/product2",
"https://example.com/product3"
]
for url in urls:
response = requests.get(url)
print(f"Scrapado: {url}")
# Delay de 3 segundos antes da próxima solicitação
time.sleep(3)
Para cenários mais complexos, use delays aleatórios (random delay) para que o comportamento seja ainda mais natural:
import time
import random
for url in urls:
response = requests.get(url)
# Delay aleatório de 2 a 5 segundos
delay = random.uniform(2, 5)
time.sleep(delay)
Rotação de proxies para scraping ético
Mesmo que você respeite o robots.txt e faça delays, o scraping de grandes volumes de dados de um único IP pode levantar suspeitas. A rotação de proxies ajuda a distribuir as solicitações entre diferentes endereços IP, simulando o comportamento de muitos usuários reais.
Por que a rotação de proxies é necessária
- Contornar Rate Limiting — se o limite é de 100 solicitações/hora de um único IP, então 10 proxies lhe darão 1000 solicitações/hora.
- Distribuição geográfica — para scraping de dados regionais (preços no Wildberries em Moscovo e Vladivostok) são necessários proxies de diferentes cidades.
- Reduzir suspeitas — solicitações de diferentes IPs parecem tráfego de usuários reais.
- Reserva — se um proxy for bloqueado, o scraper muda automaticamente para outro.
Quais proxies usar para scraping ético
| Tipo de proxy | Vantagens | Desvantagens | Quando usar |
|---|---|---|---|
| Residenciais | IPs reais de usuários domésticos, baixo risco de banimento | Mais caros que outros tipos | Scraping de redes sociais, marketplaces com forte proteção |
| Móveis | IPs de operadoras móveis, máxima confiança | Os mais caros, menos IPs disponíveis | Scraping de Instagram, TikTok, aplicativos móveis |
| Data centers | Baratos, alta velocidade | Fácil de detectar, frequentemente em listas negras | Scraping de sites simples, testes |
Recomendação para scraping ético: Use proxies residenciais com rotação automática. Eles oferecem um equilíbrio entre custo e confiabilidade, e seus IPs parecem de usuários comuns.
Estratégias de rotação de proxies
- Rotação a cada solicitação — cada solicitação é feita com um novo IP. Adequado para scraping de sites com limites rígidos (redes sociais, marketplaces).
- Rotação por tempo (a cada 5-10 minutos) — um IP é usado para várias solicitações, depois muda. Comportamento mais natural.
- Sticky sessions (sessões fixas) — um IP é usado para toda a sessão do usuário (por exemplo, autenticação + scraping da área do cliente). Essencial para sites com autenticação.
- Rotação geográfica — para cada região, usa-se um proxy dessa região. Exemplo: scraping de preços no Wildberries em Moscovo — proxy de Moscovo.
Exemplo de rotação de proxies em Python
import requests
import random
import time
# Lista de proxies (substitua por reais)
proxies_list = [
{"http": "http://user:pass@proxy1.example.com:8080"},
{"http": "http://user:pass@proxy2.example.com:8080"},
{"http": "http://user:pass@proxy3.example.com:8080"}
]
urls = [
"https://example.com/product1",
"https://example.com/product2",
"https://example.com/product3"
]
for url in urls:
# Escolha um proxy aleatório
proxy = random.choice(proxies_list)
try:
response = requests.get(url, proxies=proxy, timeout=10)
print(f"Scrapado {url} através de {proxy}")
except Exception as e:
print(f"Erro com o proxy {proxy}: {e}")
# Delay de 3 segundos
time.sleep(3)
Casos práticos: scraping de marketplaces e concorrentes
Vamos considerar cenários reais de scraping ético para negócios.
Caso 1: Monitoramento de preços no Wildberries
Tarefa: Você vende produtos no Wildberries e quer monitorar os preços dos concorrentes para ajustar os seus.
Problemas:
- Wildberries bloqueia IPs em solicitações frequentes
- Os preços dependem da região de entrega
- É necessário fazer scraping de 100-500 produtos diariamente
Solução ética:
- Verifique o robots.txt — Wildberries permite scraping das páginas de produtos, mas proíbe endpoints de API.
- Use proxies residenciais — para cada região (Moscovo, SPb, Novosibirsk) pegue proxies dessa região.
- Rotação a cada solicitação — faça scraping de cada produto com um novo IP.
- Delay de 2-3 segundos — faça uma pausa entre as solicitações.
- Faça scraping uma vez por dia — não atualize os preços a cada hora, um monitoramento diário é suficiente.
Resultado: Você obtém preços atualizados dos concorrentes sem bloqueios. Wildberries não percebe carga anômala, pois as solicitações estão distribuídas ao longo do tempo e IPs.
Caso 2: Scraping de anúncios no Avito
Tarefa: Você é um corretor e quer coletar todos os anúncios de venda de apartamentos na sua cidade para análise de mercado.
Problemas:
- Avito mostra CAPTCHA em atividades suspeitas
- É necessário fazer scraping de 5000+ anúncios
- Os dados são atualizados diariamente
Solução ética:
- Verifique o robots.txt — Avito permite scraping das páginas de anúncios, mas com um limite de Crawl-delay: 5 segundos.
- Use proxies residenciais — rotação a cada 10 solicitações (não a cada solicitação, para não parecer suspeito).
- Delay de 5-7 segundos — respeite o Crawl-delay do robots.txt.
- Faça scraping durante a noite — quando a carga no site é mínima (2-6 da manhã).
- Cache os dados — não faça scraping do mesmo anúncio duas vezes, salve os resultados em um banco de dados.
Resultado: Durante a noite, você coleta todos os novos anúncios sem CAPTCHA e bloqueios. Avito não experimenta sobrecarga, e você obtém os dados necessários.
Caso 3: Análise do sortimento do concorrente
Tarefa: Você é o proprietário de uma loja online de eletrônicos e quer saber quais novos produtos apareceram no concorrente.
Problemas:
- O site do concorrente está em um hosting protegido com sistema anti-bot
- É necessário fazer scraping de um catálogo de 10.000 produtos
- Você quer fazer isso semanalmente
Solução ética:
- Verifique o robots.txt — scraping de /catalog/ é permitido, mas /admin/ e /api/ são proibidos.
- Use o Sitemap — em vez de percorrer todas as páginas manualmente, pegue a lista de URLs do sitemap.xml (é mais rápido e não cria carga desnecessária).
- Proxies residenciais com rotação a cada 5 minutos — um IP faz 20-30 solicitações, depois muda.
- Delay de 3-5 segundos — imite o comportamento de um usuário comum.
- Faça scraping apenas de novos produtos — compare o catálogo atual com o anterior e faça scraping apenas das mudanças.
Resultado: Você recebe semanalmente uma lista de novidades do concorrente sem bloqueios. O site do concorrente não enfrenta problemas, e você obtém uma vantagem competitiva.
Ferramentas para automação respeitando as regras
Existem ferramentas prontas que simplificam o scraping ético e respeitam automaticamente o robots.txt.
Scrapy (Python)
Scrapy é um framework popular para scraping em Python. Ele verifica automaticamente o robots.txt e respeita as regras.
Configuração para respeitar o robots.txt no Scrapy:
# settings.py # Ativar respeito ao robots.txt ROBOTSTXT_OBEY = True # Delay entre solicitações (em segundos) DOWNLOAD_DELAY = 3 # Delay aleatório (de 0.5 a 1.5 * DOWNLOAD_DELAY) RANDOMIZE_DOWNLOAD_DELAY = True # Limitação de solicitações simultâneas a um único domínio CONCURRENT_REQUESTS_PER_DOMAIN = 1 # User-Agent do seu scraper USER_AGENT = 'MyCompanyParser/1.0 (+http://mycompany.com/bot)'
Com essas configurações, o Scrapy verificará automaticamente o robots.txt antes do scraping e respeitará todas as regras.
Apify (plataforma em nuvem)
Apify é uma plataforma em nuvem para web scraping sem código. Você cria um scraper através de uma interface visual, e o Apify gerencia automaticamente proxies e limites.
Vantagens para scraping ético:
- Rotação de proxies embutida (residenciais e data centers)
- Respeito automático ao robots.txt
- Configuração de delays através da interface
- Agendamento de execução (scraping uma vez por dia/semana)
Octoparse (scraper sem código)
Octoparse é um aplicativo desktop para scraping sem programação. É adequado para marketers e vendedores que não sabem programar.
Como configurar scraping ético no Octoparse:
- Abra as configurações da tarefa (Task Settings)
- Ative "Respeitar robots.txt"
- Defina um delay (Delay) de 3-5 segundos
- Conecte proxies na seção "Proxy Settings"
- Configure o agendamento de execução (Schedule)
Puppeteer/Playwright (JavaScript)
Puppeteer e Playwright são bibliotecas para automação de navegador. Elas são adequadas para scraping de sites com renderização em JavaScript.
Exemplo de scraping ético com Puppeteer:
const puppeteer = require('puppeteer');
const robotsParser = require('robots-parser');
async function ethicalScrape(url) {
// Verificando robots.txt
const robots = robotsParser('https://example.com/robots.txt',
'MyParser/1.0');
if (!robots.isAllowed(url)) {
console.log('Scraping proibido pelo robots.txt');
return;
}
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Delay antes de carregar a página
await new Promise(resolve => setTimeout(resolve, 3000));
await page.goto(url);
const data = await page.evaluate(() => {
return document.querySelector('h1').innerText;
});
console.log(data);
await browser.close();
}
ethicalScrape('https://example.com/product1');
Conclusão
O scraping ético através de proxies é um equilíbrio entre as necessidades do negócio e o respeito pelos proprietários dos sites. Respeitando o robots.txt, fazendo delays entre as solicitações e usando rotação de proxies, você pode coletar os dados necessários sem riscos legais e bloqueios. Os principais princípios são: verifique o robots.txt antes do scraping, limite a velocidade das solicitações, use um User-Agent honesto e faça scraping apenas de dados públicos. Isso protegerá seu negócio de ações judiciais e garantirá a operação estável dos scrapers.
Se você planeja fazer scraping de marketplaces, sites concorrentes ou coletar dados para análise de mercado, recomendamos o uso de proxies residenciais com rotação automática. Eles garantem...