|
1 | 1 | # Privacy Policy |
2 | 2 |
|
3 | | -**Effective Date:** 03/16/2026 |
| 3 | +**Effective Date:** 03/22/2026 |
4 | 4 |
|
5 | | -Osprey: Browser Protection is committed to protecting your privacy. This Privacy Policy explains what data is processed |
6 | | -when you use the extension, why, and how. URL checking is the core security function of the extension. When you |
7 | | -navigate to a website, Osprey may send the URL to threat intelligence or DNS filtering services to determine whether |
8 | | -the destination is malicious or inappropriate. This processing is limited to what is necessary for that purpose. |
| 5 | +Osprey: Browser Protection and the team behind [OspreyProject](https://github.com/OspreyProject) is committed to |
| 6 | +protecting your privacy. This Privacy Policy explains what data is processed when you use the extension, why, and how. |
| 7 | + |
| 8 | +Osprey consists of two components: |
| 9 | + |
| 10 | +- The **browser extension**, which runs locally on your device. |
| 11 | +- The **proxy server** (OspreyProxy), which runs on a VPS hosted in New York, NY |
| 12 | + at [api.osprey.ac](https://api.osprey.ac). |
| 13 | + |
| 14 | +Understanding which component does what is important for understanding how your data is handled. |
9 | 15 |
|
10 | 16 | ## What Data Is Processed and Why |
11 | 17 |
|
12 | | -For DNS-based providers (AdGuard DNS, CERT-EE, CleanBrowsing, Cloudflare, Control D, Quad9, and Switch.ch), only the |
13 | | -hostname is sent as part of a DNS-over-HTTPS query. For API-based providers (alphaMountain and PrecisionSec), the full |
14 | | -URL including path is sent. These API requests are routed through Osprey's own proxy server hosted in New York, NY, |
15 | | -rather than directly to the provider. |
| 18 | +URL checking is the core security function of the browser extension. When you navigate to a website, the browser |
| 19 | +extension sends the URL to the proxy server, which checks it against threat intelligence providers, DNS filtering |
| 20 | +services, and local threat intelligence lists to determine whether the URL is unsafe. |
16 | 21 |
|
17 | | -The proxy does not log IP addresses in any form and does not log request bodies under normal operation. It may log the |
18 | | -submitted URL if an upstream provider returns a 400 response, and the hostname may appear in error output on internal |
19 | | -failures or blocked connection attempts. These messages are never written to disk; they exist only in the VPS's runtime |
20 | | -memory via journald and are lost when the server restarts. The proxy also logs aggregate request counts per provider |
21 | | -(requests per minute and a running total), which contain no IP addresses or URLs. The proxy source code is open-source |
22 | | -and [available for review on GitHub](https://github.com/OspreyProject/OspreyProxy). |
| 22 | +The browser extension sends the full URL to the proxy server for all checks. How the proxy server handles it depends |
| 23 | +on the provider type: |
23 | 24 |
|
24 | | -Osprey does not collect browsing history, user identifiers, or analytics of any kind. |
| 25 | +- **DNS-based providers** (AdGuard DNS, CERT-EE, CleanBrowsing, Cloudflare, Control D, Quad9, and Switch.ch): the |
| 26 | + proxy server extracts only the hostname and submits it as a DNS-over-HTTPS query. |
| 27 | +- **API-based providers** (alphaMountain and PrecisionSec): the proxy server forwards the full URL including path. |
| 28 | +- **Local threat intelligence lists**: the proxy server checks the hostname against its own in-memory domain sets |
| 29 | + without making any external requests. |
25 | 30 |
|
26 | | -## Third-Party Recipients |
| 31 | +In all cases, your IP address is never forwarded to any provider directly; providers see only the proxy server's IP |
| 32 | +address. |
27 | 33 |
|
28 | | -When a URL is checked, the relevant third-party providers receive a network request as part of the standard HTTP |
29 | | -connection. Providers you have disabled in the extension's settings are not contacted. |
| 34 | +The proxy server does not log IP addresses in any form and does not log request bodies under normal operation. It may |
| 35 | +log the submitted URL if an upstream provider returns a 400 response, and the hostname may appear in error output on |
| 36 | +internal failures or blocked connection attempts. These messages are never written to disk; they exist only in the |
| 37 | +VPS's runtime memory via journald and are lost when the server restarts. The proxy server also logs aggregate request |
| 38 | +counts per provider (requests per minute and a running total), which contain no IP addresses or URLs. The proxy |
| 39 | +server's source code is open-source and [available for review on GitHub](https://github.com/OspreyProject/OspreyProxy). |
30 | 40 |
|
31 | | -For alphaMountain ([privacy policy](https://alphamountain.ai/privacy-policy/)) and |
32 | | -PrecisionSec ([privacy policy](https://precisionsec.com/privacy-policy/)), requests are routed through Osprey's proxy |
33 | | -server, so your IP address is not forwarded to those providers directly. |
| 41 | +The proxy server does not collect browsing history, user identifiers, or analytics of any kind. The browser extension |
| 42 | +stores visited URLs locally in your browser as part of its caching system and does not transmit this cached data |
| 43 | +anywhere; this is described further in the Data Stored Locally section below. |
34 | 44 |
|
35 | | -For DNS-based providers, your IP address is visible to the provider as part of the DNS-over-HTTPS query. These providers |
36 | | -are AdGuard DNS ([privacy policy](https://adguard-dns.io/en/privacy.html)), |
37 | | -CERT-EE ([privacy policy](https://ria.ee/en/authority-news-and-contact/processing-personal-data)), |
38 | | -CleanBrowsing ([privacy policy](https://cleanbrowsing.org/privacy)), |
39 | | -Cloudflare ([privacy policy](https://cloudflare.com/privacypolicy)), |
40 | | -Control D ([privacy policy](https://controld.com/privacy)), |
41 | | -Quad9 ([privacy policy](https://quad9.net/privacy/policy)), |
42 | | -and Switch.ch ([privacy policy](https://switch.ch/en/data-protection)). |
| 45 | +## Third-Party Recipients |
43 | 46 |
|
44 | | -Osprey also fetches local filtering lists from GitHub every 5 minutes to stay current. These requests are made to |
45 | | -GitHub's CDN (operated by Microsoft), which receives your IP address as part of the connection. The lists are |
46 | | -Phishing.Database and PhishDestroy. GitHub's privacy policy applies to these requests and is available |
47 | | -at [GitHub's General Privacy Statement](https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement). |
| 47 | +When a URL is checked, the browser extension sends it to the proxy server, which then contacts the relevant |
| 48 | +third-party providers on your behalf. Providers you have disabled in the browser extension's settings are not |
| 49 | +contacted. Because all provider requests originate from the proxy server rather than your device, third-party |
| 50 | +providers never receive your IP address. |
| 51 | + |
| 52 | +- **API-based providers** receive the full URL: |
| 53 | + - alphaMountain ([privacy policy](https://alphamountain.ai/privacy-policy/)) |
| 54 | + - PrecisionSec ([privacy policy](https://precisionsec.com/privacy-policy/)) |
| 55 | +- **DNS-based providers** receive only the hostname as part of a DNS-over-HTTPS query: |
| 56 | + - AdGuard DNS ([privacy policy](https://adguard-dns.io/en/privacy.html)) |
| 57 | + - CERT-EE ([privacy policy](https://ria.ee/en/authority-news-and-contact/processing-personal-data)) |
| 58 | + - CleanBrowsing ([privacy policy](https://cleanbrowsing.org/privacy)) |
| 59 | + - Cloudflare ([privacy policy](https://cloudflare.com/privacypolicy)) |
| 60 | + - Control D ([privacy policy](https://controld.com/privacy)) |
| 61 | + - Quad9 ([privacy policy](https://quad9.net/privacy/policy)) |
| 62 | + - Switch.ch ([privacy policy](https://switch.ch/en/data-protection)) |
| 63 | +- **Local threat intelligence lists** are checked entirely within the proxy server and involve no external requests. |
48 | 64 |
|
49 | 65 | ## Browser Permissions |
50 | 66 |
|
51 | | -Osprey requires several browser permissions to function. The tabs permission is used to detect navigation events and |
52 | | -apply protection. The storage permission is used to cache results locally and persist your settings. The webNavigation |
53 | | -permission is used to intercept page navigations before they complete. The notifications permission is used to alert you |
54 | | -when a malicious website is blocked. The contextMenus permission is used to provide the right-click menu options. The |
55 | | -host permissions entry covering all URLs is used to inspect navigated URLs across all websites. |
| 67 | +The browser extension requires several permissions to function: |
| 68 | + |
| 69 | +- `tabs`: used to detect navigation events and apply protection. |
| 70 | +- `storage`: used to cache results locally on your device and persist your settings. |
| 71 | +- `webNavigation`: used to intercept page navigations before they complete. |
| 72 | +- `notifications`: used to alert you when a malicious website is blocked. |
| 73 | +- `contextMenus`: used to provide the right-click menu options. |
| 74 | +- `host` permissions covering all URLs: used to inspect navigated URLs across all websites. |
56 | 75 |
|
57 | 76 | These permissions are used strictly for the security features described above and are not used to collect or transmit |
58 | 77 | personal information. |
59 | 78 |
|
60 | 79 | ## Data Stored Locally |
61 | 80 |
|
62 | | -Osprey stores several categories of data in your browser's local extension storage. It stores a URL cache containing |
63 | | -domains that have been checked, along with their result and an expiration time; this data never leaves your device |
64 | | -except as part of normal URL checking. It also stores your protection preferences, such as which providers are enabled, |
65 | | -and the downloaded local filtering lists from PhishDestroy and Phishing.Database. All locally stored data is cleared |
66 | | -when you uninstall the extension. |
| 81 | +The browser extension stores several categories of data in your browser's local extension storage and session storage. |
| 82 | +None of this data is transmitted to the proxy server or any third party. |
| 83 | + |
| 84 | +- An **allowed cache** (local storage) containing URLs that have been checked and found safe, keyed per provider, each |
| 85 | + with an expiration time. |
| 86 | +- A **blocked cache** (local storage) containing URLs that have been flagged, keyed per provider, each with an |
| 87 | + expiration time and the result type (such as malicious or phishing). |
| 88 | +- A **processing cache** (session storage) tracking URLs that are currently being checked, to prevent duplicate |
| 89 | + requests. This cache is cleared when the browser session ends. |
| 90 | +- Your **protection preferences** (local storage), such as which providers are enabled and your cache expiration |
| 91 | + settings. |
| 92 | + |
| 93 | +All data in local storage is cleared when you uninstall the browser extension or manually via the context menu. |
67 | 94 |
|
68 | 95 | ## Data Retention |
69 | 96 |
|
70 | | -Local extension data is retained until you uninstall the extension or clear it manually via the context menu. Any |
71 | | -error-case proxy server log messages exist only in the VPS's runtime memory via journald and are never written to disk; |
72 | | -they are lost when the server restarts and are not retained in any form. Aggregate request counts are retained |
73 | | -indefinitely but contain no personal data. |
| 97 | +Local extension data is retained until you uninstall the browser extension or clear it manually via the context menu. |
| 98 | +Any error-case log messages on the proxy server exist only in the VPS's runtime memory via journald and are never |
| 99 | +written to disk; they are lost when the server restarts and are not retained in any form. Aggregate request counts on |
| 100 | +the proxy server are retained indefinitely but contain no personal data. |
74 | 101 |
|
75 | 102 | ## Changes to This Privacy Policy |
76 | 103 |
|
77 | | -We may update this Privacy Policy from time to time. The effective date at the top of this page reflects the date of the |
78 | | -most recent revision. We encourage you to review this page periodically. |
| 104 | +We may update this Privacy Policy from time to time. The effective date at the top of this page reflects the date of |
| 105 | +the most recent revision. We encourage you to review this page periodically. |
79 | 106 |
|
80 | 107 | ## Contact |
81 | 108 |
|
|
0 commit comments