image

Access unlimited bootcamps and 650+ courses

50
%OFF
Article image
Percio Andrade
Percio Andrade21/12/2024 23:39
Share

Web Scraping: O Que é Isso?

    "Ah, o maravilhoso mundo da internet, onde tudo está exposto e, em raros casos, protegido."

    Web scraping é a prática de extrair dados de websites de maneira automatizada, seja de forma legítima ou não. Esse processo é essencial quando se deseja coletar grandes volumes de informações de maneira eficiente e em pouco tempo.

    Sua aplicação varia conforme o contexto. Por exemplo, no mercado financeiro, o scraping pode proporcionar uma análise de mercado mais completa. No setor de segurança, pode ser usado para enumerar serviços, usuários ou até coletar dados, com ou sem consentimento.

    Neste artigo, exploraremos as ferramentas e a ética por trás do web scraping.

    Lembro-me quando comecei a fazer scraping muitos anos atrás, enquanto montava meu blog e publicava as postagens uma a uma criando baseada em outro blog. Foi então que meu amigo Juan Fontes, sempre perspicaz, disse:

    "Por que você está fazendo isso manualmente? Eu consigo criar um script que automatiza tudo isso." Eu fiquei surpreso e, a partir daí, me aprofundei na técnica, descobrindo que é possível fazer scraping de quase tudo na internet, seja para obter dados de fontes não oficiais ou para coletar informações publicadas.

    Como Funciona o Web Scraping?

    O processo de scraping pode ser simplificado da seguinte forma:

    1. Requisição HTTP: Um script envia uma requisição HTTP para o servidor do site.
    2. Resposta: O servidor retorna o conteúdo da página, geralmente em formato HTML.
    3. Parsing: O script processa o HTML para identificar e extrair as informações relevantes.
    4. Armazenamento: Os dados extraídos são armazenados em um formato utilizável, como CSV, JSON, ou diretamente em um banco de dados ou mesmo em txt para consultas rapidas.

    Ferramentas Comuns para Web Scraping

    Existem várias bibliotecas e ferramentas para facilitar o processo de web scraping. Algumas das mais populares incluem:

    BeautifulSoup (Python)

    Uma biblioteca Python fácil de usar, excelente para iniciantes. Permite a extração de dados de documentos HTML e XML.

    import requests
    from bs4 import BeautifulSoup
    
    url = 'http://exemplo.com'
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Exemplo de extração de todos os links
    links = soup.find_all('a')
    for link in links:
    print(link.get('href'))
    

    Selenium (Python)

    Ideal para scraping de sites dinâmicos que carregam conteúdo com JavaScript, permitindo simular a navegação e interagir com os elementos da página.

    Scrapy (Python)

    Framework poderosa para scraping em larga escala, com ferramentas para rastrear múltiplas páginas, lidar com requisições assíncronas e exportar dados em vários formatos.

    Cheerio (Node.js)

    Para desenvolvedores JavaScript, Cheerio é uma alternativa eficiente, funcionando de maneira similar ao jQuery para manipulação de dados HTML.

    const cheerio = require('cheerio');
    const axios = require('axios');
    
    axios.get('http://exemplo.com')
     .then((response) => {
    const $ = cheerio.load(response.data);
    $('a').each((i, el) => {
     console.log($(el).attr('href'));
    });
     })
     .catch((error) => console.error(error));
    

    Curl/Wget/Elinks/HTTP (entre outros)

    Para quem prefere ferramentas mais simples e não depende de bibliotecas, curl e wget são opções eficientes para obter respostas de sites na internet, apesar de não serem as mais poderosas.

    curl https://google.com.br | grep -o 'google'
    

    Exemplo na DIO

    USER="perciocastelo" && VAL=$(curl -s https://www.dio.me/users/$USER | grep -o '"username":"[^"]*' | cut -d'"' -f4) && if 
    [ -n "$VAL" ]; then echo "Usuário existe na DIO"; else echo "Usuário não encontrado"; fi
    

    resultado:

    Usuário existe na DIO
    

    image

    Como Se Proteger Contra Web Scraping?

    As empresas adotam várias formas de proteção contra scraping:

    1. Bloquear requisições robotizadas: Qualquer requisição que não seja de um navegador legítimo pode ser bloqueada, embora seja possível enganar esse bloqueio passando valores de "user agents" na requisição.
    2. Redirecionamento para JavaScript ou uso de redirects: Esse método, utilizado em redes sociais como X.com e LinkedIn, redireciona as requisições de scraping para um erro 301 ou devolve um bloco de JavaScript, dificultando a leitura do HTML.
    3. Bloqueio por tipo de requisição: É possível bloquear requisições identificadas como provenientes de aplicativos ou bots, impedindo o scraping.
    4. Inserir tempo limite: O scraping automatizado costuma ter intervalos curtos entre requisições. Se o sistema detectar um comportamento anômalo, ele pode cortar a conexão. Contudo, é possível burlar isso aumentando o intervalo entre consultas.

    Cuidados Éticos e Legais

    Embora o web scraping seja uma técnica poderosa, é essencial utilizá-la de forma ética e legal. Alguns cuidados incluem:

    • Respeitar o robots.txt: Sites geralmente possuem um arquivo robots.txt que define quais partes do conteúdo podem ser acessadas por bots. Ignorar essa diretriz pode resultar em bloqueios ou ações legais.
    • Evitar sobrecarga de servidores: Realizar scraping de maneira agressiva pode afetar o desempenho do site. Implementar delays entre requisições e limitar a quantidade de dados extraídos é fundamental.
    • Verificar os Termos de Uso: Antes de realizar scraping, é importante verificar os Termos de Uso do site para garantir que a prática não infrinja nenhuma cláusula.

    WebScraping no cenário hacker

    1. Listagem de arquivos e diretórios não expostos: O scraping pode ser utilizado para identificar arquivos e diretórios que não deveriam estar acessíveis publicamente. Isso inclui arquivos de configuração, backups, logs sensíveis e outros dados que, se expostos, podem comprometer a segurança de um sistema ou organização.
    2. Enumeração de nomes, textos e usuários: Ferramentas de scraping podem ser empregadas para coletar informações sobre usuários, incluindo nomes de login, e-mails e outras credenciais. Também é possível extrair textos de páginas, como comentários, mensagens e até senhas fracas ou vazadas, que podem ser exploradas para gain de acesso a outros sistemas.

    Além dessas, o web scraping no cenário hacker pode ser utilizado para:

    1. Descobrir vulnerabilidades: Ao analisar as páginas da web em busca de padrões ou falhas, um atacante pode identificar vulnerabilidades, como injeção de SQL ou XSS, que podem ser exploradas para acessar dados sensíveis ou comprometer o sistema.
    2. Coleta de dados sensíveis: O scraping pode ser utilizado para coletar dados confidenciais de websites, como informações financeiras, pessoais ou corporativas, com o intuito de vendê-los ou usá-los em ataques direcionados.
    3. Reconhecimento de infraestrutura: Ferramentas de scraping também podem ser usadas para mapear a infraestrutura de uma organização, incluindo servidores, subdomínios e outras características do ambiente de rede, facilitando o planejamento de um ataque.

    Essas práticas são altamente ilegais e antiéticas quando realizadas sem o consentimento explícito do proprietário do site ou sistema. Portanto, o uso do web scraping deve ser restrito a cenários de segurança legal, como testes de penetração autorizados ou auditorias de segurança.

    Exemplos de Aplicações de Web Scraping

    • Monitoramento de Preços: Empresas usam scraping para monitorar os preços dos concorrentes em tempo real.
    • Coleta de Dados para Pesquisa: Cientistas de dados e pesquisadores extraem informações de várias fontes para criar bancos de dados e realizar análises.
    • Extração de Dados de Mídias Sociais: Scraping pode ser usado para coletar dados públicos de plataformas como Twitter ou Instagram, com fins de análise de sentimentos.

    Veja este exemplo abaixo onde criei um webscrapping para proteção de nomes e dados de usuário que realiza a consulta e coleta de dados na internet.

    image

    Share
    Comments (0)