finished
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
|||||||
node_modules
|
node_modules
|
||||||
|
dist
|
||||||
63
main.js
63
main.js
@@ -1,7 +1,16 @@
|
|||||||
const { app, BrowserWindow, session } = require('electron/main')
|
const { app, BrowserWindow, session } = require('electron');
|
||||||
const path = require('node:path')
|
const path = require('node:path');
|
||||||
|
// Use require for consistency
|
||||||
|
const { ElectronBlocker } = require('@ghostery/adblocker-electron');
|
||||||
|
const fetch = require('cross-fetch');
|
||||||
|
|
||||||
const androidUA = 'Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.164 Mobile Safari/537.36'
|
const androidUA = 'Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.164 Mobile Safari/537.36';
|
||||||
|
|
||||||
|
async function setupBlocker() {
|
||||||
|
const blocker = await ElectronBlocker.fromPrebuiltAdsAndTracking(fetch);
|
||||||
|
blocker.enableBlockingInSession(session.defaultSession);
|
||||||
|
console.log('Adblocker enabled');
|
||||||
|
}
|
||||||
|
|
||||||
const createWindow = () => {
|
const createWindow = () => {
|
||||||
const win = new BrowserWindow({
|
const win = new BrowserWindow({
|
||||||
@@ -9,38 +18,38 @@ const createWindow = () => {
|
|||||||
height: 800,
|
height: 800,
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
preload: path.join(__dirname, 'preload.js'),
|
preload: path.join(__dirname, 'preload.js'),
|
||||||
contextIsolation: false, // Allows easier access to contentWindow
|
contextIsolation: false,
|
||||||
nodeIntegration: true,
|
nodeIntegration: true,
|
||||||
nodeIntegrationInSubFrames: true,
|
nodeIntegrationInSubFrames: true,
|
||||||
webSecurity: false, // CRITICAL: Allows cross-origin history control
|
webSecurity: false,
|
||||||
sandbox: false, // Disables the internal Electron sandbox
|
sandbox: false,
|
||||||
webviewTag: true, // Add this!
|
webviewTag: true,
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
win.webContents.session.setUserAgent(androidUA)
|
win.webContents.session.setUserAgent(androidUA);
|
||||||
win.maximize() // Maximize
|
win.maximize();
|
||||||
win.loadFile('src/index.html')
|
win.loadFile('src/index.html');
|
||||||
}
|
}
|
||||||
|
|
||||||
app.whenReady().then(() => {
|
app.whenReady().then(async () => {
|
||||||
const sess = session.defaultSession
|
await setupBlocker();
|
||||||
|
|
||||||
|
const sess = session.defaultSession;
|
||||||
|
|
||||||
sess.webRequest.onBeforeSendHeaders((details, callback) => {
|
sess.webRequest.onBeforeSendHeaders((details, callback) => {
|
||||||
details.requestHeaders['User-Agent'] = androidUA;
|
details.requestHeaders['User-Agent'] = androidUA;
|
||||||
details.requestHeaders['Sec-CH-UA-Mobile'] = '?1';
|
details.requestHeaders['Sec-CH-UA-Mobile'] = '?1';
|
||||||
details.requestHeaders['Sec-CH-UA-Platform'] = '"Android"';
|
details.requestHeaders['Sec-CH-UA-Platform'] = '"Android"';
|
||||||
|
|
||||||
callback({ requestHeaders: details.requestHeaders });
|
callback({ requestHeaders: details.requestHeaders });
|
||||||
});
|
});
|
||||||
|
|
||||||
sess.webRequest.onHeadersReceived((details, callback) => {
|
sess.webRequest.onHeadersReceived((details, callback) => {
|
||||||
const responseHeaders = { ...details.responseHeaders };
|
const responseHeaders = { ...details.responseHeaders };
|
||||||
const headersToRemove = ['x-frame-options', 'content-security-policy'];
|
const keys = Object.keys(responseHeaders);
|
||||||
|
keys.forEach(key => {
|
||||||
Object.keys(responseHeaders).forEach(header => {
|
if (['x-frame-options', 'content-security-policy'].includes(key.toLowerCase())) {
|
||||||
if (headersToRemove.includes(header.toLowerCase())) {
|
delete responseHeaders[key];
|
||||||
delete responseHeaders[header];
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -50,17 +59,13 @@ app.whenReady().then(() => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
createWindow()
|
createWindow();
|
||||||
|
|
||||||
app.on('activate', () => {
|
app.on('activate', () => {
|
||||||
if (BrowserWindow.getAllWindows().length === 0) {
|
if (BrowserWindow.getAllWindows().length === 0) createWindow();
|
||||||
createWindow()
|
});
|
||||||
}
|
});
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
app.on('window-all-closed', () => {
|
app.on('window-all-closed', () => {
|
||||||
if (process.platform !== 'darwin') {
|
if (process.platform !== 'darwin') app.quit();
|
||||||
app.quit()
|
});
|
||||||
}
|
|
||||||
})
|
|
||||||
3405
package-lock.json
generated
3405
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
13
package.json
13
package.json
@@ -13,6 +13,17 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/electron": "^1.4.38",
|
"@types/electron": "^1.4.38",
|
||||||
"@types/node": "^25.6.0",
|
"@types/node": "^25.6.0",
|
||||||
"electron": "^41.3.0"
|
"electron": "^41.3.0",
|
||||||
|
"electron-builder": "^26.8.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@ghostery/adblocker-electron": "^2.14.4",
|
||||||
|
"cross-fetch": "^4.1.0"
|
||||||
|
},
|
||||||
|
"build": {
|
||||||
|
"linux": {
|
||||||
|
"target": ["AppImage", "deb", "tar.gz"],
|
||||||
|
"category": "Utility"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user