Aggiornamento alla versione 3.0.0

- Rimosse funzionalità legacy legate a WebView2.
- Introdotto uno stile globale per i pulsanti.
- Semplificata l'interfaccia con gestione tramite griglia unica.
- Aggiunti comandi per avviare, mettere in pausa e fermare aste.
- Introdotta gestione manuale dei cookie tramite dialog.
- Aggiunti dialog per configurare sessione e aggiungere aste.
- Migliorata la persistenza con salvataggio sicuro (DPAPI).
- Rifattorizzate statistiche per utilizzare `BidHistory` e `BidderStats`.
- Ottimizzato il polling per ridurre il carico di sistema.
- Aggiornata esportazione CSV con dati più dettagliati.
- Introdotti nuovi modelli dati per utente e banner aste.
- Rimossi file di test manuale e codice obsoleto.
- Aggiornata documentazione per riflettere le modifiche.
- Aggiunta nuova icona dell'applicazione.
- Migliorata la sicurezza eliminando il salvataggio in chiaro dei cookie.
This commit is contained in:
Alberto Balbo
2025-10-28 12:45:08 +01:00
parent fef7b909e7
commit 717dc44b3b
32 changed files with 1039 additions and 1471 deletions

101
README.md
View File

@@ -2,7 +2,7 @@
> AutoBidder è uno strumento desktop per Windows (WPF, .NET 8) pensato per automatizzare le offerte sul sito Bidoo.com. Questa guida descrive caratteristiche, installazione, configurazione, modalità operative, strategie avanzate, dettagli tecnici e risoluzione dei problemi.
![Version](https://img.shields.io/badge/version-2.10-blue)
![Version](https://img.shields.io/badge/version-3.0-blue)
![.NET](https://img.shields.io/badge/.NET-8.0-purple)
---
@@ -12,9 +12,9 @@ Sommario
- Requisiti di sistema
- Installazione e avvio
- Guida rapida (primi passi)
- Modalità operative: Asta Singola e Multi-Asta
- Gestione aste tramite griglia
- Strategie e consigli pratici
- Dettagli tecnici: Polling, Click HTTP e sincronizzazione cookie
- Dettagli tecnici: Polling e Click HTTP
- Impostazioni e persistenza
- Esportazione e diagnostica
- FAQ e risoluzione problemi
@@ -23,10 +23,9 @@ Sommario
---
## Caratteristiche principali
- Monitoraggio in tempo reale di singole aste o molte aste contemporaneamente
- Due modalità operative: `Asta Singola` (massima precisione) e `Multi-Asta` (monitoraggio e auto-switch)
- Polling adattivo (HTTP / WebView2 / Active) per ridurre uso di CPU e RAM
- Click HTTP diretto (reverse engineered) con sincronizzazione dei cookie dal WebView2
- Monitoraggio in tempo reale di tutte le aste tramite griglia unica
- Polling adattivo solo HTTP per ridurre uso di CPU e RAM
- Click HTTP diretto (reverse engineered) con cookie manuale
- Persistenza della lista aste (`auctions.json`) e esportazione CSV delle statistiche
- UI dark theme moderna con griglia in tempo reale, dettagli asta, log e contatori
@@ -44,59 +43,47 @@ Sommario
- `dotnet restore`
- `dotnet build --configuration Release`
4. Eseguire l'app:
- `dotnet run` (dalla cartella del progetto) oppure avviare `AutoBidder.exe` in `bin\\Release\\net8.0-windows`
- `dotnet run` (dalla cartella del progetto) oppure avviare `AutoBidder.exe` in `bin\Release\net8.0-windows`
## Guida rapida (primi passi)
1. Avvia l'app: l'interfaccia principale mostra due pannelli (controlli a sinistra, browser WebView2 a destra).
2. Login: accedi a `bidoo.com` tramite il browser integrato (se vuoi usare il Click HTTP diretto devi essere loggato).
3. Scegli modalità:
- `Asta Singola` per concentrarti su un solo oggetto
- `Multi-Asta` per monitorare più aste e lasciare che l'app esegua auto-switch
4. Aggiungi aste (Multi-Asta):
- Metodo Automatico: vai sulla pagina Preferiti e lascia che l'app rilevi le aste
- Metodo Manuale: clicca `+ URL` o `Pagina` e incolla/aggiungi l'URL dell'asta
5. Configura impostazioni globali o per-asta (Timer Click, Min/Max Price, Max Clicks, Max Resets, Ritardo, Multi-Click)
6. Premi `Avvia` per attivare il Click Loop; il background polling rimane sempre attivo anche senza Avvia.
1. Avvia l'app: l'interfaccia principale mostra la griglia delle aste monitorate.
2. Configura la sessione: copia il cookie `__stattrb` dal browser (F12 > Application > Cookies) e inseriscilo tramite il dialog di configurazione.
3. Aggiungi aste: usa il pulsante `+ Aggiungi` per inserire URL o ID delle aste da monitorare.
4. Configura impostazioni per ogni asta (Timer Click, Min/Max Price, Max Clicks, Max Resets, Ritardo).
5. Premi `Avvia Tutti` per attivare il monitoraggio e le puntate automatiche.
## Modalità operative
### Asta Singola
- Ideale per oggetti di valore dove la precisione è critica.
- Monitoraggio intensivo del DOM tramite WebView2, contatori dettagliati, lista utenti e log dedicato.
- Supporta `Multi-Click` (click multipli paralleli) per aumentare probabilità in connessione instabile.
- Impostazioni consigliate per asta singola: `Timer Click` 0-1, `Multi-Click` ON, `Ritardo` 0ms.
### Multi-Asta
- Monitoraggio simultaneo di molte aste.
- L'app punta solo sull'asta con `timer` più basso (auto-switch) per evitare concorrere contro se stessa.
- Per ogni asta è possibile impostare opzioni indipendenti (Timer Click, Min/Max Price, Pausa/Riprendi).
- Metodo manuale (URL diretto) è raccomandato per monitoraggi massivi (consumo risorse minimo).
## Gestione aste tramite griglia
- Tutte le aste sono gestite tramite una griglia unica.
- Puoi avviare, mettere in pausa, fermare o puntare manualmente su ogni asta direttamente dalla griglia.
- Non esistono più modalità "Asta Singola" o "Multi-Asta": tutto è gestito in modo uniforme.
## Strategie consigliate
- Monitoraggio massivo (50+ aste): usa `URL Manuale`, `Timer Click` 0, limiti di prezzo bassi.
- Asta singola ad alto valore: `Timer Click` 0-1, `Multi-Click` ON, `Ritardo` 0ms.
- Caccia all'affare: `Max Price` molto basso, monitora molte aste con Timer Click 0.
- Monitoraggio massivo: aggiungi molte aste tramite URL o ID, imposta Timer Click basso e limiti di prezzo.
- Asta ad alto valore: Timer Click 0-1, Ritardo 0ms.
- Caccia all'affare: Max Price basso, monitora molte aste con Timer Click 0.
## Approfondimento tecnico
### Polling adattivo (Dual-Track)
- Track 1 — Background Polling: esegue richieste HTTP ogni ~5s per aggiornare timer, prezzo e ultimo bidder. Mantiene uso CPU/RAM minimo.
- Track 2 — Click Loop: attivo solo dopo `Avvia`. Polling dinamico 20-400ms per aste critiche e invio dei click (HTTP diretto o WebView2 fallback).
### Polling adattivo
- Il monitoraggio avviene solo tramite chiamate HTTP dirette alle API di Bidoo.
- Nessun WebView2 viene utilizzato, nemmeno come fallback.
- Il polling si adatta al timer dell'asta per ottimizzare la frequenza delle richieste.
### Click HTTP diretto
- Al momento dell'azione, il client costruisce una GET verso l'endpoint reverse engineered di Bidoo tipo:
`GET https://it.bidoo.com/bid.php?AID=81204347&sup=0&shock=0`
- Richiede i cookie di sessione (PHPSESSID, user_token, ecc.) che vengono sincronizzati dal WebView2.
- Latenza tipica: 10-30ms (molto più veloce del click via WebView2 che può impiegare 50-100ms)
- Se il Click HTTP fallisce, l'app esegue fallback automatico con `ExecuteScript` su WebView2.
- Richiede i cookie di sessione (`__stattrb`) che vengono copiati manualmente dal browser.
- Latenza tipica: 10-30ms.
- Non esiste più alcun fallback WebView2: tutte le puntate sono gestite solo via HTTP.
### Sincronizzazione cookie
- Al primo `Avvia` viene letto il `CookieManager` di `CoreWebView2`, copiato in un `CookieContainer` per l'`HttpClient` utilizzato dai Click HTTP.
- I cookie sono conservati solo in memoria, mai su disco. Devono essere rinfrescati ri-effettuando il login nel WebView2 se scadono.
- I cookie vengono inseriti manualmente dall'utente tramite dialog.
- Non vengono mai salvati su disco in chiaro.
- Se il cookie scade, è necessario copiarlo nuovamente dal browser.
## Persistenza e file locali
- Lista aste manuali salvata in:
`%AppData%\\AutoBidder\\auctions.json`
`%AppData%\AutoBidder\auctions.json`
- La lista viene ricaricata automaticamente all'avvio dell'app.
- Esportazione CSV: la funzionalità `Export CSV` genera un file contenente statistiche per ogni asta (nome, ID, URL, timer, prezzo, strategy, click/resets, impostazioni per-asta).
@@ -105,13 +92,10 @@ Sommario
- `Max Clicks` / `Max Resets`: limiti operativi (0 = illimitato)
- `Min/Max Price`: evita puntate fuori dal range desiderato
- `Ritardo (ms)`: delay aggiuntivo prima di inviare il click
- `Multi-Click`: invia più click paralleli (utile su connessioni con jitter)
## Interfaccia e controlli
- Pannello sinistro: controlli principali (modalità, Avvia, Pausa, Stop, aggiungi/rimuovi aste, esporta CSV)
- Pannello destro: browser integrato (WebView2) + dettagli asta quando selezionata
- Griglia aste (multi-asta): mostra Timer, Prezzo, Strategia, Clicks, Resets, Ultimo bidder
- Log in tempo reale per ogni asta con dettagli di latenza, risposta server e fallimenti
- Griglia centrale: mostra tutte le aste monitorate con controlli per avviare, mettere in pausa, fermare e puntare manualmente.
- Log in tempo reale per ogni asta con dettagli di latenza, risposta server e fallimenti.
## Diagnostica ed esportazione
- Abilita log dettagliato prima di aprire issue o per analisi locali
@@ -119,17 +103,18 @@ Sommario
- Mantieni screenshot del pannello log per report più chiari
## FAQ e risoluzione dei problemi
- "Non vedo Click HTTP riuscito": assicurati di essere loggato nel WebView2 e che la sincronizzazione cookie sia avvenuta (vedi log "Cookie sincronizzati (X cookie)"). Premi `Avvia` dopo il login.
- "Aste non rilevate": assicurati di essere nella pagina Preferiti per il metodo automatico oppure aggiungi gli URL manualmente.
- "Non vedo Click HTTP riuscito": assicurati di aver inserito correttamente il cookie dal browser e che la sessione sia valida.
- "Aste non rilevate": aggiungi manualmente gli URL o ID delle aste.
- "Il programma non si avvia": verifica .NET 8.0 Runtime installato e che il build sia andato a buon fine.
- "Click non funzionano": verifica Timer Click, limiti di prezzo e connessione internet. Controlla se il fallback WebView è attivo nei log.
- "Click non funzionano": verifica Timer Click, limiti di prezzo, connessione internet e validità del cookie.
## Avvisi e responsabilità
- L'automazione potrebbe violare i Termini di Servizio di Bidoo. L'uso è a rischio e responsabilità dell'utente.
- Non salvare credenziali su disco: l'app non memorizza login, usa il WebView2 per la sessione.
- Non salvare credenziali su disco: l'app non memorizza login, usa solo il cookie manuale.
- Cookie e dati di sessione rimangono in memoria e vengono rimossi alla chiusura dell'app.
## Changelog sintetico (ultime versioni)
- v3.0: Solo HTTP, nessun WebView2, cookie manuale, interfaccia unica su griglia
- v2.10: Click HTTP diretto, sincronizzazione cookie automatica, miglioramenti prestazionali
- v2.9: Persistenza automatica, UI improvements, export CSV
- v2.8: Polling adattivo e strategie ibride
@@ -141,13 +126,13 @@ Sommario
---
Note tecniche per sviluppatori
- Progetto target: `.NET 8.0` (WPF + WebView2)
- Progetto target: `.NET 8.0` (WPF)
- Aree chiave del codice:
- `Services\\BidooApiClient.cs` — gestione Click HTTP e parsing risposte
- `Services\\AuctionMonitor.cs` — loop di polling e logica auto-switch
- `Services\\SessionManager.cs`sincronizzazione cookie e HttpClient creation
- `Utilities\\PersistenceManager.cs` — salvataggio/ricaricamento `auctions.json`
- `ViewModels\\AuctionViewModel.cs` + XAML corrispondenti — visualizzazione e binding UI
- `Services\BidooApiClient.cs` — gestione Click HTTP e parsing risposte
- `Services\AuctionMonitor.cs` — loop di polling
- `Services\SessionManager.cs`gestione cookie manuale
- `Utilities\PersistenceManager.cs` — salvataggio/ricaricamento `auctions.json`
- `ViewModels\AuctionViewModel.cs` + XAML corrispondenti — visualizzazione e binding UI
## Contributi
- Questo repository è privato. Per contribuire, aprire PR verso branch `main` e seguire le convenzioni del progetto.