Giter Club home page Giter Club logo

zen's Introduction

Zen's Blue Shield Logo

Zen: Your Comprehensive Ad-Blocker and Privacy Guard

There is, simply, no way, to ignore privacy. Because a citizenry’s freedoms are interdependent, to surrender your own privacy is really to surrender everyone’s.

Edward Snowden, Permanent Record

GitHub License GitHub release GitHub download counter

Zen is an open-source system-wide ad-blocker and privacy guard for Windows, macOS, and Linux. It works by setting up a proxy that intercepts HTTP requests from all applications, and blocks those serving ads, tracking scripts that monitor your behavior, malware, and other unwanted content. By operating at the system level, Zen can protect against threats that browser extensions cannot, such as trackers embedded in desktop applications and operating system components. Zen comes with many pre-installed filters, but also allows you to easily add hosts files and EasyList-style filters, enabling you to tailor your protection to your specific needs.

Downloads

During the first run, Zen will prompt you to install a root certificate. This is required for Zen to be able to intercept and modify HTTPS requests. This certificate is generated locally and never leaves your device.

Windows

Unsure which version to download? Click on 'Start' and type 'View processor info'. The 'System type' field under 'Device specifications' will tell you which one you need.

macOS

Unsure which version to download? Learn at Apple's website.

Linux

Zen is currently only supported on GNOME-based desktop environments.

Screenshots

Request history Filter list manager
Request history shows all requests blocked by Zen. Each request can be inspected to see which filter and rule blocked it. Zen comes with many pre-installed filters. You can also add your own by providing a URL to a hosts file or an EasyList-style filter.
Zen's main window Zen's filter list manager

Running & Building

Zen is based on Wails, a framework for building desktop applications using Go and web technologies. Follow the installation instructions to install it on your system. Use wails build to build Zen, and wails dev to run it in development mode.

License

This project is licensed under the MIT License. Some code and assets included with Zen are licensed under different terms. For more information, see the COPYING file.

zen's People

Contributors

anfragment avatar dependabot[bot] avatar imgbot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

zen's Issues

update-ca-certificates error

Hi, When I click on the start button an error appears with this text:
Failed to start proxy: install CA: system trust command: exit status 127 Cannot run program update-ca-certificates: No such file or directory

OS: Debian GNU/Linux 12 (bookworm) x86_64
DE: GNOME 43.6
CPU: AMD Ryzen 5 5600H with Radeon Graphics (12)

ca-certificates is already the newest version (20230311).

Screenshot from 2023-12-05 16-28-36

Feature: userscripts support

Description

The project would greatly benefit from the inclusion of a userscripts manager similar to that of Adguard, where the HTML page is analyzed and scripts are added to the head section. It should be compatible with all existing Tampermonkey scripts, as Adguard currently is. More information on Tampermonkey API can be found at https://www.tampermonkey.net/documentation.php. Greasemonkey scripts should also be supported, whcih as far as i know share the same API.

Potential race conditions in config.go

There is no locking mechanism implemented to stop config's methods from executing simultaneously, thus leading to potential data corruption. This should be fixed using sync.RWMutex.

Feature: Add Minimize to Tray

Description

This program is looking great, thanks for your hard work! It would be great to have it start in the tray and to be able to minimize it to the tray, possibly having it run as a service as well, so it can start on boot.

TIA

Error when starting and using a paloalto's GlobalProtext VPN/proxy

Description

Zen fails to start when using a paloalto's GlobalProtext proxy (the proxy used by my work).

Logs from the macOS console app (the link to how to include the logs that Zen prints out was not helpful so let me know if there is someplace else to look at logs):

default	09:39:16.669517-0700	Zen	0x12e05ba40 - [PID=0] WebProcessCache::setApplicationIsActive: (isActive=1)
default	09:39:16.673858-0700	Zen	Gained inheritances: {(
    <RBSInheritance| environment:(none) name:com.apple.launchservices.userfacing origID:648-593-932837 0>,
    <RBSInheritance| environment:(none) name:com.apple.launchservices.userfacing origID:648-593-932837 0>
)}
default	09:39:16.690807-0700	Zen	Gained inheritances: {(
    <RBSInheritance| environment:(none) name:com.apple.frontboard.visibility origID:648-620-932839 0>
)}
default	09:39:17.654028-0700	Zen	parent WailsWindow 0x134010720 (17e06) remove NSWindow 0x134222260 (17e69) from group
default	09:39:17.654211-0700	Zen	parent WailsWindow 0x134010720 (17e06) add NSWindow 0x134222260 (17e69) to group
default	09:39:17.654601-0700	Zen	order window: 17e69 op: 1 relative: 17e06 related: 0
default	09:39:17.700637-0700	Zen	parent WailsWindow 0x134010720 (17e06) remove NSWindow 0x134222260 (17e69) from group
default	09:39:17.700861-0700	Zen	window NSWindow 17e69 finishing close
default	09:39:17.701174-0700	Zen	order window: 17e69 op: 0 relative: 0 related: 0
default	09:39:17.705393-0700	Zen	nw_path_libinfo_path_check [9FE9BF9E-727F-4850-915A-58C0FAA3193C Hostname#2af0d623:0 tcp, legacy-socket, attribution: developer]
	libinfo check path: satisfied (Path is satisfied), interface: utun4, ipv4, dns
default	09:39:17.705393-0700	Zen	nw_path_libinfo_path_check [FA2CB79E-AFE3-4197-B05C-614AB39E90D8 Hostname#782fce55:0 tcp, legacy-socket, attribution: developer]
	libinfo check path: satisfied (Path is satisfied), interface: utun4, ipv4, dns
default	09:39:17.705393-0700	Zen	nw_path_libinfo_path_check [E32CE374-59E9-4F8D-9B2E-EBC949C58FC4 Hostname#ea855251:0 tcp, legacy-socket, attribution: developer]
	libinfo check path: satisfied (Path is satisfied), interface: utun4, ipv4, dns
default	09:39:17.705450-0700	Zen	nw_path_libinfo_path_check [81BF410D-6CD6-4CEE-9508-BF4C57E450EF Hostname#80eab101:0 tcp, legacy-socket, attribution: developer]
	libinfo check path: satisfied (Path is satisfied), interface: utun4, ipv4, dns
default	09:39:17.705570-0700	Zen	nw_path_libinfo_path_check [27DE61DB-866E-4A5A-8B70-249D4CAFAC8C Hostname#326b1f12:0 tcp, legacy-socket, attribution: developer]
	libinfo check path: satisfied (Path is satisfied), interface: utun4, ipv4, dns
default	09:39:17.705550-0700	Zen	nw_path_libinfo_path_check [9B0DE8C8-338B-4439-B99A-2E93E68FD42E Hostname#cc9ddf31:0 tcp, legacy-socket, attribution: developer]
	libinfo check path: satisfied (Path is satisfied), interface: utun4, ipv4, dns
default	09:39:18.884031-0700	Zen	0x12e0500e0 - [PID=75693, throttler=0x12e01ce40] ProcessThrottler::Activity::Activity: Starting foreground activity / 'WebPageProxy::runJavaScriptInFrameInScriptWorld'
default	09:39:18.885795-0700	Zen	0x12e0500e0 - [PID=75693, throttler=0x12e01ce40] ProcessThrottler::Activity::invalidate: Ending foreground activity / 'WebPageProxy::runJavaScriptInFrameInScriptWorld'
default	09:39:20.864142-0700	Zen	0x12e05ba40 - [PID=0] WebProcessCache::setApplicationIsActive: (isActive=0)
default	09:39:21.001667-0700	Zen	Lost inheritances: {(
    <RBSInheritance| environment:(none) name:com.apple.frontboard.visibility origID:648-620-932839 0>,
    <RBSInheritance| environment:(none) name:com.apple.launchservices.userfacing origID:648-593-932837 0>,
    <RBSInheritance| environment:(none) name:com.apple.launchservices.userfacing origID:648-593-932837 0>
)}

Version

v0.3.1

Operating System

macOS 14.2

Steps to Reproduce

  1. Start a paloalto's GlobalProtext VPN/proxy
  2. Open the app and click start
  3. See the "Failed to start proxy: set system proxy: no network service found" error
  4. Stop a paloalto's GlobalProtext VPN/proxy
  5. Open the app and click start
  6. It works this time

Order does not matter: starting Zen before a paloalto's GlobalProtext proxy also fails.

Additional Context

No response

Improve certificate cache eviction logic

Currently, generated TLS certificates get evicted 2 minutes after their generation. Due to the usual access patterns this naive heuristic is bad for both frequently and infrequently accessed items. An LRU cache should perform much better.

Add tray support.

Description

It'd be great if tray support was included (on Windows 10+), that way I don't have to keep it open all the time. I prefer having a clean taskbar.

When I use zen, nothing is displayed on the homepage. Is this normal?

Description

I added some custom rules, but I can’t see any prompts on the software homepage.

In addition, can I add rules to block ads that appear when YouTube plays videos?

Version

0.3.0

Operating System

win11

Steps to Reproduce

No response

Additional Context

No response

$removeparam doesn't remove the utm_source parameter

Description

The rule $doc,removeparam=/^\??utm_.*$/i,domain=~tradedoubler.com|~sendgb.com|~allegro.pl|~tix.axs.com|~transfernow.*|~carrefourpl.snrpage.com|~justdial.com|~pepper.pl from DandelionSprout's URL Shortener should block any utm_* parameters on requests to HTML documents, which it doesn't.

Version

v0.4.0

Operating System

macOS

Steps to Reproduce

  1. Ensure DandelionSprout's URL Shortener is enabled in the settings.
  2. Navigate to a website with any utm_* parameter enabled (e.g. https://bikeshed.com/?utm_source=pocket_saves).

Additional Context

No response

Support Flatpak/snap/Appimage

Hi
Nowadays flatpak/appimage/snap can cover multiple distributions without bound by packaging. Is it possible to support Flatpak/Appimage/Snap?

Can not operate

Description

[Process exited with code 1 (0x00000001)]

Version

0.3.0

Operating System

win11

Steps to Reproduce

This problem occurs when opening

Additional Context

image

Document for add custom filter list

Hi. It will be good if you write documentation on how to create a custom filter list. I want to add my filter list but I don't know what should be inside the file.

Thanks

Add source for ad/analytics loading request

Discussed in #69

Originally posted by AkioNuernberger March 26, 2024
Salem Ansar! Love the product and thank you for bringing this into the world.
One additional thing I would love is seeing where the request comes from.

Currently, the majority of requests seem to be going to segment. What would be super interesting is finding out which apps are actually sending out these requests. I think this make the user better informed which apps are actually sending out data / loading ads.

image

Mac: Feature: Toolbar Icon

Hi, I'd like to propose something that was probably overlooked since macOS isn't as popular. The app needs to have a toolbar icon and/or run as a service so I can quit the app and have it off my dock.

Also, how do I uninstall it? It made system-level adjustments and now if it's not running my Internet connection is completely gone.

Error when used on some Linux disributions

Description

When I update all packages with Zen on, it says

:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Starting full system upgrade...
 there is nothing to do
:: Looking for PKGBUILD upgrades...
:: Looking for AUR upgrades...
:: Looking for devel upgrades...
error: error sending request for url (https://aur.archlinux.org/rpc): invalid HTTP version parsed

When I update all packages with Zen off, it says

:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Starting full system upgrade...
 there is nothing to do
:: Looking for PKGBUILD upgrades...
:: Looking for AUR upgrades...
:: Looking for devel upgrades...
error: error sending request for url (https://aur.archlinux.org/rpc): error trying to connect: tcp connect error: Connection refused (os error 111)

Version

v0.3.0

Operating System

Manjaro Linux

Steps to Reproduce

No response

Additional Context

No response

Request for Adding Forward Proxy Functionality

Hello,

I would like to propose the addition of a forward proxy feature to our system. A forward proxy acts as an intermediary server between client devices and target servers, enhancing network security and privacy by hiding client device identities. It also enables efficient management of network traffic through filtering, monitoring, and logging of incoming requests.

Implementing a forward proxy would improve our system's capabilities in handling caching, load balancing, and access control. It would provide an additional layer of defense against unauthorized access attempts and enhance overall network performance.

I kindly request your consideration of this proposal for adding a forward proxy functionality to our system.

Thank you for your attention.

Best regards,
JackCen

Add documentation

Description

It'd be great if there was some sort of documentation about this project, not just for end-users but also for developers.

Failed to start proxy: set system proxy: set web proxy (interface: USB, port: 54525): exit status 14 ** Error: Command requires admin privileges.

Description

Hi, when trying to start the Zen proxy I get the following error. I have nu idea how to further elevate Zen's permissions. I'm an admin user running the app. Thanks for any ideas. Your app looks really promising, would love to be able to use it.

Version

0.2.2

Operating System

macOS 14.2

Steps to Reproduce

  1. Open the app
  2. Press the start button
  3. Error occurs

Additional Context

I have Little Snitch installed but tested this also without LS active and the same error occurrs.

20231218 Zen

I got internet issues after installing Zen | Linux | gnome

I'm on Debian 12, Gnome.
I installed Zen tomorrow.

After running it, all of my Brave tabs got an internet error. I refreshed them and then they loaded, but very slowly.

When I started my laptop today and opened the browser, it showed a connection lost (some kind of proxy error).
Then I started the Zen app and some working started...
And some websites are behaving abnormally, like WhatsApp (web.whatsapp.com), which keeps on looping on logging in.
Replit cannot get connected to my repls. I did reboot, but nothing works.

I removed the Zen app and its certificates from .local/../../../zen, but no success is there.

Help me in getting working internet.

Make the Windows version run automatically on system startup

Discussed in #52

Originally posted by hiro-gj February 6, 2024
Hi, anfragment
Thank you very much for this wonderful app.

By the way, I would like the Windows version of ZEN to run ad blocking automatically when the OS starts.

For example, is there a way to activate (Start) the ad block from the command prompt?

Please check it.
thank you.

Support removeparam modifiers

Couple thoughts on the implementation:

  • There can be removeparam rules with an empty "matching part" (see: AdGuard URL Tracking Filter). One solution may be to keep a "generic" rule in the rule tree which can be matched against every request.
  • There may be multiple removeparam rules that should match a request. Current rule tree behavior is to return the first matched rule (which is ok if the only thing it does is blocking). Possible solution: pass a reference to an actions array as a parameter to every function in the matching pipeline (modifier.ShouldMatch -> rule.HandleRequest -> node.HandleRequest -> node.TraverseAndHandleReq -> rt.HandleRequest) and gather the matched rules/actions. Stop traversal if we hit a blocking rule.

dailymotion

Description

don't work for daily motion the page remains blocked; we get rid of anti-adblock message, but that's the only action; you can't go any further

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.