
In February 2026, the D3Lab Anti‑Fraud Team analyzed a phishing kit that embedded a JavaScript file named ss1.js. The script, branded SafeBrowsingBlocker, attempts to prevent Google Safe Browsing checks by blocking network requests to Google Safe Browsing domains and disabling browser prefetching/prerendering mechanisms.
Our technical analysis shows that this approach is largely ineffective against browser‑level Safe Browsing interstitials, which are decided before any page JavaScript executes. The script’s primary effect is limited to blocking page‑initiated requests (e.g., fetch, XHR, sendBeacon) and adding a restrictive CSP that can break legitimate resources.
This post details how the script works, why it cannot bypass Safe Browsing, and provides IoCs for detection.
The phishing page loads the script in the <head> and initializes it immediately:
<head>
<script src="381890/ss1.js"></script>
<script>
new SafeBrowsingBlocker({ verbose: false });
</script>
</head>
fetch and XHRThe script overrides fetch and XMLHttpRequest.prototype.open to block a hardcoded list of Google Safe Browsing endpoints. A simplified excerpt:
const blockedDomains = [
'safebrowsing.googleapis.com',
'safebrowsing-cache.google.com',
'sb-ssl.google.com',
'sb.google.com',
'safebrowsing.google.com',
'update.googleapis.com/service/update2/crx',
];
const originalFetch = window.fetch;
window.fetch = function (...args) {
const url = typeof args[0] === 'string' ? args[0] : (args[0] && args[0].url) || '';
if (blockedDomains.some(d => url.includes(d))) {
return Promise.reject(new Error('Request blocked by SafeBrowsingBlocker'));
}
return originalFetch.apply(this, args);
};
const originalOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function (...args) {
const url = args[1];
if (blockedDomains.some(d => url.includes(d))) {
throw new Error('Request blocked by SafeBrowsingBlocker');
}
return originalOpen.apply(this, args);
};
What this actually does: it blocks page‑level network requests to those domains. It does not affect the browser’s Safe Browsing decision process, which happens before the phishing page runs any JavaScript.
The script removes and blocks <link rel="prefetch|prerender|dns-prefetch|preconnect"> tags to reduce background network activity.
const prefetchLinks = document.querySelectorAll( 'link[rel="prefetch"], link[rel="prerender"], link[rel="dns-prefetch"], link[rel="preconnect"]' ); prefetchLinks.forEach(link => link.remove());
Why it’s ineffective for bypassing Safe Browsing: prefetching controls are not the mechanism used by Safe Browsing to show the red interstitial. The decision is made by the browser security stack before the DOM is even constructed.
navigator.sendBeaconThe script overrides navigator.sendBeacon to prevent background telemetry:
if (navigator.sendBeacon) {
navigator.sendBeacon = function (url, data) {
return false;
};
}
This can prevent some analytics from being sent, but it does not stop the browser’s threat checks.
<meta>The script adds a CSP meta tag that only allows self by default.
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; connect-src 'self'; ...">
This can actually break external resources in a phishing kit (e.g., CDN scripts, fonts). It also cannot override server‑sent CSP or browser‑level security decisions.
Safe Browsing interstitials are triggered by browser‑level and service‑level checks that occur before the phishing page can execute any JavaScript. Blocking network requests from the page cannot retroactively alter that decision.
In short:
ss1.js runs.381890/ss1.js50b9d271cd021f47587f8b85570b30a544a23ebfcea8d9a81a930bedbf9f2b19SafeBrowsingBlockerOur team checked public scanners and found:
This strongly suggests the script is very recent and has limited distribution at the time of analysis.
The ss1.js “SafeBrowsingBlocker” is a clear example of security theater in phishing kits: it tries to block Safe Browsing by interfering with client‑side requests, but it is ineffective against the browser’s real‑time threat checks. Its main impact is disrupting page‑level telemetry and potentially breaking legitimate resources.
For defenders, the script remains a useful IoC and a behavioral indicator of phishing tooling that tries to evade analysis with superficial client‑side measures.