Partner Scraper

Catálogo e operação

216 produtos cartucho: 36 eetgroup: 42 logiscenter: 38 tdsynnex: 100 Último job: 2026-11-01T12:55:58Z

Filtrar produtos

Cache: pesquisa instantânea nos produtos já espelhados (todos os parceiros). Se não encontrar, use Espelhar parceiros (2–4 min, TD Synnex + EET + Cartucho + Logiscenter).

Limitações por parceiro

TD Synnex

Parceiro activo

Método: API HTTP (keywordsearch)

VPS / datacenter: Funciona

GitHub Actions: Funciona

Limitações

  • Preços de parceiro podem estar ocultos sem login B2B.
  • Catálogo público limitado face à área autenticada.

Estratégia

Sync diário e pesquisa com os restantes. Pesquisa por SKU é a forma mais fiável.

EET Group

Parceiro activo

Método: Playwright + intercept Search API

VPS / datacenter: Funciona

GitHub Actions: Funciona

Limitações

  • Azure WAF pode exigir desafio de browser.
  • Preços podem ser null sem sessão de parceiro.
  • Estrutura do catálogo varia por região.

Estratégia

Mesmo peso que TD Synnex e Cartucho no espelhamento e na pesquisa.

Cartucho

Parceiro activo

Método: Playwright + cards + AJAX search

VPS / datacenter: Bloqueado (HTTP 429)

GitHub Actions: Funciona

Limitações

  • Blacklist de IP em servidores IIS (429).
  • Pesquisa via UI AJAX, não URL directa.
  • Preço promo (.price-incl) vs PVP (.price-list).

Estratégia

GHA para scrape e ingest. Mesma importância que os outros parceiros activos.

Logiscenter

Menor (bloqueios)

Método: Playwright + parse Magento

VPS / datacenter: Bloqueado (Cloudflare)

GitHub Actions: Funciona

Limitações

  • Cloudflare bloqueia IPs de datacenter (VPS comum).
  • Bloqueios mais agressivos que Cartucho.
  • Preços podem exigir login.

Estratégia

Incluída no sync global; se falhar, os outros 3 parceiros continuam. Teste manual opcional.

Como obter e manter os dados

Espelhamento com pesquisa (todos os parceiros)

  1. 1. Utilizador pesquisa na loja (ex: «toner HP»).
  2. 2. Primeiro: pesquisa no cache local (instantâneo, todos os parceiros).
  3. 3. Se vazio: «Espelhar parceiros» dispara GHA nos 4 fornecedores (mesmo limite cada).
  4. 4. Em 2–4 min os produtos entram via ingest. Logiscenter pode falhar sem afectar os outros.
  5. 5. Domingos: workflow terabyte-search-mirror com termos em queries/terabyte-search-terms.txt.

Sync diário (4 parceiros)

  1. Workflow terabyte-partner-sync às 06:00 UTC (sources=all, 25 produtos por parceiro).
  2. TD Synnex, EET Group e Cartucho têm o mesmo peso comercial.
  3. Logiscenter entra no mesmo job; bloqueios Cloudflare podem reduzir resultados desse parceiro.

Bootstrap inicial

  1. Correr workflow TERABYTE Partner Sync (sources=all, limit 25–40).
  2. Validar nesta página com filtro por parceiro.
  3. Logiscenter: se 0 produtos, os outros 3 bastam para arrancar a loja.

Atualização diária de preços

  1. Manter queries/watchlist.txt com referências (CE285A, CF283A, …).
  2. Workflow price-sync (dias úteis 05:30 UTC) faz search por referência.
  3. Resultados fazem upsert na API (preços actualizados, URLs estáveis).
  4. Alternativa: API_SCHEDULE_ENABLED=true no servidor com RAM suficiente.

Arquitectura híbrida (recomendada)

  1. Render ou servidor cliente: API + SQLite + esta página de consulta.
  2. GitHub Actions: scrapers com Playwright (IPs não bloqueados).
  3. Servidor cliente (IP diferente): TD Synnex + EET em local se possível.
  4. WordPress: chamadas server-side (wp_remote_*) com X-API-Key.

Fluxo no Render (teste)

GitHub Actions (scrape)
        │
        ▼ POST /api/v1/ingest + X-API-Key
Render API (esta página + REST)
        │
        ▼ GET /api/v1/products
WordPress plugin / widget

Scheduler API: inactivo (usar GHA). Docs API: /docs

Cuidados e boas práticas

Ética e conformidade

Este projecto usa delays, retries moderados e parsers estáveis. Não implementa evasão agressiva de anti-bot. Usar apenas em contexto autorizado (parceiro, cliente, catálogo público). Em caso de bloqueio, mudar de IP (GHA) ou negociar acesso API oficial com o fornecedor.