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.comExemplo 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"]