Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,15 +108,15 @@ jobs:
name: extension-zip
- name: Upload and publish
env:
EXTENSION_ID: ${{ secrets.CWS_EXTENSION_ID }}
EXTENSION_ID: ${{ secrets.SPECIO_CWS_EXTENSION_ID }}
CLIENT_ID: ${{ secrets.CWS_CLIENT_ID }}
CLIENT_SECRET: ${{ secrets.CWS_CLIENT_SECRET }}
REFRESH_TOKEN: ${{ secrets.CWS_REFRESH_TOKEN }}
VERSION: ${{ needs.verify.outputs.version }}
run: |
set -euo pipefail
if [ -z "${EXTENSION_ID}" ] || [ -z "${CLIENT_ID}" ] || [ -z "${CLIENT_SECRET}" ] || [ -z "${REFRESH_TOKEN}" ]; then
echo "::notice::Chrome Web Store secrets not set — skipping store publish (the GitHub release still shipped). Set CWS_EXTENSION_ID, CWS_CLIENT_ID, CWS_CLIENT_SECRET and CWS_REFRESH_TOKEN to enable it."
echo "::notice::Chrome Web Store secrets not set — skipping store publish (the GitHub release still shipped). Set SPECIO_CWS_EXTENSION_ID, CWS_CLIENT_ID, CWS_CLIENT_SECRET and CWS_REFRESH_TOKEN to enable it."
exit 0
fi

Expand Down
32 changes: 9 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
# specio

**See what any website is built with — locally, privately, for free.**

specio is a Chrome/Chromium extension that detects the technologies behind a
page: CMS, JavaScript frameworks, ecommerce platforms, analytics, tag managers,
CDNs, web servers, languages and more. It is a free, multilingual alternative to
Wappalyzer — the same capability, without the paywall, the account, or the
phone-home.
Chrome/Chromium extension that detects the technologies behind a web page: CMS,
JavaScript frameworks, ecommerce platforms, analytics, tag managers, CDNs, web
servers, languages and more. Detection runs entirely on-device — no network
requests, no account, no telemetry.

[![CI](https://github.com/Glyndor/specio/actions/workflows/ci.yml/badge.svg)](https://github.com/Glyndor/specio/actions/workflows/ci.yml)

<p align="center">
<img src="docs/assets/popup.png" alt="The specio popup listing a detected stack grouped by category with confidence badges" width="320">
</p>

## Features
## Features

- 🔎 **Multi-signal detection.** Each technology is recognised by several
independent signals — markup, script URLs, meta tags, cookies, headers — never
Expand All @@ -33,7 +30,7 @@ phone-home.
- 🌍 **Multilingual.** The UI and category names are translated (English and
Spanish today); technology names stay verbatim.

## 🚀 Try it (load unpacked)
## Try it (load unpacked)

specio targets the Chrome Web Store; until it is published you can load it from
source:
Expand All @@ -47,32 +44,21 @@ Then in Chrome: open `chrome://extensions`, enable **Developer mode**, click
**Load unpacked**, and choose the `dist/` folder. Visit any site and the toolbar
badge shows the number of technologies detected; click it for the breakdown.

## 🆚 vs. Wappalyzer

| | specio | Wappalyzer |
|---|:---:|:---:|
| Price | **Free, forever** | Freemium / paid API |
| Account required | **No** | For most features |
| Sends the visited URL off-device | **Never** | Yes (cloud enrichment) |
| Telemetry | **None** | Yes |
| Per-signal confidence | **Yes** | No |
| Open source | **Apache-2.0** | Source-available, restrictive |

## 🔐 Privacy
## Privacy

The basic tier runs entirely on your machine: it reads the page and the response
the browser already received, matches locally, and sends nothing. An optional,
**off-by-default** advanced tier can look up DNS-derived facts (email provider,
SaaS in use, DNS host) — and only ever after you grant a permission. See
[`PRIVACY.md`](PRIVACY.md).

## 📦 Tech
## Tech

TypeScript, Manifest V3, bundled with [Bun](https://bun.sh); the fingerprint
ruleset is authored clean-room and shipped in the extension. Contributions to
the ruleset are welcome — each rule ships with a fixture proving it matches
without false-positiving.

## 📄 License
## License

[Apache-2.0](LICENSE).