History Collector

Python/FastAPI strežnik za lastno Chrome razširitev: sprejema obiske, jih trajno shrani v SQLite in jih lahko opcijsko pošlje v zaseben Discord kanal prek webhooka.

URL-ji so lahko občutljivi. Uporabi samo na napravah, ki jih upravljaš, z jasnim obvestilom uporabnikom. Strežnika ne izpostavljaj neposredno internetu brez HTTPS in dodatne zaščite.

Zagon

cp .env.example .env
# V .env nastavi dolg, naključen API_TOKEN.
docker compose up -d --build
docker compose logs -f
curl http://127.0.0.1:8080/healthz

Privzeto posluša samo na 127.0.0.1:8080. Za dostop iz drugih naprav uporabi VPN (Tailscale/WireGuard) ali HTTPS reverse proxy. Ne odpiraj porta neposredno v internet.

API

POST /v1/visits, z glavo Authorization: Bearer TVOJ_API_TOKEN:

{
  "device_id": "otrok-prenosnik",
  "visits": [{
    "url": "https://example.com/clanek",
    "title": "Primer",
    "visit_time": "2026-10-06T18:50:00Z",
    "transition": "observed"
  }]
}

Odgovor 202 Accepted pomeni, da je paket zapisan v ./data/history.sqlite3. Podvojeni obiski se ne podvojijo.

Spletni pregledovalnik

Odpri http://127.0.0.1:8080/ in se prijavi z VIEWER_USERNAME ter VIEWER_PASSWORD iz .env. Pregledovalnik omogoča:

  • filter od/do (čas je UTC),
  • filter po napravi,
  • iskanje po domeni, naslovu ali URL-ju,
  • seznam do 500 zadnjih obiskov,
  • pregled unikatnih domen s številom obiskov in zadnjim obiskom.

Discord (neobvezno)

V .env nastavi DISCORD_WEBHOOK_URL. Najprej se zapis shrani v SQLite, nato se poskusi poslati Discordu. Neuspeh Discorda ne izbriše podatkov.

Nastavitev razširitve

V extension/config.js nastavi collectorUrl, apiToken in deviceId. Token naj ostane v tej lokalni datoteki in naj ne konča v repozitoriju. manifest.json vsebuje široko dovoljenje za HTTP/HTTPS gostitelje zato, da lahko izbereš lasten API naslov; če želiš strožje dovoljenje, zamenjaj host_permissions samo s svojim HTTPS naslovom.

Windows native arhiv (neobvezno)

Repozitorij vključuje tudi Chrome razširitev in Windows Native Messaging host za lokalni, append-only arhiv obiskov v SQLite.

  1. V Chromu odpri chrome://extensions, vklopi Developer mode, klikni Load unpacked in izberi mapo extension.

  2. Kopiraj 32-znakovni ID razširitve.

  3. V PowerShellu iz korena repozitorija zaženi:

    powershell -ExecutionPolicy Bypass -File .\install-native-host.ps1 -ExtensionId TUKAJ_PRILEPI_ID
    

Lokalni arhiv se privzeto shrani v %USERPROFILE%\ChromeHistoryArchive\history.sqlite3. Za pošiljanje obiskov tudi na API uredi lokalni extension/config.js; vanj ne zapisuj tokena v commitu.

S
Description
No description provided
Readme
65 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 78.3%
JavaScript 17.7%
PowerShell 3.1%
Dockerfile 0.8%