Browse the web with confidence and avoid malicious destinations before you click.
Scanos is a powerful browser extension that protects you from malicious websites and threats by leveraging VirusTotal's comprehensive threat detection capabilities. Scan URLs in real-time and get instant security insights before visiting potentially dangerous sites.
- Real-time URL Scanning — Scan any URL instantly using VirusTotal API
- Threat Detection — Identify malicious websites, phishing attempts, and malware
- Popup Interface — Clean, intuitive popup UI for quick access and settings
- Content Overlay — Visual feedback directly on web pages
- Caching System — Efficient caching to minimize API calls
- API Key Management — Secure settings panel to manage your VirusTotal API key
- Lightweight & Fast — Minimal performance impact on your browsing experience
- TypeScript — Fully typed for reliability and maintainability
- Framework: Plasmo — Modern browser extension framework
- UI Library: React 18
- Styling: Tailwind CSS
- Language: TypeScript
- Icons: Lucide React & FontAwesome
- API Client: Axios
- Component Library: Radix UI
- Node.js (v16 or higher)
- npm or yarn
- A VirusTotal API key (get one free at virustotal.com)
-
Clone the repository
git clone https://github.com/yourusername/scanos.git cd scanos -
Install dependencies
npm install
-
Start development server
npm run dev
This will build and watch your extension as you make changes.
-
Load extension in Chrome
- Open
chrome://extensions/ - Enable "Developer mode" (top-right corner)
- Click "Load unpacked"
- Select the
build/chrome-mv3-devdirectory (created by Plasmo)
- Open
-
Add your VirusTotal API key
- Click the Scanos extension icon
- Go to Settings
- Enter your VirusTotal API key
- Save
- Copy a URL you want to check
- Click the Scanos extension icon
- Paste the URL in the input field
- Click "Scan" to check the URL
- View the scan results instantly
- API Key: Add/update your VirusTotal API key
- Additional Options: Configure extension behavior (coming soon)
npm run devnpm run buildOutput is in build/chrome-mv3-prod/ directory
npm run packageCreates a distributable package file.
scanos/
├── src/
│ ├── background/ # Service Worker scripts
│ │ ├── handlers.ts # Request handlers
│ │ ├── cache.ts # Caching logic
│ │ ├── storage.ts # Storage management
│ │ └── virustotal.ts # VirusTotal API integration
│ ├── content/ # Content scripts
│ │ ├── scanner.ts # URL scanning logic
│ │ ├── overlay.ts # Page overlay system
│ │ └── targets.ts # Target element selection
│ ├── components/ # React components
│ │ ├── popup/ # Popup pages
│ │ │ ├── Home.tsx
│ │ │ └── Settings.tsx
│ │ └── ui/ # UI components
│ ├── hooks/ # Custom React hooks
│ └── lib/
│ ├── types.ts # TypeScript types
│ ├── constants.ts # App constants
│ └── utils.ts # Utility functions
├── background.ts # Service Worker entry
├── content.ts # Content script entry
├── popup.tsx # Popup entry
├── package.json
└── tsconfig.json
This extension uses the VirusTotal API for URL scanning. Official VirusTotal URL: https://www.virustotal.com/
Getting Started:
- Visit virustotal.com
- Create an account (free)
- Navigate to your profile settings
- Generate an API key
- Add it to Scanos settings
Free Plan Limits:
- 500 requests per day
- Rate limit: ~4 requests per minute
- Local storage only — Your API key is stored locally in your browser
- No tracking — We don't collect any data about your browsing
- Open source — Transparent code for security auditing
- Permissions explained:
storage— Stores your API key locallyclipboardRead— Reads URLs from clipboardhttps://*/*— Scans URLs from all HTTPS sites
- Ensure Developer mode is enabled in
chrome://extensions/ - Check the browser console for errors (F12)
- Verify the
build/chrome-mv3-devfolder exists
- Verify your VirusTotal API key is correct
- Check your API rate limits and usage
- Ensure you have internet connection
- Check if VirusTotal is accessible from your location
- Verify API key permissions
- Clear extension storage and try again
This project is licensed under the MIT License. See LICENSE file for details.
G. Kishon
- Website: kishon.is-a.dev
- Email: kishon45229@outlook.com
Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.
Made with ❤️ by G. Kishon