Xcrap Logo

Utilitários do Core

Ferramentas para randomização, rotação de proxies e paginação estática.

O pacote @xcrap/core fornece diversos utilitários para facilitar tarefas comuns em Web Scraping, como evitar detecção através da rotação de proxies e User-Agents.

Randomizer

O Randomizer permite selecionar um item aleatório de uma lista. É ideal para alternar entre diferentes proxies ou User-Agents sem um padrão fixo.

import { Randomizer } from "@xcrap/core";

const userAgents = [
  "Mozilla/5.0 ... Chrome/120.0.0.0",
  "Mozilla/5.0 ... Firefox/121.0",
  "Mozilla/5.0 ... Edge/120.0"
];

const uaRandomizer = new Randomizer(userAgents);

// Retorna um User-Agent aleatório da lista
const randomUA = uaRandomizer.random();

Rotator

O Rotator percorre uma lista de itens de forma sequencial (round-robin). Diferente do Randomizer, ele garante que todos os itens sejam usados de forma equilibrada antes de repetir o primeiro.

import { Rotator } from "@xcrap/core";

const proxies = [
  "http://proxy-1.com",
  "http://proxy-2.com",
  "http://proxy-3.com"
];

const proxyRotator = new Rotator(proxies);

// Pega o proxy atual e rotaciona para o próximo
const p1 = proxyRotator.rotate(); // proxy-2.com
const p2 = proxyRotator.rotate(); // proxy-3.com
const p3 = proxyRotator.rotate(); // proxy-1.com

Exemplo de Uso com Clientes

Você pode integrar esses utilitários diretamente na configuração dos seus clientes:

const client = new AxiosClient({
  // Rotaciona o proxy a cada nova instância/requisição se desejado
  proxy: () => proxyRotator.rotate(),
  // Seleciona um User-Agent aleatório
  userAgent: () => uaRandomizer.random()
});

StaticPaginator

Utilitário para gerar URLs de paginação de forma programática.

import { StaticPaginator } from "@xcrap/core";

const paginator = new StaticPaginator({
  baseUrl: "https://books.toscrape.com/catalogue/page-{{page}}.html",
  startPage: 1,
  endPage: 50
});

const pages = paginator.getUrls(); 
// [".../page-1.html", ".../page-2.html", ..., ".../page-50.html"]

On this page