# 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 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__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.