Skip to content

Repository files navigation

English · 日本語 · 繁體中文 · Deutsch · Français

Visited-CLI

Securely collect browsing history across browsers.

Getting started

Here is the getting started guide.

Firstly, clone the repository and change to the directory.

$ git clone https://github.com/didvc/visited && cd visited

Then install the Node packages.

$ npm install

Next, generate a client program for the browser. Run the following.

$ node visited.js --generate
✔ Port number? [default: 5555] …
File generated: ./visited.user.js

Now that you have the visited.user.js file generated, copy and paste the file content as a new userscript into your favorite userscript manager, e.g. Tampermonkey.

Also note that you can paste the same into your other browsers and Chrome profiles, and virtually integrate their browsing history in one place.

Next, start the server. Use -s or --server. Also note that --quiet is for running in the background, and --port is for specifying the port number.

$ node visited.js --server

Now you're ready. Try going to any website, let's say youtube.com, and reload the page (or just visit it from the omnibox).

You can see the server detect your visit and automatically save the URL, host and date to the database visited.db.

$ node visited.js --server
server started...
message: {"url":"https://www.youtube.com/","host":"www.youtube.com"}

Now you can use an SQLite client such as DB Browser for SQLite, or the built-in search options, just like the following.

$ node visited.js --search --host youtube.com
[
    {
        "id": 1,
        "url": "https://www.youtube.com/",
        "host": "www.youtube.com",
        "date": "6/23/2021, 3:52:02 PM",
        "timestamp": 1624431122
    }
]

The search term is regex compatible. This shows the same result as above.

$ node visited.js --search --url 'you.*be\.com'

Requirements

git
build-essential
node
sqlite3-pcre (for searching)

Help

$ node visited.js
Usage: visited [options]

Options:
  -s, --server               set command type: server
  -p, --port <port>          (server) specify port number (default: 5555)
  -t, --timezone <timezone>  (server) specify timezone (default: "Asia/Tokyo")
  -q, --quiet                (server) disable log
  -S, --search               set command type: search
  -r, --regex                (search) enable regex extension for search (default: true)
  -u, --url <url>            (search) search by url (default: ".")
  --host <host>              (search) search by host (default: ".")
  --order <order>            (search) set order for search [desc, asc] (default: "desc")
  --limit <number>           (search) set limit for search (default: -1)
  -F, --format <format>      (search) output format [json, url] (default: "json")
  --pcre-path <file>         set sqlite3 pcre file path for search (default: "/usr/lib/sqlite3/pcre.so")
  -d, --database <file>      specify database file for index/search (default: "./visited.db")
  --generate                 generates client side userScript file
  --delete-database          delete database
  -y, --yes                  no confirmation prompt
  -h, --help                 display help for command

Related projects

  • histbak: Scheduled, compressed, optionally encrypted backups of your browsing history, plus a viewer that makes it readable. Local only, no network access. Chrome + Firefox, MV3.
  • better-tab-session-manager: Tab Session Manager fork with scheduled, incremental session export to disk (hourly/daily/weekly). Upstream only backs up once at browser startup.
  • better-super-simple-highlighter: Super Simple Highlighter, the text highlighter Chrome extension, super enhanced.
  • astro-html-editor: Self-hosted HTML editor with live preview. Astro SSR + plain JavaScript, server-side file persistence.
  • chatnote: Self-hosted note-to-self chatrooms. Privacy-first by design, infinite rooms, Markdown, ephemeral/incognito room types, image uploads, tags, JSON import/export. Astro SSR + SQLite.