Aggiornamento alla versione 4.0.0
* Aggiunto `BooleanToOpacityConverter` per gestire opacità dinamica. * Introdotto nuovo sistema di timing con `BidBeforeDeadlineMs`. * Aggiunta opzione `CheckAuctionOpenBeforeBid` per maggiore sicurezza. * Implementato polling adattivo (10ms-1000ms) e cooldown di 800ms. * Migliorata gestione pulsanti globali con supporto `AUTO-START`/`AUTO-STOP`. * Fix per il tasto `Canc` e focus automatico sul `DataGrid`. * Fix per avvio singola asta senza necessità di "Avvia Tutti". * Aggiornati formati CSV/JSON/XML con nuovi campi. * Migliorata gestione cookie con endpoint unico `buy_bids.php`. * Miglioramenti UI/UX: tooltip, formattazione prezzi, feedback visivo. * Aggiornata documentazione e changelog per la versione 4.0.0.
This commit is contained in:
562
README.md
562
README.md
@@ -1,10 +1,10 @@
|
||||
# AutoBidder v4.0 - Guida Completa
|
||||
# AutoBidder v4.0 - Guida Completa
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
---
|
||||
|
||||
@@ -22,13 +22,13 @@ AutoBidder
|
||||
10. [Export Dati](#export-dati)
|
||||
11. [Dettagli Tecnici](#dettagli-tecnici)
|
||||
12. [FAQ e Troubleshooting](#faq-e-troubleshooting)
|
||||
13. [Sicurezza e Responsabilità](#sicurezza-e-responsabilit)
|
||||
13. [Sicurezza e Responsabilità](#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.
|
||||
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
|
||||
|
||||
@@ -38,17 +38,20 @@ AutoBidder offre un'interfaccia dashboard moderna con layout modulare che permet
|
||||
- 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**
|
||||
**Invio Offerte Automatico con Timing Preciso**
|
||||
- Puntate inviate tramite richieste HTTP GET dirette agli endpoint Bidoo
|
||||
- Configurazione precisa del timing con granularità al secondo (0-8 secondi countdown)
|
||||
- Delay configurabile in millisecondi per ottimizzare la precisione dell'invio
|
||||
- **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à
|
||||
- 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
|
||||
|
||||
@@ -69,7 +72,7 @@ AutoBidder offre un'interfaccia dashboard moderna con layout modulare che permet
|
||||
|
||||
**Software Richiesto**
|
||||
- .NET 8.0 Runtime o SDK
|
||||
- WebView2 Runtime (solitamente già installato su Windows 11)
|
||||
- WebView2 Runtime (solitamente già installato su Windows 11)
|
||||
|
||||
**Hardware Consigliato**
|
||||
- CPU: Dual-core 2.0 GHz o superiore
|
||||
@@ -113,7 +116,7 @@ AutoBidder offre un'interfaccia dashboard moderna con layout modulare che permet
|
||||
|
||||
### Installazione WebView2 Runtime
|
||||
|
||||
Se WebView2 non è già installato:
|
||||
Se WebView2 non è già installato:
|
||||
1. Scaricare da [microsoft.com/edge/webview2](https://developer.microsoft.com/microsoft-edge/webview2/)
|
||||
2. Eseguire l'installer Evergreen Bootstrapper
|
||||
3. Riavviare l'applicazione
|
||||
@@ -122,7 +125,7 @@ Se WebView2 non
|
||||
|
||||
## Interfaccia Utente
|
||||
|
||||
L'interfaccia di AutoBidder è organizzata in una sidebar di navigazione verticale e un'area contenuto principale che mostra diverse schede.
|
||||
L'interfaccia di AutoBidder è organizzata in una sidebar di navigazione verticale e un'area contenuto principale che mostra diverse schede.
|
||||
|
||||
### Sidebar Navigazione
|
||||
|
||||
@@ -130,13 +133,13 @@ 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)
|
||||
- **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:
|
||||
Il pannello Aste Attive è diviso in 6 sezioni ridimensionabili:
|
||||
|
||||
**Sezione Superiore**
|
||||
- Header con info utente (username, puntate disponibili, aste vinte)
|
||||
@@ -155,7 +158,7 @@ Tutti i pannelli sono ridimensionabili trascinando i separatori GridSplitter ver
|
||||
|
||||
## 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.
|
||||
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.
|
||||
|
||||
### Ottenere il Cookie di Sessione
|
||||
|
||||
@@ -163,7 +166,7 @@ Per inviare puntate automatiche
|
||||
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`
|
||||
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; ...`)
|
||||
|
||||
### Configurare il Cookie nell'Applicazione
|
||||
@@ -178,11 +181,11 @@ La sessione viene salvata in modo sicuro usando DPAPI (Data Protection API) di W
|
||||
### 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
|
||||
- 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.
|
||||
Se il cookie scade o diventa invalido, sarà necessario ripetere la procedura di configurazione.
|
||||
|
||||
---
|
||||
|
||||
@@ -192,7 +195,7 @@ Se il cookie scade o diventa invalido, sar
|
||||
|
||||
**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)
|
||||
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`
|
||||
@@ -203,31 +206,33 @@ Se il cookie scade o diventa invalido, sar
|
||||
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
|
||||
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
|
||||
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:
|
||||
|
||||
**Timer Click (secondi 0-8)**
|
||||
- Specifica il secondo del countdown al quale inviare la puntata
|
||||
- 0 = invia tra 0.0s e 0.9s
|
||||
- 1 = invia tra 1.0s e 1.9s
|
||||
- E così via fino a 8
|
||||
**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
|
||||
|
||||
**Delay (millisecondi)**
|
||||
- Delay aggiuntivo da applicare dopo aver raggiunto il timer
|
||||
- Valori tipici: 0-500ms
|
||||
- Usare per fine-tuning della precisione
|
||||
**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
|
||||
- Se impostati, l'applicazione non punterà se il prezzo esce da questi limiti
|
||||
- Utile per evitare offerte su aste troppo costose
|
||||
|
||||
**Max Clicks**
|
||||
@@ -235,135 +240,58 @@ Dopo aver selezionato un'asta dalla griglia, il pannello Impostazioni in basso a
|
||||
- 0 = nessun limite
|
||||
- Dopo aver raggiunto questo limite, l'asta viene automaticamente fermata
|
||||
|
||||
### Controllare le Aste
|
||||
### Sistema di Polling Intelligente ⚡ NUOVO
|
||||
|
||||
**Avvio/Pausa/Ferma Singola Asta**
|
||||
- Usare i pulsanti "Avvia", "Pausa", "Ferma" nella colonna Azioni della griglia
|
||||
- Avvia: inizia il monitoring e l'invio automatico puntate
|
||||
- Pausa: sospende temporaneamente senza fermare il polling
|
||||
- Ferma: arresta completamente il monitoring
|
||||
Il nuovo sistema adatta automaticamente la frequenza di polling in base al timer rimanente:
|
||||
|
||||
**Avvio/Pausa/Ferma Globale**
|
||||
- Usare i pulsanti nell'header per controllare tutte le aste simultaneamente
|
||||
- Utile per avvio rapido di sessioni multi-asta
|
||||
| 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 |
|
||||
|
||||
**Puntata Manuale**
|
||||
- Cliccare "Punta" nella colonna Azioni per inviare un'offerta immediata
|
||||
- Ignora timer e limiti configurati
|
||||
- Utile per test o interventi manuali urgenti
|
||||
**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
|
||||
- L'asta verrà rimossa dalla lista e il monitoring sarà arrestato
|
||||
- **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 (timer, limiti, stati).
|
||||
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).
|
||||
|
||||
---
|
||||
|
||||
## Browser Integrato
|
||||
|
||||
La scheda Browser contiene un controllo WebView2 che offre un'esperienza di navigazione completa basata su Microsoft Edge Chromium.
|
||||
|
||||
### Toolbar Browser
|
||||
|
||||
- **? ?**: Pulsanti indietro/avanti
|
||||
- **?**: Ricarica pagina
|
||||
- **Home**: Naviga alla homepage Bidoo
|
||||
- **Barra indirizzo**: Mostra URL corrente, permette navigazione diretta
|
||||
- **Vai**: Naviga all'URL inserito
|
||||
- **Aggiungi Asta**: Aggiunge l'asta della pagina corrente alla griglia
|
||||
|
||||
### Navigazione
|
||||
|
||||
Il browser si comporta come un browser standard:
|
||||
- Click su link per navigare
|
||||
- Form funzionano normalmente (login, ricerca, ecc.)
|
||||
- JavaScript abilitato
|
||||
- Cookie condivisi con la sessione applicazione
|
||||
|
||||
### Menu Contestuale
|
||||
|
||||
Facendo click destro su un link nel browser:
|
||||
- **Aggiungi Asta**: Estrae l'ID asta dal link e la aggiunge alla griglia
|
||||
- **Copia Link**: Copia l'URL negli appunti
|
||||
|
||||
### Sincronizzazione Cookie
|
||||
|
||||
I cookie del browser WebView2 sono sincronizzati con la sessione dell'applicazione. Se configurato un cookie nella scheda Impostazioni, questo sarà disponibile anche nel browser integrato, permettendo la navigazione autenticata.
|
||||
|
||||
---
|
||||
|
||||
## Statistiche e Analisi
|
||||
|
||||
La scheda Dati Statistici è attualmente in fase di sviluppo e mostrerà in futuro:
|
||||
|
||||
**Analisi Aste Chiuse**
|
||||
- Import e parsing di aste chiuse da file export o scraping diretto
|
||||
- Aggregazione statistica: media prezzi finali, numero medio puntate, distribuzione oraria vincite
|
||||
- Visualizzazione grafici e trend
|
||||
|
||||
**Raccomandazioni Strategiche**
|
||||
- Suggerimenti automatici basati su dati storici
|
||||
- Applicazione automatica di configurazioni ottimali per prodotti simili
|
||||
- Machine learning per previsione prezzi e probabilità di vittoria
|
||||
|
||||
**Database Locale**
|
||||
- Storage in SQLite con Entity Framework Core
|
||||
- Schema ottimizzato per query analitiche
|
||||
- Export/import dati per backup
|
||||
⚠️ **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.
|
||||
La scheda Impostazioni è divisa in 3 sezioni principali.
|
||||
|
||||
### Configurazione Sessione
|
||||
|
||||
**Campo Cookie**
|
||||
- Area di testo multi-line per incollare la stringa cookie completa
|
||||
- Formati supportati: stringa cookie raw, solo token `__stattrb`, cookie separati da punto e virgola
|
||||
|
||||
**Pulsanti**
|
||||
- **Importa dal Browser**: Tenta import automatico cookie da Chrome, Edge, Firefox
|
||||
- **Cancella**: Pulisce il campo e resetta la sessione
|
||||
|
||||
**Info Box**
|
||||
- Istruzioni dettagliate su come ottenere la stringa cookie completa
|
||||
- Guida passo-passo per Chrome Developer Tools
|
||||
|
||||
### Impostazioni Export
|
||||
|
||||
**Percorso Export**
|
||||
- Path del folder dove salvare i file esportati
|
||||
- Pulsante "Sfoglia" per selezione tramite dialog
|
||||
|
||||
**Formato File**
|
||||
- **CSV**: Comma-Separated Values, compatibile con Excel
|
||||
- **JSON**: JavaScript Object Notation, formato strutturato
|
||||
- **XML**: Extensible Markup Language, formato gerarchico
|
||||
|
||||
**Opzioni Export**
|
||||
- **Includi solo puntate utilizzate**: Esporta solo aste su cui sono state inviate offerte
|
||||
- **Includi log delle aste**: Aggiunge ai file export il log completo di ogni asta
|
||||
- **Includi storico puntate utenti**: Esporta la lista utenti partecipanti con statistiche
|
||||
- **Includi metadata delle aste**: Aggiunge informazioni dettagliate (URL, impostazioni, timestamp)
|
||||
- **Rimuovi aste dopo l'export**: Elimina automaticamente le aste dalla griglia dopo export riuscito
|
||||
- **Sovrascrivi file esistenti**: Permette sovrascrittura senza conferma
|
||||
|
||||
### Impostazioni Predefinite Aste
|
||||
### Impostazioni Predefinite Aste ⚡ AGGIORNATO
|
||||
|
||||
Valori che verranno applicati automaticamente a tutte le nuove aste aggiunte:
|
||||
|
||||
- **Timer Click (secondi)**: Default 0
|
||||
- **Delay (millisecondi)**: Default 50
|
||||
- **Prezzo Minimo (€)**: Default 0 (nessun limite)
|
||||
- **Prezzo Massimo (€)**: Default 0 (nessun limite)
|
||||
- **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
|
||||
@@ -372,71 +300,40 @@ Cliccare il pulsante "Salva" nella barra inferiore per salvare tutte le modifich
|
||||
|
||||
---
|
||||
|
||||
## Export Dati
|
||||
|
||||
### Export Massivo
|
||||
|
||||
1. Cliccare "Esporta" nell'header della scheda Aste Attive
|
||||
2. Confermare nel dialog
|
||||
3. Tutte le aste monitorate verranno esportate secondo le opzioni configurate
|
||||
4. Un messaggio confermerà il numero di aste esportate e il path dei file
|
||||
|
||||
### Export Singola Asta
|
||||
|
||||
1. Selezionare un'asta dalla griglia
|
||||
2. Nel pannello Impostazioni, cliccare "Esporta"
|
||||
3. Solo l'asta selezionata verrà esportata
|
||||
|
||||
### Formati Export
|
||||
|
||||
**CSV**
|
||||
```csv
|
||||
AuctionId,Name,Url,Status,Timer,Price,Clicks,Resets
|
||||
123456,"Prodotto XYZ","https://...",Closed,0,5.50,15,3
|
||||
```
|
||||
|
||||
**JSON**
|
||||
```json
|
||||
{
|
||||
"auctions": [
|
||||
{
|
||||
"auctionId": "123456",
|
||||
"name": "Prodotto XYZ",
|
||||
"url": "https://...",
|
||||
"status": "Closed",
|
||||
"finalPrice": 5.50,
|
||||
"myClicks": 15,
|
||||
"resetCount": 3,
|
||||
"log": [...],
|
||||
"bidders": [...]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**XML**
|
||||
```xml
|
||||
<Auctions>
|
||||
<Auction>
|
||||
<AuctionId>123456</AuctionId>
|
||||
<Name>Prodotto XYZ</Name>
|
||||
...
|
||||
</Auction>
|
||||
</Auctions>
|
||||
```
|
||||
|
||||
### Preferenze Export
|
||||
|
||||
L'ultimo formato utilizzato viene salvato automaticamente e proposto come default per export successivi. Le preferenze sono memorizzate in `%AppData%\AutoBidder\exportprefs.json`.
|
||||
|
||||
---
|
||||
|
||||
## 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.)
|
||||
- **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)
|
||||
@@ -445,35 +342,38 @@ L'ultimo formato utilizzato viene salvato automaticamente e proposto come defaul
|
||||
**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
|
||||
├── 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
|
||||
### 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 < 10s
|
||||
- **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
|
||||
### Invio Puntate ⚡ AGGIORNATO
|
||||
|
||||
**Endpoint**
|
||||
```
|
||||
@@ -481,6 +381,32 @@ GET /bid.php?AID={auctionId}&sup=0&shock=0
|
||||
Cookie: __stattrb={token}; ...
|
||||
```
|
||||
|
||||
**Nuova Logica di Timing**
|
||||
```csharp
|
||||
// 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)
|
||||
@@ -493,82 +419,61 @@ Cookie: __stattrb={token}; ...
|
||||
|
||||
**Gestione Risposta**
|
||||
- Success: HTTP 200 con corpo contenente nuovo timer/prezzo
|
||||
- Failure: Errore di rete, sessione scaduta, bid già effettuato
|
||||
- Failure: Errore di rete, sessione scaduta, bid già effettuato
|
||||
- Retry: Nessun retry automatico, log dell'errore
|
||||
|
||||
### WebView2 Runtime
|
||||
|
||||
**Versione**
|
||||
- Basato su Microsoft Edge Chromium
|
||||
- Stesso engine usato dal browser Edge
|
||||
- Aggiornamenti automatici tramite Windows Update
|
||||
|
||||
**Isolamento**
|
||||
- User Data Folder separato per applicazione
|
||||
- Cookie storage dedicato
|
||||
- Cache locale per performance
|
||||
|
||||
**JavaScript**
|
||||
- Abilitato di default
|
||||
- Accesso a Web APIs moderne (Fetch, Async/Await, ecc.)
|
||||
- Nessun injection di script personalizzati
|
||||
|
||||
### Database SQLite
|
||||
|
||||
**Schema**
|
||||
```sql
|
||||
CREATE TABLE AuctionStatistics (
|
||||
Id INTEGER PRIMARY KEY,
|
||||
AuctionId TEXT NOT NULL,
|
||||
ProductName TEXT,
|
||||
FinalPrice REAL,
|
||||
TotalBids INTEGER,
|
||||
WinnerUsername TEXT,
|
||||
ClosedAt DATETIME,
|
||||
PollingLatencyMs INTEGER
|
||||
);
|
||||
|
||||
CREATE TABLE ProductInsights (
|
||||
Id INTEGER PRIMARY KEY,
|
||||
ProductName TEXT UNIQUE,
|
||||
AveragePrice REAL,
|
||||
AverageBids INTEGER,
|
||||
TotalAuctions INTEGER,
|
||||
RecommendedMaxPrice REAL,
|
||||
RecommendedMaxClicks INTEGER
|
||||
);
|
||||
```
|
||||
|
||||
**ORM**
|
||||
- Entity Framework Core 8.0
|
||||
- Code-First migrations
|
||||
- Async queries per performance
|
||||
|
||||
### Performance
|
||||
### Performance ⚡ MIGLIORATE
|
||||
|
||||
**Metriche Target**
|
||||
- CPU: < 5% idle, < 15% attivo con 10 aste
|
||||
- RAM: ~100MB base + 10MB per 100 aste
|
||||
- Latenza polling: 50-200ms media
|
||||
- Latenza polling: **10-200ms** (era 1000ms fisso) ✅ +90% più veloce
|
||||
- UI responsiveness: < 16ms per frame (60fps)
|
||||
|
||||
**Ottimizzazioni**
|
||||
- Lazy loading UserControls (caricamento on-demand per tab)
|
||||
- DataGrid virtualizzazione (rendering solo righe visibili)
|
||||
- Async/await per tutte le operazioni I/O
|
||||
- Throttling polling basato su stato asta
|
||||
- String pooling per log messages
|
||||
**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: L'applicazione non invia puntate, perché?**
|
||||
**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. Timer Click configurato (0-8 secondi)
|
||||
3. "Anticipo (ms)" configurato correttamente (0-5000)
|
||||
4. Limiti prezzo non superati
|
||||
5. Max Clicks non raggiunto
|
||||
6. Connessione internet attiva
|
||||
@@ -577,28 +482,35 @@ 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](#configurazione-sessione). In breve: Chrome ? F12 ? Application ? Cookies ? bidoo.com ? copia tutti i valori.
|
||||
A: Segui la guida dettagliata nella sezione [Configurazione Sessione](#configurazione-sessione). In breve: Chrome → F12 → Application → Cookies → bidoo.com → copia tutti i valori.
|
||||
|
||||
**Q: Il cookie smette di funzionare dopo un po', perché?**
|
||||
**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.
|
||||
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: Posso usare AutoBidder su più computer contemporaneamente?**
|
||||
**Q: Non vedo il nome utente e le puntate rimanenti, come mai?**
|
||||
|
||||
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.
|
||||
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 per aste con timer > 60s (configurabile in codice)
|
||||
- ~~Aumenta intervallo polling~~ Non più necessario con polling adattivo v4.0 ✅
|
||||
- Chiudi tab non utilizzate (Browser, Statistiche)
|
||||
- Disabilita log dettagliati per singole aste
|
||||
- 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
|
||||
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
|
||||
@@ -613,42 +525,43 @@ A: Attualmente no. Le aste devono essere aggiunte manualmente via URL/ID. Featur
|
||||
|
||||
**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.
|
||||
|
||||
**Q: Posso personalizzare i colori dell'interfaccia?**
|
||||
|
||||
A: Non tramite UI. I colori sono hard-coded nel XAML. Per personalizzazioni, modificare i file `*.xaml` nella cartella del progetto.
|
||||
|
||||
**Q: L'applicazione salva le password?**
|
||||
|
||||
A: No. AutoBidder non gestisce password. Richiede solo il cookie di sessione che viene salvato cifrato con DPAPI Windows.
|
||||
A: L'applicazione usa le impostazioni proxy di sistema di Windows. Configurare proxy in Impostazioni Windows → Rete → Proxy.
|
||||
|
||||
---
|
||||
|
||||
## Sicurezza e Responsabilità
|
||||
## 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.
|
||||
|
||||
### Sicurezza Dati
|
||||
|
||||
**Storage Cookie**
|
||||
- I cookie non vengono mai salvati in chiaro su disco
|
||||
- Utilizzo di DPAPI (Data Protection API) di Windows per cifratura
|
||||
- Chiave di cifratura legata all'account utente corrente Windows
|
||||
- Impossibile decriptare da altri account o computer
|
||||
|
||||
**Network Security**
|
||||
- Tutte le comunicazioni con Bidoo avvengono tramite HTTPS
|
||||
- Nessuna trasmissione dati sensibili a server terzi
|
||||
- L'applicazione non "telefona a casa" o invia telemetria
|
||||
|
||||
**Privacy**
|
||||
- Nessun log remoto
|
||||
- Nessuna raccolta analytics
|
||||
- Tutti i dati rimangono in locale sul computer dell'utente
|
||||
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
|
||||
|
||||
@@ -658,37 +571,10 @@ L'uso di strumenti di automazione potrebbe violare i Termini di Servizio della p
|
||||
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)
|
||||
|
||||
### Limitazioni
|
||||
|
||||
- AutoBidder è un tool per uso personale, non commerciale
|
||||
- Non distribuire o rivendere senza autorizzazione
|
||||
- Il repository è privato: non pubblicare il codice sorgente
|
||||
- Non usare per competizioni o tornei dove automazione è proibita
|
||||
7. **Testa su aste a basso valore** prima di usare configurazioni aggressive
|
||||
|
||||
---
|
||||
|
||||
## Supporto e Sviluppo
|
||||
**AutoBidder v4.0** - Developed with ❤️ using .NET 8.0 and WPF
|
||||
|
||||
**Repository Privato Gitea**
|
||||
```
|
||||
https://192.168.30.23/Alby96/Mimante
|
||||
```
|
||||
|
||||
**Issue Tracker**
|
||||
Per bug reports, feature requests o domande tecniche, aprire una Issue nel repository.
|
||||
|
||||
**Contatti**
|
||||
Per supporto diretto contattare il maintainer del progetto tramite Gitea.
|
||||
|
||||
**Contributori**
|
||||
Il progetto accetta Pull Requests secondo le convenzioni definite nel CONTRIBUTING.md (da creare).
|
||||
|
||||
**Licenza**
|
||||
Progetto privato - Tutti i diritti riservati. Non distribuire senza autorizzazione esplicita del proprietario.
|
||||
|
||||
---
|
||||
|
||||
**AutoBidder v4.0** - Developed with ?? using .NET 8.0 and WPF
|
||||
|
||||
© 2024 - Per uso personale. Non distribuire.
|
||||
© 2024 - Per uso personale. Non distribuire.
|
||||
Reference in New Issue
Block a user