Compare commits

..

2 Commits

Author SHA1 Message Date
Sucukdeluxe
c2bb276c3d Release v1.6.77 2026-03-06 11:32:51 +01:00
Sucukdeluxe
df02a04cfd 🐛 fix(bestdebrid): inject CDP anti-fingerprint patches for Cloudflare Turnstile
Use Chrome DevTools Protocol to inject scripts before page load that:
- Set navigator.webdriver to false
- Add fake navigator.plugins
- Set navigator.languages to realistic values
- Add window.chrome runtime stub

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 11:32:28 +01:00
2 changed files with 19 additions and 1 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "real-debrid-downloader", "name": "real-debrid-downloader",
"version": "1.6.76", "version": "1.6.77",
"description": "Desktop downloader", "description": "Desktop downloader",
"main": "build/main/main/main.js", "main": "build/main/main/main.js",
"author": "Sucukdeluxe", "author": "Sucukdeluxe",

View File

@ -192,6 +192,24 @@ export class BestDebridWebFallback {
}); });
window.webContents.setUserAgent(BESTDEBRID_USER_AGENT); window.webContents.setUserAgent(BESTDEBRID_USER_AGENT);
window.setMenuBarVisibility(false); window.setMenuBarVisibility(false);
// Inject anti-fingerprint patches via CDP before any page JS runs
// This hides Electron-specific properties that Cloudflare Turnstile detects
try {
window.webContents.debugger.attach("1.3");
await window.webContents.debugger.sendCommand("Page.addScriptToEvaluateOnNewDocument", {
source: [
"Object.defineProperty(navigator, 'webdriver', { get: () => false });",
"Object.defineProperty(navigator, 'plugins', { get: () => [1, 2, 3, 4, 5] });",
"Object.defineProperty(navigator, 'languages', { get: () => ['de-DE', 'de', 'en-US', 'en'] });",
"window.chrome = { runtime: {}, loadTimes: function() {}, csi: function() {} };"
].join("\n")
});
window.webContents.debugger.detach();
} catch {
// CDP not available — continue without patches
}
window.on("closed", () => { window.on("closed", () => {
if (this.loginWindow === window) { if (this.loginWindow === window) {
this.loginWindow = null; this.loginWindow = null;