Nesta secção, apresentaremos e explicaremos resumidamente os principais termos que constituem a base deste curso. É importante compreender estes termos, pois eles aparecerão ao longo dos módulos, secções e exercícios. Certifique-se de que os revê cuidadosamente, pois eles irão ajudá-lo a acompanhar o material com clareza e confiança.

Os tópicos desta secção incluem o seguinte:

  1. Website normal e navegadores normais
  2. Site Tor e navegador Tor
  3. Site I2P e navegador I2P
  4. LLMs e IA
  5. Web scraping
  6. Navegadores headless
  7. Proxies
  8. Conceitos de programação
  9. Limitação de taxa
  10. Captcha
  11. Bloqueio de conta
  12. Docker
  13. IDE (VSCode)
  14. Linux
  15. Extensão do navegador
  16. Bases de dados
  17. APIs

Site normal e navegadores normais

Um site normal refere-se a qualquer site que seja acessível publicamente através da Internet sem a necessidade de software especial ou configurações de rede. Exemplos incluem google.com, wikipedia.org e sites de notícias. Estes sites estão alojados na clearnet, a parte da web indexada pelos motores de busca. Navegadores normais como Chrome, Firefox, Edge e Safari são usados para visitar esses sites. Eles suportam padrões web modernos (HTML, CSS, JavaScript) e fornecem interfaces gráficas para navegação. Nenhuma configuração especial é necessária para aceder a sites normais, tornando-os a principal forma como a maioria das pessoas interage com a web.


Site Tor e navegador Tor

Um site Tor é um site hospedado na rede Tor, geralmente identificado por um domínio .onion. Esses sites não são acessíveis usando navegadores normais; é necessário o navegador Tor, que encaminha a sua ligação através de vários nós criptografados para ocultar a sua identidade e localização. Os sites Tor são frequentemente chamados de parte da «dark web» porque estão ocultos dos motores de busca e requerem acesso especial. Muitos sites Tor se concentram na privacidade, enquanto outros podem hospedar conteúdo ilegal ou controverso. O Tor é usado para anonimato tanto por utilizadores legítimos quanto por criminosos.


Site I2P e navegador I2P

Um site I2P é um serviço hospedado na rede Invisible Internet Project (I2P). Assim como o Tor, o I2P oferece anonimato, mas funciona de maneira diferente, criando túneis ponto a ponto entre os utilizadores. Os sites I2P geralmente têm domínios .i2p e só podem ser acessados por meio de um navegador habilitado para I2P ou configuração de proxy. O I2P é usado principalmente para serviços internos seguros, em vez de acessar a Internet normal. Neste curso, não trabalharemos com o I2P, mas é importante estar ciente de que o I2P existe como outra rede focada na privacidade, usada tanto por utilizadores legítimos quanto por criminosos.


LLMs e IA

Modelos de linguagem grandes (LLMs) são sistemas avançados de IA treinados em conjuntos de dados de texto massivos. Exemplos incluem GPT, LLaMA e Claude. Esses modelos geram texto semelhante ao humano, respondem a perguntas, traduzem idiomas e realizam tarefas de raciocínio. Os LLMs são úteis na inteligência contra ameaças cibernéticas para analisar grandes volumes de dados não estruturados, identificar padrões ou gerar relatórios. IA refere-se a tecnologias mais amplas que permitem que máquinas simulem comportamentos inteligentes. Neste curso, você usará IA para tarefas como detectar publicações do IAB, analisar dados de fóruns e gerenciar listas de observação de ameaças.


Bibliotecas de Web Scraping

python-requests

Uma biblioteca Python simples para enviar solicitações HTTP. Permite descarregar páginas da Web e respostas de API de forma controlada, útil para extrair dados de sites que não dependem muito de JavaScript.

BeautifulSoup

Uma biblioteca Python para analisar documentos HTML ou XML. Ajuda a extrair dados navegando pela estrutura do documento, como encontrar tags, atributos ou texto específicos em uma página da Web.

Navegadores sem interface gráfica

Navegadores que funcionam sem uma interface gráfica. Carregam e interagem com páginas da web tal como os navegadores normais, mas são controlados por código. Úteis para scraping em grande escala ou automatizado.


Navegadores sem interface gráfica

Um navegador sem interface gráfica é um navegador da web que funciona sem uma interface gráfica visível. Ele se comporta como um navegador normal, processando JavaScript, carregando CSS, renderizando páginas e lidando com cookies, mas tudo isso acontece em segundo plano. Os navegadores sem interface gráfica são controlados por código, permitindo que os programadores automatizem interações com sites para fins como scraping, testes ou monitoramento. Eles são essenciais ao trabalhar com sites dinâmicos ou com muito JavaScript, onde simples solicitações HTTP não são suficientes. Os navegadores sem interface gráfica podem imitar o comportamento real do utilizador, o que ajuda a contornar algumas proteções anti-bot.

Puppeteer

Puppeteer é uma biblioteca Node.js que fornece uma API de alto nível para controlar o Chrome ou o Chromium no modo sem interface gráfica ou completo. Permite carregar páginas, clicar em botões, preencher formulários, fazer capturas de ecrã e extrair conteúdo. O Puppeteer é popular pela sua velocidade, estabilidade e integração profunda com o navegador. Ele pode emular configurações de dispositivos, condições de rede e tamanhos de janelas de visualização, tornando-o poderoso para extrair dados de sites modernos ou testar como as páginas se comportam em diferentes cenários. Link: https://github.com/puppeteer/puppeteer

Playwright

Playwright é uma ferramenta de automação moderna que suporta os navegadores Chromium, Firefox e WebKit. Tal como o Puppeteer, pode ser executada em modo sem interface gráfica ou com interface gráfica. O Playwright é conhecido por lidar com tarefas complexas, como interagir com fluxos de várias páginas, gerir vários contextos de navegador e contornar proteções anti-bot. Oferece funcionalidades avançadas, como interceptar pedidos de rede, simular entradas do utilizador com atrasos realistas e capturar registos da consola. O Playwright é frequentemente preferido para testes entre navegadores e scraping em ambientes onde é necessário suportar diferentes navegadores.

Link: https://github.com/microsoft/playwright

Selenium

Selenium é uma das estruturas de automação de navegadores mais antigas e amplamente utilizadas. Suporta muitas linguagens de programação, incluindo Python, Java e C#. O Selenium pode controlar versões sem interface gráfica do Chrome, Firefox e outros navegadores. É comumente usado em testes, mas também funciona para scraping de sites dinâmicos que exigem interações do utilizador. A flexibilidade do Selenium permite a integração com estruturas de teste, mas pode ser mais lento em comparação com o Puppeteer ou o Playwright para tarefas de scraping em grande escala devido à sua arquitetura mais antiga.

Link: https://github.com/SeleniumHQ/selenium

Driver Chrome não detetado

O Selenium e o Playwright podem acionar sistemas anti-bot devido à sua tecnologia subjacente. Para uma solução que minimize a detecção, considere usar o Undetected ChromeDriver, uma versão modificada do ChromeDriver do Selenium projetada para contornar mecanismos anti-bot como Cloudflare, DataDome, Imperva e Distil Networks. Ele consegue isso corrigindo o binário do ChromeDriver para ocultar impressões digitais de automação, como agentes de utilizador e variáveis JavaScript, e imitando o comportamento de um navegador humano.

Link: https://github.com/UltrafunkAmsterdam/undetected-chromedriver


Proxies: HTTP, HTTPS, Tor, SOCKS5

Proxies encaminham o tráfego da Internet através de outro servidor para ocultar o endereço IP real ou contornar restrições.

  • Proxies HTTP/HTTPS são para tráfego web padrão.
  • Proxies SOCKS5 funcionam em um nível de rede mais baixo, suportando qualquer tipo de tráfego.
  • Proxies Tor encaminham o tráfego através da rede Tor para garantir o anonimato.

Os proxies são essenciais na extração de dados para evitar banimentos, distribuir a carga ou aceder a conteúdos bloqueados por região.


Conceitos de programação

Python e JavaScript são as principais linguagens utilizadas para scraping e automatização.

  • Bibliotecas/pacotes: conjuntos reutilizáveis de código para realizar tarefas específicas.
  • Frameworks front-end: ferramentas como Bootstrap, Daisyui, TailwindCSS, React ou Vue para construir interfaces web.
  • Frameworks back-end: ferramentas como Django, Flask, Laravel ou Express para construir lógica do lado do servidor.
  • Bases de dados: ferramentas como PostgreSQL, MySQL, Firebase para armazenar dados.
  • IDE (Integrated Development Environment): software como VSCode, PyCharm, Visual studio, usado para escrever e gerir código.
  • Compiladores: Programas que transformam código em instruções executáveis.
  • Ambiente virtual: Um ambiente virtual ou venv é usado para criar um ambiente isolado onde várias bibliotecas/pacotes podem ser instalados sem realizar uma instalação em todo o sistema. Você trabalhará muito com o ambiente virtual Python.

Limitação de taxa

A limitação de taxa é uma medida de segurança que restringe quantas solicitações você pode enviar para um servidor em um período definido. Por exemplo, um site pode permitir apenas 10 solicitações por minuto de um endereço IP. Isso evita abusos, spam ou sobrecarga. As ferramentas de scraping devem respeitar ou contornar os limites de taxa, diminuindo a velocidade das solicitações, usando proxies ou distribuindo a carga por várias contas para evitar detecção e banimentos.


Captcha

Captcha é um sistema de desafio-resposta projetado para verificar se um utilizador é humano. Ele impede que bots automatizados realizem ações como criar contas ou extrair dados. Captchas comuns envolvem selecionar imagens, digitar texto distorcido ou marcar caixas. Para scrapers, captchas são um obstáculo significativo, e resolvê-los geralmente requer técnicas avançadas como reconhecimento óptico de caracteres (OCR) baseado em IA ou serviços de resolução de terceiros.


Bloqueio de conta

O bloqueio de conta é um recurso de segurança que desativa uma conta após um determinado número de tentativas de login malsucedidas ou atividades suspeitas. Isso protege contra ataques de força bruta e acesso não autorizado. Ao fazer scraping ou interagir com sites que exigem login, você deve lidar com as credenciais com cuidado, distribuir as ações por várias contas ou usar o gerenciamento de sessões para evitar o bloqueio.


Docker

O Docker é uma ferramenta que permite empacotar aplicações e seus ambientes em contentores isolados. Isso garante que o software funcione da mesma forma em qualquer lugar, independentemente do sistema em que estiver. Neste curso, o Docker é usado para configurar sites simulados (tanto clearnet quanto Tor) para que você possa praticar scraping e análise sem interagir com a infraestrutura criminosa do mundo real. Isso torna o ambiente portátil, reproduzível e fácil de gerenciar.

Para instalar o Docker, siga este guia: https://docs.docker.com/engine/install/


IDE: VSCode

Um Ambiente de Desenvolvimento Integrado (IDE) é um software para escrever, editar e gerir código. O VSCode é um IDE popular que suporta várias linguagens de programação, fornece ferramentas de depuração, integra-se com controlo de versão (como o Git) e inclui extensões para trabalhar com Python, JavaScript, Docker e muito mais. Você usará o VSCode para construir, testar e gerir o seu código neste curso.


Linux

O Linux é um sistema operativo de código aberto amplamente utilizado em cibersegurança, desenvolvimento e ambientes de servidor. Ele oferece ferramentas de linha de comando poderosas, alta estabilidade e flexibilidade para automação e scripting. Neste curso, você usará o Linux como parte do seu ambiente de laboratório para executar scrapers, gerir contentores Docker e lidar com tarefas de processamento de dados. O Ubuntu é a distribuição Linux preferida para este curso.

Pode descarregar várias distribuições do Linux, como Ubuntu Desktop ou xUbuntu.


Extensão do navegador

Uma extensão do navegador é um pequeno módulo de software que adiciona funcionalidades a um navegador da Web. As extensões podem modificar o conteúdo da página, automatizar tarefas ou interagir com APIs. Na extração de dados e automação, as extensões personalizadas podem ajudar na extração de dados, contornar restrições ou gerir sessões.


Bases de dados

As bases de dados armazenam, organizam e gerem dados para facilitar o acesso e a análise.

  • MongoDB é uma base de dados NoSQL que armazena dados em documentos flexíveis, semelhantes a JSON, ideais para dados não estruturados ou semiestruturados, como publicações extraídas.
  • PostgreSQL é uma base de dados relacional que armazena dados em tabelas estruturadas com esquemas rigorosos, adequada para consultas e relações complexas.

APIs

Uma Interface de Programação de Aplicações (API) permite que um software comunique com outro software. Na recolha de dados e na automatização, as APIs fornecem uma forma estruturada de solicitar e receber dados sem analisar HTML. Muitos sites oferecem APIs públicas ou privadas para acesso a dados, e compreender como interagir com elas pode tornar a recolha de dados mais rápida e fiável.