Files
btgo-playwright/README.md
Marius Mutu da31a806af docs: rescrie README compact, axat pe deploy si depanare
Reduce de la 475 la 175 linii. Elimina diagrama ASCII de arhitectura
si sectiunile duplicate. Adauga sectiune dedicata pentru eroarea de
viewport-mic / Windows Service session 0, cu trimitere la fix-ul
--window-size din btgo_scraper.py. Reorganizeaza troubleshooting
pe simptome utilizator, nu pe linii de cod.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 12:52:42 +03:00

196 lines
6.6 KiB
Markdown

# BTGO Scraper
Automatizare Playwright care se logheaza pe **George (go.bancatransilvania.ro)**, citeste soldurile tuturor conturilor si descarca CSV-urile de tranzactii. Trimite rezultatele pe **Email** si **Telegram**. Poate fi declansata din Telegram printr-un bot (`/scrape`).
## Cerinte
- **Windows 10/11** (Linux/Docker nu functioneaza — Akamai WAF blocheaza)
- **Python 3.11+** in PATH
- Cont BTGO activ cu 2FA pe telefon
**IMPORTANT — `HEADLESS=false` obligatoriu.** WAF-ul BT blocheaza browser-ele headless. Scraper-ul ruleaza intotdeauna cu fereastra Chromium vizibila.
## Instalare rapida
```powershell
git clone <repo-url> E:\proiecte\btgo-playwright
cd E:\proiecte\btgo-playwright
deployment\windows\scripts\setup_dev.ps1
```
Script-ul creeaza `.venv`, instaleaza dependentele si Chromium-ul Playwright.
Apoi editeaza `.env` (copiat automat din `.env.example` la primul run):
```ini
BTGO_USERNAME=user_btgo
BTGO_PASSWORD=parola_btgo
HEADLESS=false # OBLIGATORIU false
TIMEOUT_2FA_SECONDS=300
# Notificari
ENABLE_NOTIFICATIONS=true
EMAIL_ENABLED=true
SMTP_USERNAME=tu@gmail.com
SMTP_PASSWORD=app-password # Gmail: https://myaccount.google.com/apppasswords
EMAIL_TO=tu@gmail.com
# Telegram (notificari + trigger bot)
TELEGRAM_ENABLED=true
TELEGRAM_BOT_TOKEN=123:ABC...
TELEGRAM_CHAT_ID=-100123... # Negativ pentru grupuri
TELEGRAM_ALLOWED_USER_IDS=12345 # User-ii care pot da /scrape
```
## Rulare zilnica
**Manual (din terminal):**
```powershell
deployment\windows\scripts\run_scraper.ps1
```
Browser-ul se deschide, scraper-ul completeaza credentialele, apoi astepti **2FA pe telefon**. Dupa aprobare ruleaza automat: citeste solduri → descarca tranzactii → trimite Email + Telegram → salveaza in `data/`.
**Meniu interactiv (toate optiunile):**
```powershell
deployment\windows\scripts\menu.ps1
```
## Deploy ca serviciu Windows (recomandat pentru VM)
Bot-ul Telegram ruleaza in background si raspunde la `/scrape`. Necesita **sesiune RDP activa** ca browser-ul sa aiba un desktop pe care sa se deschida.
```powershell
# Ca Administrator
deployment\windows\scripts\deploy.ps1
```
Asta instaleaza serviciul `BTGOTelegramBot` prin NSSM (auto-start cu Windows, auto-restart la crash).
**Comenzi utile:**
```powershell
deployment\windows\scripts\status.ps1 # status + ultimele logs
deployment\windows\scripts\restart_service.ps1 # restart dupa modificari
deployment\windows\scripts\view_logs.ps1 # viewer interactiv logs
deployment\windows\scripts\uninstall_service.ps1 # dezinstalare
```
**Update dupa git pull:**
```powershell
deployment\windows\scripts\update.ps1 # git pull + restart serviciu (auto-elevare)
```
**Comenzi disponibile in Telegram:**
| Comanda | Ce face |
|---------------|------------------------------------------------------------|
| `/scrape` | Ruleaza scraper-ul, trimite solduri + fisiere individuale |
| `/scrape_zip` | Ruleaza scraper-ul, trimite arhiva ZIP |
| `/zip` | Trimite ultimele fisiere din `data/` ca ZIP (fara scrape) |
| `/status` | Uptime bot |
| `/help` | Lista comenzi |
## Output
```
data/
solduri_YYYY-MM-DD_HH-MM-SS.csv # rezumat conturi
solduri_YYYY-MM-DD_HH-MM-SS.json # acelasi + metadata
tranzactii_<NumeCont>_YYYY-MM-DD.csv
dashboard_*.png # screenshot post-login
debug_login_popup_*.png # debug login (cand esueaza)
logs/
scraper_YYYY-MM-DD.log # log zilnic scraper
telegram_bot_*.log # log serviciu Telegram (NSSM)
```
## Depanare
### "Nu am gasit elementele de login" / timeout pe `input#user`
Apare cand fereastra Chromium e prea ingusta (sub ~1100px). La acest viewport BT afiseaza un splash de redirect si ascunde formul. Cauza tipica: scraper-ul ruleaza dintr-un Windows Service in **session 0**, fara display real, iar fereastra fizica are dimensiune mica chiar daca codul cere `viewport=1920x1080`.
**Fix deja aplicat in cod:** browser-ul lansat cu `--window-size=1920,1080` (vezi `btgo_scraper.py:388-398`).
**Daca tot apare:** verifica `data\debug_login_popup_*.png` — daca vezi splash-ul "Vei fi redirectionat in screenul de autentificare", inseamna ca window-size nu s-a aplicat. Solutie: porneste scraper-ul printr-o sesiune RDP activa (nu doar serviciu in session 0).
### "Access Denied" pe pagina de login
Akamai WAF a detectat headless mode. Verifica:
```ini
HEADLESS=false # obligatoriu
```
Si asigura-te ca **NU** rulezi in Docker / WSL fara display.
### Timeout la 2FA
```ini
TIMEOUT_2FA_SECONDS=300 # mareste daca aprobi greu pe telefon
```
Verifica si ca **notificarile push** ale aplicatiei George sunt active pe telefon.
### Bot nu raspunde la `/scrape`
1. Verifica serviciul: `Get-Service BTGOTelegramBot`
2. `deployment\windows\scripts\view_logs.ps1` → optiunea 4 (tail stderr)
3. Verifica ca user-ul tau e in `TELEGRAM_ALLOWED_USER_IDS`
4. Pentru grupuri: `TELEGRAM_CHAT_ID` trebuie **negativ** (ex: `-1001234567890`)
### Notificari Email nu pleaca
- Pentru Gmail: **App Password**, nu parola normala
- Port `587` (TLS) sau `465` (SSL)
- Test rapid: `python test_telegram.py` (verifica si SMTP daca esti la el)
### Selectorii s-au schimbat (UI BT actualizat)
Cand BT modifica HTML-ul, selectorii in `btgo_scraper.py` trebuie refacuti:
```powershell
.venv\Scripts\Activate.ps1
playwright codegen https://go.bancatransilvania.ro --target python
```
Faci manual fluxul (login → 2FA → conturi → download CSV), copiezi selectorii noi generati si actualizezi sectiunile relevante:
- Cookies: `_dismiss_gdpr_cookies` (~ liniile 150-200)
- Login: `login()` (~ liniile 449-530)
- Solduri: `read_accounts()` (~ liniile 242-310)
- Tranzactii: `download_transactions()` si `_download_*_account()` (~ liniile 529-732)
CLAUDE.md contine lista actualizata de selectori critici.
## Testare doar solduri (fara descarcare tranzactii)
```powershell
$env:BALANCES_ONLY = "true"
python btgo_scraper.py
```
Util cand vrei doar verificare rapida ca login + 2FA + citire conturi mai functioneaza.
## Exit codes
- `0` Success
- `1` Eroare generala
- `4` Config invalid (`.env`)
- `99` Eroare neasteptata
## Securitate
- `.env` e in `.gitignore`**nu** comite credentialele
- `data/` si `logs/` contin date bancare — nu partaja
- Restrictioneaza bot-ul: seteaza `TELEGRAM_ALLOWED_USER_IDS` (lista goala = oricine poate trigeri scraper-ul cu credentialele tale)
## Disclaimer
Tool autorizat pentru automatizare personala. Utilizatorul e responsabil pentru conformarea cu T&C-ul Bancii Transilvania.