-
Notifications
You must be signed in to change notification settings - Fork 0
Browser and Ad Blocking
Clicking a link in Draggy, whether a search result, a citation or something the model mentioned, opens it in a browser window inside the app rather than throwing you out to Chrome.
Back, forward, reload (stop while a page is loading), an address bar, and a settings button on the right.
The address bar works like any other: type a URL and it goes there, type anything else and it searches. It shows the page's real address, and stops updating under you while you are typing in it.
It opens http and https only. http://localhost:3000 works, because that is
your own machine and your own decision; a file:// path is treated as a search
rather than loaded. The model is held to a stricter version of the same rule, see
Tools and Capabilities.
Draggy blocks with Ghostery's engine, which implements uBlock Origin's filter syntax, scriptlets and cosmetic rules included. What it loads is the set a fresh uBO install subscribes to: EasyList, EasyPrivacy, Peter Lowe's list and uBO's own, every year of them. AdGuard's equivalents and OISD are loaded alongside them, because each project writes rules the others have not got around to.
YouTube adverts. These cannot be blocked at the network layer: they come from the same host as the video itself. uBO removes them with scriptlets that prune the advert fields out of the player's response before it plays them, and those rules live in the current year's uBO file. Draggy loads it, so the scriptlets run.
Adblock walls. Some sites detect a blocker and put a "turn off your ad blocker" panel in front of the article. EasyList maintains a list that defuses those detectors per site, and it is loaded too.
The lists are downloaded once and compiled into a cache in the Draggy data folder, so this costs a few seconds on a first run and nothing afterwards. If that download fails, for want of a network or because a proxy is in the way, blocking is simply off for that session and pages still load.
Turning it off. The settings button on the right of the toolbar has an Ad blocker switch. It applies everywhere at once, including the model's page reads, and it is remembered between runs. The page reloads when you flip it, because filters are applied as a request is made rather than after.
Turn it off when a site will not work with it on. That is rare with these lists, which are written to avoid exactly that, but a paywall or a video player occasionally objects.
A general-purpose filter list has to be safe on every site on the web, so it
will not blanket-block a platform's own domains: one over-broad rule against
facebook.com or googlevideo.com breaks logging in or playing a video for
everybody.
Draggy ships one supplemental list of its own,
electron/filters/draggy-extra.txt,
covering the endpoints where that caution costs nothing: advertising APIs,
measurement pixels and operating-system telemetry sinks that render nothing and
carry no login. Roughly forty of them.
Deliberately absent from it, and listed in the file with reasons, are the ones that carry something you asked for: YouTube's video delivery, the Facebook login SDK, Instagram's own API, the JW Player library, Google Tag Manager, the support chat widgets. Blocking those would score better on ad-blocker benchmark sites and break the web while doing it.
If you want to measure it, a live-probe test of 482 endpoints puts this configuration at a 96% block rate. The remainder is that video-player infrastructure.
Before this, every window in the app shared one Electron session, and Draggy's
own Content Security Policy (default-src 'self', frame-src 'none',
form-action 'none') was applied to every response in it. External sites got
it too, which blocked their scripts, their stylesheets, their images, their
video, their iframes and their forms.
External pages now run on a separate session with no policy of ours attached. Draggy's own window keeps the strict one, which is where it belongs.
Browser windows close when Draggy does. They are top-level windows rather than children of the main one, so leaving one open used to keep the app running after its own window had gone.
Your browsing and the model's page reads share one persistent session. Cookies and logins survive between runs, and a verification check you pass by hand carries over to what the model can fetch afterwards, see Tools and Capabilities.
Clearing it means deleting the Draggy data folder, which Installation locates for your platform.