Alberto Balbo 551697d98d Aggiunta validazione robusta per campi numerici
Implementata una nuova funzionalità per garantire che tutti i campi numerici accettino solo input validi.
- Introdotta la classe helper `NumericTextBoxHelper` per configurare campi interi e decimali.
- Gestiti input non validi, campi vuoti e normalizzazione dei decimali.
- Applicata validazione a 13 campi numerici in tutta l'applicazione.
- Aggiunto supporto per tastiere internazionali (punto e virgola).
- Aggiornati `MainWindow.xaml.cs`, `CHANGELOG.md` e documentazione.
- Definiti test e casi d'uso per verificare il corretto funzionamento.
2025-11-27 17:29:09 +01:00
2025-09-25 21:57:11 +02:00
2025-11-19 18:43:40 +01:00

AutoBidder v4.0 - Guida Completa

Version .NET Platform

AutoBidder è un'applicazione desktop per Windows realizzata con WPF e .NET 8.0, progettata per il monitoraggio e la gestione automatizzata di aste online sulla piattaforma Bidoo. L'applicazione utilizza polling HTTP per monitorare in tempo reale lo stato delle aste e inviare offerte automatiche tramite richieste HTTP dirette, senza necessità di automazione browser.


Indice

  1. Panoramica
  2. Requisiti di Sistema
  3. Installazione
  4. Interfaccia Utente
  5. Configurazione Sessione
  6. Monitoraggio Aste
  7. Browser Integrato
  8. Statistiche e Analisi
  9. Impostazioni e Configurazione
  10. Export Dati
  11. Dettagli Tecnici
  12. FAQ e Troubleshooting
  13. Sicurezza e Responsabilità

Panoramica

AutoBidder offre un'interfaccia dashboard moderna con layout modulare che permette di monitorare simultaneamente più aste, visualizzare statistiche in tempo reale e configurare strategie di bidding personalizzate. L'architettura dell'applicazione è stata progettata per massimizzare le prestazioni minimizzando l'utilizzo di risorse di sistema.

Caratteristiche Principali

Monitoraggio Multi-Asta

  • Gestione simultanea di un numero illimitato di aste
  • Polling HTTP adattivo che regola la frequenza delle richieste in base allo stato dell'asta
  • Tracking real-time di timer, prezzo corrente, ultimo offerente e numero di reset
  • Statistiche dettagliate per ogni asta con log dedicato e lista utenti partecipanti

Invio Offerte Automatico con Timing Preciso

  • Puntate inviate tramite richieste HTTP GET dirette agli endpoint Bidoo
  • Nuovo Sistema di Timing: Configurazione precisa in millisecondi (0-5000ms) prima della scadenza
  • Polling adattivo: frequenza dinamica basata sul tempo rimanente (10-1000ms)
  • Cooldown intelligente di 800ms tra puntate consecutive per evitare spam
  • Rilevamento puntate recenti di altri utenti (finestra 500ms)
  • Verifica opzionale stato asta prima di puntare
  • Limiti di prezzo minimo/massimo per controllo automatico delle spese
  • Limite massimo di click per asta per gestire il budget di puntate

Dashboard Moderna

  • Layout a griglia con 6 pannelli ridimensionabili tramite GridSplitter
  • Dark theme professionale con palette colori consistente
  • Log globale e log per singola asta con codifica colore per severità
  • Lista utenti partecipanti con statistiche dettagliate
  • Pannello impostazioni dedicato per configurazione real-time parametri asta

Browser Integrato

  • WebView2 basato su Microsoft Edge Chromium
  • Navigazione completa su Bidoo.com
  • Aggiunta rapida aste dall'URL corrente
  • Menu contestuale personalizzato per azioni rapide
  • Sincronizzazione cookie con sessione applicazione

Requisiti di Sistema

Sistema Operativo

  • Windows 10 (build 1809 o successiva)
  • Windows 11 (tutte le versioni)

Software Richiesto

  • .NET 8.0 Runtime o SDK
  • WebView2 Runtime (solitamente già installato su Windows 11)

Hardware Consigliato

  • CPU: Dual-core 2.0 GHz o superiore
  • RAM: 4 GB minimo, 8 GB consigliato
  • Spazio disco: 200 MB per l'applicazione
  • Connessione Internet: stabile con latenza < 100ms verso server Bidoo

Installazione

Installazione da Sorgente

  1. Verificare .NET 8.0

    dotnet --version
    

    L'output dovrebbe mostrare 8.0.x. Se non installato, scaricarlo da dot.net.

  2. Clonare il Repository

    git clone https://192.168.30.23/Alby96/Mimante
    cd Mimante/Mimante
    
  3. Restore Dipendenze

    dotnet restore
    
  4. Build del Progetto

    dotnet build --configuration Release
    
  5. Eseguire l'Applicazione

    dotnet run
    

    oppure avviare l'eseguibile da bin\Release\net8.0-windows\AutoBidder.exe

Installazione WebView2 Runtime

Se WebView2 non è già installato:

  1. Scaricare da microsoft.com/edge/webview2
  2. Eseguire l'installer Evergreen Bootstrapper
  3. Riavviare l'applicazione

Interfaccia Utente

L'interfaccia di AutoBidder è organizzata in una sidebar di navigazione verticale e un'area contenuto principale che mostra diverse schede.

Sidebar Navigazione

La sidebar a sinistra contiene 5 tab principali:

  • Aste Attive: Dashboard principale con griglia aste monitorate e pannelli di controllo
  • Browser: Browser integrato WebView2 per navigazione su Bidoo
  • Puntate Gratis: Placeholder per funzionalità di ricerca puntate gratuite (in sviluppo)
  • Dati Statistici: Analisi aste chiuse e raccomandazioni strategiche (in sviluppo)
  • Impostazioni: Configurazione sessione, export e impostazioni globali

Layout Dashboard Aste Attive

Il pannello Aste Attive è diviso in 6 sezioni ridimensionabili:

Sezione Superiore

  • Header con info utente (username, puntate disponibili, aste vinte)
  • Pulsanti controllo globale: Avvia Tutti, Pausa Tutti, Ferma Tutti, Esporta
  • Griglia aste monitorate (2/3 larghezza) con colonne: ID, Nome, Latenza, Stato, Timer, Prezzo, Ultimo offerente, Click, Reset, Azioni
  • Log globale (1/3 larghezza) con timestamp e codifica colore

Sezione Inferiore (dettagli asta selezionata)

  • Pannello Impostazioni: URL, pulsanti Apri/Copia/Esporta, campi Timer/Delay/Min/Max Price/Max Clicks, Reset
  • Pannello Utenti: DataGrid con lista utenti partecipanti, conteggio puntate, timestamp ultima offerta, Pulisci
  • Pannello Log Asta: Log dedicato per asta selezionata con Pulisci

Tutti i pannelli sono ridimensionabili trascinando i separatori GridSplitter verticali e orizzontali.


Configurazione Sessione

Per inviare puntate automatiche è necessario fornire ad AutoBidder il cookie di sessione autenticata del tuo account Bidoo. L'applicazione non gestisce login con username/password ma richiede l'inserimento manuale del cookie di sessione.

  1. Aprire Chrome e navigare su https://it.bidoo.com
  2. Effettuare il login con le proprie credenziali Bidoo
  3. Aprire Developer Tools premendo F12
  4. Navigare alla tab "Application"
  5. Nel menu laterale andare su Storage → Cookies → https://it.bidoo.com
  6. Copiare la stringa completa di tutti i cookie (formato: cookie1=value1; cookie2=value2; ...)
  1. Aprire la scheda Impostazioni dalla sidebar
  2. Nella sezione "Configurazione Sessione" incollare la stringa cookie nel campo di testo multi-line
  3. Opzionale: Cliccare "Importa dal Browser" per tentare l'import automatico dai browser installati
  4. Cliccare "Salva" per salvare le modifiche

La sessione viene salvata in modo sicuro usando DPAPI (Data Protection API) di Windows, cifrata per l'account utente corrente. Il cookie non viene mai salvato in chiaro su disco.

Verifica Sessione

Dopo aver configurato il cookie, l'applicazione:

  • Mostrerà il nome utente nell'header della scheda Aste Attive
  • Aggiornerà automaticamente il numero di puntate disponibili
  • Abiliterà i pulsanti di controllo aste

Se il cookie scade o diventa invalido, sarà necessario ripetere la procedura di configurazione.


Monitoraggio Aste

Aggiungere Aste

Metodo 1: Da URL o ID

  1. Cliccare "Aggiungi" nella griglia aste
  2. Inserire uno o più URL/ID asta (uno per riga, o separati da spazio/punto e virgola)
  3. Formati supportati:
    • URL completo: https://it.bidoo.com/auction.php?a=asta_123456
    • ID asta: 123456
    • Link diretto: it.bidoo.com/...
  4. Cliccare OK per aggiungere

Metodo 2: Dal Browser Integrato

  1. Navigare su Bidoo nel browser integrato
  2. Aprire la pagina di un'asta
  3. Cliccare "Aggiungi Asta" nella toolbar del browser
  4. L'asta verrà aggiunta automaticamente alla griglia

Metodo 3: Menu Contestuale Browser

  1. Nel browser integrato, fare click destro su un link di un'asta
  2. Selezionare "Aggiungi Asta" dal menu contestuale
  3. L'asta verrà estratta e aggiunta alla griglia

Configurare Parametri Asta

Dopo aver selezionato un'asta dalla griglia, il pannello Impostazioni in basso a sinistra mostra:

Anticipo (ms) - 0-5000 millisecondi NUOVO

  • Specifica quanti millisecondi prima della scadenza inviare la puntata
  • Valore consigliato: 200-500ms (dipende dalla latenza della connessione)
  • Esempio: Con 200ms, l'app punterà quando il timer arriva a 0.2 secondi
  • Valori più bassi = puntata più vicina alla scadenza = maggior rischio ma più efficace
  • Valori più alti = puntata anticipata = più sicuro ma meno efficace

Verifica Stato Asta NUOVO

  • Checkbox opzionale per aggiungere una verifica extra prima di puntare
  • Se abilitata, effettua un controllo aggiuntivo che l'asta sia ancora aperta
  • Aumenta sicurezza ma aggiunge ~50-100ms di latenza
  • Consigliato per aste ad alto valore

Min EUR / Max EUR

  • Limiti di prezzo per controllo automatico
  • Se impostati, l'applicazione non punterà se il prezzo esce da questi limiti
  • Utile per evitare offerte su aste troppo costose

Max Clicks

  • Numero massimo di puntate da inviare per questa asta
  • 0 = nessun limite
  • Dopo aver raggiunto questo limite, l'asta viene automaticamente fermata

Sistema di Polling Intelligente NUOVO

Il nuovo sistema adatta automaticamente la frequenza di polling in base al timer rimanente:

Timer Rimanente Frequenza Polling Strategia
> 60 secondi 1000ms (1s) Standby
10-60 secondi 100ms Ready
2-10 secondi 20ms Critical
< 2 secondi 10ms BID WINDOW

Vantaggi:

  • Precisione al millisecondo nelle fasi critiche
  • 💰 Riduzione drammatica delle puntate sprecate
  • 🎯 Timing ottimale adattivo
  • 🔋 Basso consumo di risorse nelle fasi iniziali

Rimuovere Aste

  • Selezionare un'asta dalla griglia
  • Cliccare "Rimuovi" o premere il tasto Canc
  • Confermare la rimozione nel dialog NUOVO
  • L'asta verrà rimossa dalla lista e il monitoring sarà arrestato

Persistenza

Le aste aggiunte vengono salvate automaticamente in %AppData%\AutoBidder\saved_auctions.json e ricaricate all'avvio dell'applicazione, mantenendo tutte le configurazioni (timing, limiti, stati).

⚠️ Nota: Le modifiche ai parametri vengono salvate automaticamente quando cambi asta o chiudi l'applicazione NUOVO


Impostazioni e Configurazione

La scheda Impostazioni è divisa in 3 sezioni principali.

Impostazioni Predefinite Aste AGGIORNATO

Valori che verranno applicati automaticamente a tutte le nuove aste aggiunte:

  • Anticipo Puntata (millisecondi): Default 200ms

    • Range: 0-5000ms
    • Consigliato: 200-500ms per connessioni stabili
    • Tooltip: "Millisecondi prima della scadenza per puntare"
  • Verifica Stato Prima di Puntare: Default OFF

    • Checkbox per abilitare controllo extra
    • Aggiunge ~50-100ms di latenza
    • Consigliato per aste ad alto valore
  • Prezzo Minimo (€): Default 0 (nessun limite)

  • Prezzo Massimo (€): Default 0 (nessun limite)

  • Max Click: Default 0 (nessun limite)

Salvataggio Impostazioni

Cliccare il pulsante "Salva" nella barra inferiore per salvare tutte le modifiche apportate alle tre sezioni. Le impostazioni vengono salvate in file JSON locali e persistono tra le sessioni.


Dettagli Tecnici

Nuovo Sistema di Timing

Meccanismo di Puntata

Timeline Esempio (Anticipo = 200ms):
═══════════════════════════════════════════════════
1000ms →  Polling 20ms  (Standby)
 800ms →  Polling 20ms  (Ready)
 600ms →  Polling 20ms  (Ready)
 400ms →  Polling 10ms  (Critical)
 200ms →  ✅ FINESTRA PUNTATA RAGGIUNTA!
          → Verifica: nessuno ha puntato negli ultimi 500ms
          → [Opzionale] Check stato asta aperta
          → PUNTA IMMEDIATAMENTE
   0ms →  ⏰ Scadenza asta

Vantaggi del Nuovo Sistema

Caratteristica Prima (v3.x) Adesso (v4.0) Miglioramento
Precisione Secondi (±1000ms) Millisecondi (±10ms) 100x
Puntate Sprecate Molte Minime 💰 -80%
Strategia Fissa (timer secondi) Dinamica (adattiva) 🎯 +300%
Check Sicurezza No Opzionale 🛡️ Nuovo
Polling Fisso (1s) Adattivo (10-1000ms) +10x veloce
Cooldown Nessuno 800ms anti-spam 🚫 Nuovo

Architettura Applicazione

Pattern Utilizzati

  • Partial Classes: MainWindow diviso in 13 file per responsabilità (Commands, AuctionManagement, Logging, UIUpdates, EventHandlers, ecc.)
  • UserControls Modulari: 5 controlli riutilizzabili (AuctionMonitorControl, BrowserControl, SettingsControl, StatisticsControl, SimpleToolbar)
  • MVVM Light: Separazione Model-View-ViewModel per logica UI
  • Service Layer: Servizi dedicati (AuctionMonitor, BidooApiClient, SessionManager, StatsService)
  • Repository Pattern: PersistenceManager per storage JSON

Struttura Progetto

AutoBidder/
├── Core/                    # MainWindow partial classes
├── Controls/                # UserControls WPF
├── Dialogs/                 # Finestre dialog
├── Models/                  # Data models
├── Services/                # Business logic
├── ViewModels/              # MVVM ViewModels
├── Utilities/               # Helper utilities
├── Data/                    # EF Core contexts
└── Documentation/           # Markdown docs

Polling HTTP AGGIORNATO

Meccanismo

  • Richieste HTTP GET asincrone verso endpoint API Bidoo
  • Parsing risposta JSON per estrarre stato asta (timer, prezzo, bidder)
  • Frequenza adattiva: polling più frequente quando timer < 2s (fino a 10ms)
  • Cooldown intelligente: 800ms tra puntate consecutive
  • Rilevamento conflitti: finestra 500ms per puntate recenti di altri utenti

Latenza

  • Misurata e visualizzata per ogni asta nella colonna "Latenza"
  • Valori tipici: 50-200ms per rete stabile
  • Utilizzata per ottimizzare timing invio puntate
  • Importante: Configura "Anticipo (ms)" in base alla tua latenza media

Threading

  • Ogni asta ha un task asincrono dedicato
  • Cancellation token per gestione pulita stop/pause
  • Throttling per evitare overload server

Invio Puntate AGGIORNATO

Endpoint

GET /bid.php?AID={auctionId}&sup=0&shock=0
Cookie: __stattrb={token}; ...

Nuova Logica di Timing

// Calcola millisecondi rimanenti
double timerMs = state.Timer * 1000;

// Verifica finestra di puntata
if (timerMs <= auction.BidBeforeDeadlineMs)  // Es: <= 200ms
{
    // Check cooldown
    if (DateTime.UtcNow - lastBidTime < 800ms) return;
    
    // Check puntate recenti altri utenti
    if (timeSinceLastExternalBid < 500ms) return;
    
    // [Opzionale] Verifica stato asta
    if (auction.CheckAuctionOpenBeforeBid)
    {
        var check = await PollAuctionStateAsync();
        if (!check.IsOpen) return;
    }
    
    // PUNTA!
    await PlaceBidAsync(auctionId);
}

Parametri

  • AID: ID asta
  • sup: Tipo puntata (0=normale)
  • shock: Shock bid (0=disabilitato)

Headers

  • Cookie: Stringa cookie sessione configurata
  • User-Agent: Browser-like per evitare blocchi
  • Referer: URL asta corrente

Gestione Risposta

  • Success: HTTP 200 con corpo contenente nuovo timer/prezzo
  • Failure: Errore di rete, sessione scaduta, bid già effettuato
  • Retry: Nessun retry automatico, log dell'errore

Performance MIGLIORATE

Metriche Target

  • CPU: < 5% idle, < 15% attivo con 10 aste
  • RAM: ~100MB base + 10MB per 100 aste
  • Latenza polling: 10-200ms (era 1000ms fisso) +90% più veloce
  • UI responsiveness: < 16ms per frame (60fps)

Ottimizzazioni v4.0

  • Lazy loading UserControls (caricamento on-demand per tab)
  • DataGrid virtualizzazione (rendering solo righe visibili)
  • Async/await per tutte le operazioni I/O
  • Polling adattivo basato su timer rimanente (NUOVO)
  • Cooldown anti-spam 800ms (NUOVO)
  • String pooling per log messages
  • Fix persistenza valori asta (NUOVO)
  • Ottimizzazione aggiornamento UI (NUOVO)

FAQ e Troubleshooting

Q: Come scelgo il valore ottimale per "Anticipo (ms)"?

A: Dipende dalla tua latenza di rete:

  1. Guarda la colonna "Latenza" nella griglia aste (mostra ms di risposta API)
  2. Se latenza media è 50-100ms → usa 200-300ms di anticipo
  3. Se latenza media è 100-200ms → usa 400-500ms di anticipo
  4. Testa su aste a basso valore e aggiusta in base ai risultati
  5. Regola generale: Anticipo = (Latenza Media × 2) + 100ms

Q: La checkbox "Verifica stato asta" quando usarla?

A: Abilitala se:

  • Asta ad alto valore (> 50€)
  • Connessione instabile
  • Vuoi massima sicurezza
  • Non usarla per aste veloci (<10s timer) per evitare latenza extra

Q: I valori che inserisco per un'asta non vengono salvati, perché?

A: RISOLTO in v4.0! I valori ora vengono salvati automaticamente quando:

  • Cambi selezione asta
  • Chiudi l'applicazione
  • Clicchi su un altro controllo

Q: L'applicazione non invia puntate, perché?

A: Verificare:

  1. Cookie di sessione configurato e valido nella scheda Impostazioni
  2. Asta selezionata e in stato "Avviato" (non pausato o fermo)
  3. "Anticipo (ms)" configurato correttamente (0-5000)
  4. Limiti prezzo non superati
  5. Max Clicks non raggiunto
  6. Connessione internet attiva

Controllare il Log Asta per messaggi di errore specifici.

Q: Come ottengo il cookie di sessione?

A: Segui la guida dettagliata nella sezione Configurazione Sessione. In breve: Chrome → F12 → Application → Cookies → bidoo.com → copia tutti i valori.

Q: Il cookie smette di funzionare dopo un po', perché?

A: I cookie di sessione Bidoo hanno una scadenza (tipicamente 24-48 ore). Quando scadono è necessario effettuare nuovamente login su Bidoo e copiare un nuovo cookie. L'applicazione mostra un warning nel log quando rileva cookie invalido.

Q: Non vedo il nome utente e le puntate rimanenti, come mai?

A: RISOLTO in v4.0! Le informazioni utente ora si aggiornano correttamente ogni minuto. Se ancora non compaiono:

  1. Verifica che il cookie sia valido (guarda il log)
  2. Aspetta 1 minuto per l'aggiornamento automatico
  3. Riavvia l'applicazione se il problema persiste

Q: Posso usare AutoBidder su più computer contemporaneamente?

A: Sì, ma ogni istanza deve avere il proprio cookie di sessione. Bidoo potrebbe invalidare sessioni se rileva login multipli simultanei da IP diversi. Usa con cautela.

Q: L'applicazione consuma troppa CPU/RAM, come ridurre?

A:

  • Riduci il numero di aste monitorate simultaneamente
  • Aumenta intervallo polling Non più necessario con polling adattivo v4.0
  • Chiudi tab non utilizzate (Browser, Statistiche)
  • Disabilita log dettagliati per singole aste Ottimizzato in v4.0

Q: WebView2 non si carica o mostra errore, cosa fare?

A:

  1. Verificare che WebView2 Runtime sia installato: Pannello di Controllo → Programmi → WebView2
  2. Se non installato, scaricarlo da microsoft.com/edge/webview2
  3. Riavviare l'applicazione dopo installazione
  4. Se persiste, reinstallare WebView2 Runtime

Q: Come esporto le statistiche di tutte le aste?

A: Cliccare "Esporta" nell'header della scheda Aste Attive. Configurare le opzioni export nella scheda Impostazioni prima dell'export. I file verranno salvati nel percorso configurato.

Q: Posso importare aste da un file?

A: Attualmente no. Le aste devono essere aggiunte manualmente via URL/ID. Feature in roadmap per versioni future.

Q: L'applicazione supporta proxy o VPN?

A: L'applicazione usa le impostazioni proxy di sistema di Windows. Configurare proxy in Impostazioni Windows → Rete → Proxy.


Changelog v4.0

Nuovo Sistema di Timing

  • Sostituito "Timer Click (secondi)" con "Anticipo (ms)"
  • Precisione al millisecondo invece dei secondi
  • Polling adattivo 10-1000ms basato su timer rimanente
  • Cooldown 800ms tra puntate consecutive
  • Rilevamento puntate recenti altri utenti (500ms)
  • Checkbox opzionale "Verifica stato asta prima di puntare"

🐛 Bug Fix

  • Fix persistenza valori modificati per singola asta
  • Fix visualizzazione username e puntate rimanenti
  • Conferma richiesta prima di cancellare asta (pulsante + tasto Canc)
  • Ottimizzazione logging per miglior performance

🎨 UI/UX

  • Tooltip informativi su tutti i campi critici
  • Formattazione prezzi con 2 decimali
  • Messaggi di conferma per azioni distruttive

📦 Export

  • Export CSV/JSON/XML aggiornato con nuovi campi
  • Backward compatibility con aste salvate nella v3.x

Sicurezza e Responsabilità

Disclaimer Importante

Termini di Servizio L'uso di strumenti di automazione potrebbe violare i Termini di Servizio della piattaforma Bidoo. L'utente è l'unico responsabile dell'uso che fa di AutoBidder. Gli sviluppatori non si assumono responsabilità per sospensioni account, perdite economiche o altre conseguenze derivanti dall'uso dell'applicazione.

Best Practices

  1. Non condividere il cookie di sessione con nessuno
  2. Logout da Bidoo dopo aver copiato il cookie per invalidare vecchie sessioni
  3. Non usare su computer pubblici o condivisi
  4. Backup regolari di %AppData%\AutoBidder per preservare configurazioni
  5. Aggiornare regolarmente l'applicazione per patch di sicurezza
  6. Usare password sicure per l'account Windows (protegge DPAPI)
  7. Testa su aste a basso valore prima di usare configurazioni aggressive

AutoBidder v4.0 - Developed with ❤️ using .NET 8.0 and WPF

© 2024 - Per uso personale. Non distribuire.

Description
Programma che legge il sito di Bidoo per provare a piazzare offerte poco prima dello scadere del tempo utile
Readme 32 MiB
Languages
C# 38.4%
HTML 31.2%
CSS 30.4%