|
|
|
|
| pub fn build_init_script(blocked_domains_json: &str) -> String {
|
| let adblock_layer1 = include_str!("../../resources/scripts/adblock_layer1.js");
|
| let cookie_consent = include_str!("../../resources/scripts/cookie_consent.js");
|
| let webrtc_protect = include_str!("../../resources/scripts/webrtc_protect.js");
|
| let canvas_noise = include_str!("../../resources/scripts/canvas_noise.js");
|
| let hover_overlay = hover_overlay_script();
|
| let vault_detector = vault_detector_script();
|
| let autofill_suppress = autofill_suppress_script();
|
| let video_ad_scriptlets = include_str!("../../resources/scripts/video_ad_scriptlets.js");
|
|
|
| format!(
|
| r#"(function() {{
|
| 'use strict';
|
| window.__MUSE_BLOCKED_DOMAINS__ = {blocked_domains_json};
|
| document.addEventListener('contextmenu', function(e) {{
|
| e.preventDefault();
|
| try {{
|
| const target = e.target;
|
| const info = {{
|
| x: e.screenX, y: e.screenY, clientX: e.clientX, clientY: e.clientY,
|
| tagName: target.tagName, src: target.src || null,
|
| href: target.closest('a') ? target.closest('a').href : null,
|
| text: window.getSelection().toString().slice(0, 200) || null,
|
| pageUrl: location.href,
|
| }};
|
| window.__TAURI_INTERNALS__.invoke('browser_context_menu', info).catch(function() {{}});
|
| }} catch(ex) {{}}
|
| }}, true);
|
| }})();
|
| {video_ad_scriptlets}
|
| {adblock_layer1}
|
| {cookie_consent}
|
| {webrtc_protect}
|
| {canvas_noise}
|
| {autofill_suppress}
|
| {hover_overlay}
|
| {vault_detector}"#
|
| )
|
| }
|
|
|
|
|
| pub fn hover_overlay_script() -> &'static str {
|
| include_str!("../../resources/scripts/hover_overlay.js")
|
| }
|
|
|
|
|
| pub fn vault_detector_script() -> &'static str {
|
| include_str!("../../resources/scripts/vault_detector.js")
|
| }
|
|
|
|
|
| pub fn autofill_suppress_script() -> &'static str {
|
| include_str!("../../resources/scripts/autofill_suppress.js")
|
| }
|
|
|
|
|
| pub fn blocked_domains_json() -> String {
|
| let domains: &[&str] = &[
|
| "googlesyndication.com", "doubleclick.net", "google-analytics.com",
|
| "googletagmanager.com", "facebook.net", "connect.facebook.net",
|
| "amazon-adsystem.com", "criteo.com", "outbrain.com", "taboola.com",
|
| "scorecardresearch.com", "quantserve.com", "adnxs.com", "rubiconproject.com",
|
| "pubmatic.com", "openx.net", "moatads.com", "hotjar.com", "mixpanel.com",
|
| "segment.io", "segment.com", "amplitude.com", "fullstory.com",
|
| "onetrust.com", "cookielaw.org", "trustarc.com", "consensu.org",
|
| "2mdn.net", "adsymptotic.com", "advertising.com", "bluekai.com",
|
| ];
|
| serde_json::to_string(domains).unwrap_or_else(|_| "[]".to_string())
|
| }
|
|
|