Skip to content

Releases: LXSCA7/gorimpo

v1.2.1

06 Apr 02:56
eb52547

Choose a tag to compare

🛠️ Patch Notes - v1.2.1

Essa versão adiciona melhorias na resiliência do GOrimpo, adicionando a possibilidade de implementarmos proxies, inicialmente, apenas com proxyscrape. Também faz mudanças na arquitetura, com a refatoração do OLXScraper, e implementa o notificador Gotify, além de acrescentar melhorias na performance do Dockerfile. É a primeira versão oficial do GOrimpo com implementações da comunidade.

🚀 Features:

  • Agora é possível integrar o GOrimpo com o Gotify (by @dipievil);
  • Implementado proxies para evitar banimento de IP, focando em usuários que rodam o GOrimpo 24h em uma VPS.

🔧 Improvements & Fixes:

  • Melhoria na performance do Dockerfile utilizando steps; (by @dipievil)
  • Refatoração no adapter olx.go para múltiplos arquivos em /scrapers/olx/, visando facilitar correções futuras e também uma migração para API;
  • Os logs do sistema agora são padronizados em inglês (by @dipievil).

v1.2.1-beta.2

05 Apr 21:03

Choose a tag to compare

v1.2.1-beta.2 Pre-release
Pre-release

🚀 GOrimpo v1.2.1-beta.2

Esta segunda versão beta faz o Circuit Breaker ignorar instabilidades normais do proxy e focar apenas em erros críticos de sistema.

🛡️ O que mudou?

🧠 Classificação de Erros de Domínio

  • ErrProxyFailure: Introduzimos um novo tipo de erro de domínio para sinalizar falhas de infraestrutura.
  • CB Silence: O GorimpoService agora utiliza errors.Is para identificar falhas de proxy. Se o erro for de rede, o contador de erros consecutivos do Circuit Breaker não é incrementado, evitando cooldowns desnecessários.

🔄 Refatoração do Adaptador OLX

  • Parser vs Playwright: Finalizamos a separação em submódulos dentro do package olx.
  • Search Resilience: O método Search agora é capaz de silenciar timeouts do Playwright, tratando-os como "nenhuma oferta encontrada temporariamente" em vez de falha fatal do adaptador.

🕵️ Debug & Logs

  • Adicionado logging aprimorado no waitForContent para facilitar o rastreio de bloqueios silenciosos do Cloudflare.
  • Melhoria no log de currentProxy para dar visibilidade de quando o "Sticky Proxy" está em ação.

v1.2.1-beta.1

01 Apr 22:01

Choose a tag to compare

v1.2.1-beta.1 Pre-release
Pre-release

🚀 GOrimpo v1.2.1-beta.1 - Proxy & Resilience Update

Esta versão beta introduz uma refatoração massiva na arquitetura de busca da OLX, focando em estabilidade, evasão de bans e modularidade.

🛡️ Destaques desta Versão

🔄 Rotação Dinâmica de Proxies (v1.2)

Implementamos um sistema de feedback em tempo real para o consumo de proxies gratuitos.

  • Feedback Loop: O scraper agora identifica falhas de conexão ou bloqueios da Cloudflare e marca o IP como inválido instantaneamente.
  • Gatilho de Renovação: O "tanque" de proxies é renovado automaticamente quando a taxa de falha atinge 50% do pool inicial.
  • Sticky Identity: Implementamos o mapeamento de User-Agent fixo por IP. Se um proxy funcionou como "Chrome no Windows", ele manterá essa identidade até ser descartado, reduzindo drasticamente o fingerprinting suspeito.

🔔 Notificadores: Gotify Support

Adicionado suporte nativo ao **Gotify! Agora você pode receber seus alertas de ofertas em servidores próprios de notificação, mantendo o self-hosting completo do ecossistema.

🐳 Dockerização Comunitária

Graças à contribuição de parceiros da comunidade, o GOrimpo agora conta com um Dockerfile otimizado e suporte a Docker Compose.

🏗️ Mudanças na Arquitetura (Internal Refactor)

  • Hexagonal Sub-packages: O adaptador da OLX foi quebrado em submódulos (parser, playwright, util), preparando o terreno para a futura implementação da API Nativa.
  • Orquestração de Sessão: O Search agora gerencia o ciclo de vida do browser de forma mais eficiente, evitando vazamento de memória em caso de retries.

⚠️ Notas do Beta

Esta é uma versão de testes. Se encontrar problemas na rotação de proxies, abra uma Issue ou reporte no nosso canal

v1.2.0

28 Feb 20:19

Choose a tag to compare

🛠️ Patch Notes - v1.2.0 - The Ninja Update

Esta versão representa o maior salto tecnológico do GOrimpo até o momento. O foco total foi em Resiliência, Invisibilidade e Arquitetura, transformando o sistema em um fantasma digital capaz de operar em marketplaces com proteções perimetrais agressivas.

🚀 Principais Funcionalidades

🕵️ Bypass Anti-Bot

  • Multi-Browser Engine: Suporte dinâmico aos motores Chromium, Firefox e WebKit (Safari), alternando o comportamento de renderização para anular fingerprinting.
  • Dynamic Identity Factory: Geração em tempo real de milhares de User-Agents reais (versões 2026), eliminando padrões fixos de identidade.
  • Behavioral Mimicry: Implementação de micro-respiros comportamentais (15-45s) em buscas sem resultados e Jitter dinâmico entre ciclos para simular navegação humana.
  • Advanced Stealth Flags: Injeção da flag AutomationControlled e headers reais de navegação para ocultar rastros de automação.

🛡️ Resiliência & Estabilidade

  • Adaptive Circuit Breaker: Inteligência de proteção de IP com castigo escalonado (15min, 25min, 35min...) ao detectar bloqueios 403.
  • Visual Debugging: Captura automática de screenshots em caso de falha de renderização, enviando a "foto do erro" para o Telegram.
  • Pausa de Reciclagem: Descanso programado a cada 50 buscas para limpar rastros de comportamento repetitivo e preservar a reputação do IP.
  • Prevenção de Memory Leak: Gerenciamento rigoroso de processos do Playwright com encerramento em cascata (defer cleanup).

🧠 Inteligência de Dados

  • Filtro de Relevância: Detecção e descarte automático de anúncios "Destaque/Patrocinados" que não condizem com o termo de busca.
  • Vapo-Latency Tracking: Parsing avançado de datas da OLX ("Hoje", "Ontem", "26 de fev"), permitindo medir o tempo exato entre a postagem e a captura.
  • Rich Notifications: Inclusão de Tags (Entrega Fácil, Garantia OLX) e metadados diretamente no alerta do Telegram.

⚙️ Arquitetura & Infraestrutura

  • Refatoração Hexagonal (Ports & Adapters): Desacoplamento total do core, facilitando a inclusão de novos marketplaces e notifiers.
  • Observability Stack: Integração nativa com logs estruturados (JSON), Loki, Promtail e métricas via Prometheus.
  • Hot Reload: Atualização de buscas, jitter e limites via config.yaml sem necessidade de reiniciar o container.

🔧 Fixes e Melhorias Técnicas

  • WebKit Fix: Remoção de argumentos de linha de comando incompatíveis com o Safari em ambientes Docker.
  • Log Identity: Ícones visuais nos logs para identificação imediata do motor em uso (🌐 Chrome, 🦊 Firefox, 🧭 WebKit).
  • Telegram Optimization: Suporte a Tópicos (Forum) para organização profissional de categorias.

⚖️ Licença

Este projeto agora é distribuído sob a Polyform Non-Commercial License 1.0.0. O uso é livre para fins pessoais e educacionais; a comercialização ou uso para fins lucrativos por terceiros é estritamente proibida sem autorização prévia.

v1.2.0-beta.5

28 Feb 01:00

Choose a tag to compare

v1.2.0-beta.5 Pre-release
Pre-release

🛠️ Patch Notes - v1.2.0-beta.5

Esta versão corrige o erro crítico de inicialização do motor WebKit (Safari) em ambientes Linux/Docker, garantindo que o pool de identidades esteja 100% operacional.

🚀 Improvements & Fixes:

  • Engine-Specific Arguments: Corrigido o erro Unknown option --disable-blink-features. Agora, flags específicas do motor Blink (Chromium) são injetadas apenas quando o motor correspondente é selecionado.
  • WebKit Stability: Removidas as restrições incompatíveis do motor WebKit, permitindo que as identidades de macOS/Safari rodem sem erros na VPS.
  • Log Identity Fix: Correção estética nos logs de sistema. Agora a Raposa (🦊) representa corretamente o Firefox e o Globo (🌐) representa o Chrome.
  • Stealth Optimization: Refinamento do comportamento do Playwright para garantir que o Firefox e o WebKit utilizem suas proteções nativas de automação em vez de flags de terceiros.

v1.2.0-beta.4

28 Feb 00:36

Choose a tag to compare

v1.2.0-beta.4 Pre-release
Pre-release

🛠️ Patch Notes - v1.2.0-beta.4

Esta versão transforma o GOrimpo em um fantasma digital, focando em diversidade de identidades e mimetização de comportamento humano para anular as detecções da Cloudflare/OLX.

🚀 Features:

  • Multi-Browser Engine Support: O bot agora alterna dinamicamente entre Chromium, Firefox e WebKit (Safari).
  • Dynamic Identity Factory: Implementação de uma fábrica de identidades em memória que gera milhares de combinações de User-Agents, eliminando a necessidade de listas manuais no YAML.
  • Behavioral Stealth (Micro-Respiro): Adicionado um delay randômico de 15 a 45 segundos sempre que uma busca não retorna resultados novos. Isso remove o padrão rítmico e simula a navegação de um usuário real.
  • Adaptive Circuit Breaker: Sistema de gelo incremental. O primeiro ban resulta em 15 min de repouso, mas reincidências aumentam o castigo em +10 min por nível (15, 25, 35...), protegendo a reputação da VPS.
  • Config-Driven Identity: Novo campo user_agent_count no config.yaml que permite controlar a escala do pool de identidades sem necessidade de rebuild.

🔧 Improvements & Fixes:

  • Visual Log Identity: Adição de ícones nos logs (🦊 para Chromium, 🌐 para Firefox, 🧭 para WebKit) para facilitar o monitoramento do disfarce em uso.
  • Hexagonal Refactoring: Desacoplamento total da geração de identidades através da porta IdentityGenerator, facilitando testes e futuras integrações com proxies.
  • Dockerfile Optimization: Preparação da imagem para suportar todas as dependências de sistema dos três novos motores de busca.

⚠️ Technical Note:

Esta versão exige que o comando de instalação do Playwright no Dockerfile seja atualizado para `O tamanho da imagem final será maior devido aos navegadores adicionais.

v1.2.0-beta.3

27 Feb 16:15

Choose a tag to compare

v1.2.0-beta.3 Pre-release
Pre-release

🛠️ Patch Notes - v1.2.0-beta.3 (Stealth Refinement)

Esta versão foca em tornar o GOrimpo virtualmente invisível para sistemas de detecção de bots (Cloudflare/Akamai), eliminando padrões rítmicos de acesso.

🚀 Features:

  • Advanced Stealth Mode: Implementada a flag --disable-blink-features=AutomationControlled no Chromium, ocultando o rastro de automação (navigator.webdriver).
  • Dynamic Cycle Jitter: O intervalo entre os ciclos de busca agora é totalmente imprevisível (2 a 5 minutos + segundos aleatórios), mimetizando o comportamento de navegação humana.
  • Custom Browser Headers: Adicionada injeção de headers reais (Accept-Language, Connection), garantindo que o browser pareça uma sessão legítima vinda do Brasil.

v1.2.0-beta.2

27 Feb 02:55

Choose a tag to compare

v1.2.0-beta.2 Pre-release
Pre-release

🛠️ Patch Notes - v1.2.0-beta.2

Esta versão transforma o GOrimpo de um simples scraper em um sistema de monitoramento resiliente e autossuficiente. Introduzimos inteligência de proteção contra bloqueios (Circuit Breaker), observabilidade visual e refatoração arquitetural para escala.


🚀 Features:

  • Circuit Breaker: Implementada inteligência de sobrevivência. Após 3 falhas consecutivas, o sistema abre o disjuntor e entra em um cooldown de 15 minutos para preservar o IP da VPS e evitar detecção agressiva.
  • Visual Debugging (Screenshots): Agora o scraper tira uma "foto do crime" (screenshot) em caso de timeout ou erro de renderização, enviando-a automaticamente para o tópico 'system' no Telegram.
  • Modo Furtivo (Bypass Anti-Bot): Rotação dinâmica de User-Agents e delays aleatórios (Jitter) para mimetizar o comportamento humano e mitigar bloqueios 403 (Cloudflare).
  • Search Context: Adicionado parâmetro show_search_term no config.yaml. Quando ativado, as notificações no Telegram exibem qual termo de busca originou aquele achado.
  • Stack de Observabilidade: Integração nativa com Loki + Promtail para centralização de logs estruturados e monitoramento via Grafana.
  • Hot Reload: Atualização em tempo real de seletores, Jitter e User-Agents através da edição do config.yaml sem downtime do container.

🛠️ Refactors:

  • Arquitetura Hexagonal: Desacoplamento total do ConfigManager e segregação de interfaces (VisualScraper, Notifier, Scraper), garantindo o cumprimento do Interface Segregation Principle.
  • Fail-Fast Loop: O ciclo de garimpo agora valida o estado do disjuntor antes de cada busca individual, abortando a execução imediatamente se um bloqueio for detectado.
  • Isolamento de Setup: Extração da lógica de inicialização do Chromium para setupBrowser, melhorando a testabilidade e responsabilidade única.

🐛 Bug Fixes & Infra:

  • Memory Leak Protection: Implementado encerramento em cascata do Playwright com defer cleanup(), garantindo o fechamento de processos zumbis do Chromium em caso de panic ou erro.
  • Pausa de Reciclagem: Implementado descanso programado de 5 a 8 minutos a cada 50 buscas globais para "esfriar" a sessão do bot e limpar rastros de comportamento repetitivo.
  • JSON Logging: Migração total para slog.JSONHandler em produção, facilitando a indexação e busca de erros no Loki.
  • Pre-release Pipeline: GitHub Actions atualizado para taguear imagens Docker como -beta automaticamente, protegendo a branch latest.

v1.2.0-beta.1

24 Feb 00:29

Choose a tag to compare

v1.2.0-beta.1 Pre-release
Pre-release

🛠️ Patch Notes - v1.2.0-beta.1

Essa versão introduz o "Modo Furtivo", equipando o GOrimpo com ferramentas para contornar proteções antibot (como os bloqueios 403 da Cloudflare) e rodar de forma invisível nos marketplaces.


🚀 Features:

  • Modo Furtivo (Bypass Anti-Bot): Adicionado suporte a rotação dinâmica de User-Agents e delays aleatórios (Jitter) para imitar o comportamento humano e mitigar bloqueios. - Hot Reload do Scraper: Agora é possível atualizar os limites de Jitter e a lista de User-Agents em tempo real editando o config.yaml, sem precisar reiniciar a aplicação ou derrubar o container.

🛠️ Refactors:

  • Arquitetura Hexagonal: Desacoplamento do ConfigManager, segregando as interfaces em Provider e Watcher (seguindo o Interface Segregation do SOLID) para manter a camada de Domínio pura e isolada da Infraestrutura. - Isolamento de Setup do Playwright: Extração da inicialização do navegador para a função independente setupBrowser, melhorando a leitura e a responsabilidade única do método de busca.

🐛 Bug Fixes & ⚙️ Infra:

  • Prevenção de Memory Leak: Implementado o encerramento em cascata (rollback manual) no setupBrowser com defer cleanup(). Isso garante que processos fantasmas do Chromium não fiquem rodando na memória caso ocorra falha de conexão ou erro ao abrir páginas. - Pipeline de CI/CD Inteligente: Atualização no GitHub Actions (docker.yml) para identificar dinamicamente releases -beta e gerar as tags Docker correspondentes, protegendo a imagem latest de produção.

v1.1.2

22 Feb 19:33

Choose a tag to compare

🛠️ Patch Notes - v1.1.1

Esta versão melhora o GOrimpo em produção, introduzindo monitoramento avançado no Grafana, correção de bugs silenciosos no banco de dados e um sistema resiliente de comunicação com a API do Telegram.

✨ Novidades (Features)

  • Busca Otimizada (Most Recent First): A ordenação das buscas na plataforma agora é forçada por padrão para "Mais Recentes" (sf=1). Isso garante que o GOrimpo raspe os anúncios assim que eles saem do forno, focando exatamente nos vendedores que acabaram de postar e precisam de negócio rápido.
  • Telemetria Completa com Prometheus: Adicionados contadores rigorosos para monitorar o funil de ofertas:
    • gorimpo_scraped_total: Total bruto de itens lidos da plataforma.
    • gorimpo_valid_total: Ofertas que passaram pelos filtros iniciais.
    • gorimpo_discarded_total: Ofertas barradas (separadas por labels de motivo price e filter).
    • gorimpo_sent_total: O que foi enviado com sucesso para o Telegram.
      (A arquitetura de labels agora permite dashboards no Grafana com filtros dinâmicos por produto/termo de busca).

🐛 Correções de Bugs (Bug Fixes)

  • Escudo Anti-Ban do Telegram (Erro 429): O bot agora intercepta ativamente o limite de requisições (Too Many Requests), faz o parse do JSON de erro e pausa a execução exatamente pelo tempo exigido no retry_after antes de tentar enviar novamente, garantindo que nenhuma oferta seja perdida.
  • Falso-Positivo de Duplicados no SQLite: Corrigido um erro silencioso de digitação na tabela discarded_offers que impedia o salvamento dos itens descartados, fazendo com que o sistema os marcasse incorretamente como duplicados.
  • Filtro de Preço Máximo (max_price): Ajustada a lógica de limite de preço. Agora, omitir o valor no config.yaml (ou definir como 0) é tratado como infinito, em vez de bloquear todas as ofertas válidas.

🛠️ Melhorias Técnicas (Refactors & Under the Hood)

  • Logs de Alta Precisão: O terminal agora exibe sumários exatos, separando claramente itens que são "lixos novos" de "lixos já registrados no banco", evitando confusões sobre o funcionamento do filtro.
  • Agrupamento de Mensagens de Sistema: O aviso de "Novas Categorias Configuradas" agora utiliza strings.Builder para enviar um único bloco de texto eficiente no Telegram, em vez de múltiplas mensagens avulsas.