{"id":13359124,"url":"https://github.com/AdguardTeam/AdGuardForSafari","last_synced_at":"2025-03-12T11:31:06.668Z","repository":{"id":37484502,"uuid":"149273112","full_name":"AdguardTeam/AdGuardForSafari","owner":"AdguardTeam","description":"AdGuard for Safari app extension","archived":false,"fork":false,"pushed_at":"2025-01-27T15:46:40.000Z","size":125926,"stargazers_count":1077,"open_issues_count":111,"forks_count":76,"subscribers_count":37,"default_branch":"master","last_synced_at":"2025-01-27T16:41:11.553Z","etag":null,"topics":["adblock","adguard","open-source","safari","safari-extension"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AdguardTeam.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-18T10:53:12.000Z","updated_at":"2025-01-20T09:06:06.000Z","dependencies_parsed_at":"2024-06-19T03:01:45.818Z","dependency_job_id":"b1fec003-7211-4a76-8990-81ab12e002ec","html_url":"https://github.com/AdguardTeam/AdGuardForSafari","commit_stats":null,"previous_names":[],"tags_count":154,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdguardTeam%2FAdGuardForSafari","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdguardTeam%2FAdGuardForSafari/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdguardTeam%2FAdGuardForSafari/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdguardTeam%2FAdGuardForSafari/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AdguardTeam","download_url":"https://codeload.github.com/AdguardTeam/AdGuardForSafari/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243208848,"owners_count":20254123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adblock","adguard","open-source","safari","safari-extension"],"created_at":"2024-07-29T21:04:00.507Z","updated_at":"2025-03-12T11:31:04.123Z","avatar_url":"https://github.com/AdguardTeam.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","HTML"],"sub_categories":[],"readme":"\u0026nbsp;\n\n\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://cdn.adtidy.org/public/Adguard/Common/Logos/safari_dark.svg\" width=\"300px\" alt=\"AdGuard for Safari\" /\u003e\n    \u003cimg src=\"https://cdn.adtidy.org/public/Adguard/Common/Logos/safari.svg\" width=\"300px\" alt=\"AdGuard for Safari\" /\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003eThe most advanced ad blocking extension for Safari\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\n  Free and open source, highly customizable and lightning fast ad blocking extension.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://adguard.com/\"\u003eAdGuard.com\u003c/a\u003e |\n    \u003ca href=\"https://reddit.com/r/Adguard\"\u003eReddit\u003c/a\u003e |\n    \u003ca href=\"https://twitter.com/AdGuard\"\u003eTwitter\u003c/a\u003e |\n    \u003ca href=\"https://t.me/adguard_en\"\u003eTelegram\u003c/a\u003e\n    \u003cbr /\u003e\u003cbr /\u003e\n    \u003ca href=\"https://agrd.io/safari\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/download-app%20store-blue.svg\" alt=\"Download on the AppStore\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://agrd.io/safari_release\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/release/AdguardTeam/AdguardForSafari.svg?label=release\" alt=\"Latest release\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://agrd.io/safari_beta\"\u003e\n        \u003cimg src=\"https://img.shields.io/endpoint?url=https://shields-io-proxy.agrd.workers.dev/?repo=AdGuardTeam/AdGuardForSafari\" alt=\"Latest beta\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://cdn.adtidy.org/content/github/ad_blocker/safari/dark_filters.png\" width=\"800\"\u003e\n    \u003cimg src=\"https://cdn.adtidy.org/content/github/ad_blocker/safari/filters.png\" width=\"800\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003chr /\u003e\n\n# AdGuard for Safari\n\nAd blocking extensions for Safari are having hard time since Apple [started to force everyone](https://adguard.com/en/blog/safari-adblock-extensions/) to use the new SDK. AdGuard extension is supposed to bring back the high quality ad blocking back to Safari.\n\nUnlike other major ad blockers, AdGuard provides some extra features you are used to have with the traditional (now deprecated) extensions:\n\n* Managing protection from Safari\n* Choose among popular filter subscription\n* Custom filters\n* Creating your own filtering rules\n* Manual blocking tool\n* Allowlisting websites\n\nAdGuard for Safari is based on the Safari native content blocking API, which makes it lightning fast, but somewhat limited in capabilities. For instance, Safari limits the number of rules a content blocker can have.\n\n## Better yet, there is a full-fledged AdGuard for Mac\n\nWith all above said, there is a solution that is even more effective than AG Safari extension. I mean, of course, [AdGuard for Mac](https://adguard.com/adguard-mac/overview.html). It can:\n\n* filter your traffic in all browsers and apps on your Mac\n* have an unlimited number of filter rules\n* provide a better filtering quality (due to the lack of browser API restrictions)\n\nYou can [try it out for free](https://adguard.com/en/download.html?os=mac\u0026show=1).\n\n## How to build AdGuard for Safari\n\nAdGuard for Safari consists of three parts:\n\n* An [Electron](https://electronjs.org/) application.\n* Safari Content Blocker extension\n* Safari Toolbar icon extension\n\n### Prerequisites\n\n- MacOS 13.1 or above\n- [Xcode](https://developer.apple.com/xcode/) 14.3 or above\n- Xcode Command Line Tools\n- [Node.js](https://nodejs.org/) v18.17.1 or higher\n- [Yarn](https://yarnpkg.com/lang/en/)\n- [JQ](https://stedolan.github.io/jq/)\n\nAlso, you need to install these packages globally:\n\n- [electron-packager](https://github.com/electron-userland/electron-packager)\n- [node-gyp](https://github.com/nodejs/node-gyp)\n- [electron-osx-sign](https://www.npmjs.com/package/electron-osx-sign)\n\n```\nyarn global add electron-packager\nyarn global add node-gyp\nyarn global add electron-osx-sign\n```\n\n## How to build\n\n### To run application in development mode\n\n```\ncd ElectronMainApp\n```\n\nInstall local dependencies by running:\n\n```\nyarn install\n```\n\n### How to debug the app\n\n#### Debug window\n\nLaunch the application via:\n```\nyarn start\n```\nOpen menu `View -\u003e Toggle Developer Tools`\n\n#### Debug main process\n\nLaunch the application via\n```\nyarn inspect\n```\nOpen URI `chrome://inspect` in Chromium\n\nThen add a network target `localhost:5858` via button \"Configure\" and select this target below.\n\n#### Build and run in production mode\n\nReplace the following line in file `./AdGuard/Config.xcconfig`\n```\nAG_SIGN = \u003cYOUR APPLE DEVELOPER COMMON NAME\u003e\n```\nwhere `\u003cYOUR APPLE DEVELOPER COMMON NAME\u003e` is your codesign identity\n\nMake sure your system Nodejs version higher v8.9.4.\n\nSteps to check it:\nif you use `nvm` run\n```\nnvm use system\nnode -v\n```\notherwise\n```\nnode -v\n```\n\nOpen `AdGuard.xcworkspace` in Xcode and run building project\n\n#### How to run tests\n```\ncd ElectronMainApp\nyarn test\n```\n\n## Preparing and building Adguard.\n\n### Environment requirements\n\n  - MacOS 13.1+\n  - Xcode 14.3+\n  - Install `Xcode command line tools`\n   ```bash\n   xcode-select --install\n   ```\n  - Install the `ruby` module `bundler` if it is not in the system\n   ```bash\n   sudo gem install bundler\n   ```\n  - Fastlane manages development and distribution certificates according to the documentation described in `fastlane match`. The file `./fastlane/env.default` contains variables (`SENSITIVE_VARS_PATH`, `APP_STORE_CONNECT_API_KEY_PATH`) that define the paths to files with private information necessary for `fastlane match` to work. Create these files in a hidden location with the appropriate contents and specify their paths in the these variables.\n  - You need to run the `configure.sh dev` script, which will install the necessary components and certificates locally.\n   ```bash\n   cd \u003crepository\u003e\n   ./configure.sh dev\n   ```\n\nCheck certificates names in Scripts/ExportOptions.plist\n\n### Building\n\n#### SafariConverterLib dependency\n\nFor converting rules to content-blocker format we use an external library as a binary built from `https://github.com/AdguardTeam/SafariConverterLib/`, that `ConverterTool` binary should be placed in `./libs/`.\n\nYou use `./Scripts/download-lib.sh` to download the latest release version of that binary from Github.\n\n#### Common issues\nhttps://developer.apple.com/documentation/security/notarizing_your_app_before_distribution/resolving_common_notarization_issues\n\nUse fixed `electron-osx-sign`\n```\nnpm install -g electron-userland/electron-osx-sign#timestamp-server\n```\n\n#### How to release standalone builds\n- update version `package.json` and `AdGuard/standalone.xcconfig` or `AdGuard/standalone-beta.xcconfig`\n- build apps\n- notarize builds\n- publish release on Github\n- refresh `updates/updates.json` and `release.json` in gh-pages branch\n\n#### Build application\n\n```\n./build.sh \u003cchannel\u003e [--notarize=0]\n```\n\nArguments:\n\n- `\u003cchannel\u003e` -- updates channel:\n  - `mas` -- Mac App Store\n  - `beta` -- standalone beta\n  - `release` -- standalone release\n- `[--notarize=0]` -- optional parameter to skip notarization\n\nOutput directory `build` contains:\n\n- `Adguard for Safari.app` -- signed and notarized app.\n- `Adguard for Safari.app.zip` -- zip of signed and notarized app.\n- `Adguard for Safari.xcarchive` -- app archive.\n- `Adguard for Safari.xcarchive.zip` -- zip of app archive\n- `version.txt` -- version info (CI requirement).\n- `updates.json` -- json file with updates info.\n- `release.json` -- json file with updates info.\n\n### Clean install\n\n* Disable all AdGuard for Safari extensions in Safari browser settings and close browser\n* Close AdGuard for Safari\n* Delete the following directories:\n  * ~/Library/Application Support/AdGuardSafariApp\n  * ~/Library/Containers/ - all directories started with com.adguard.safari.AdGuard (if there’s any)\n  * ~/Library/GroupContainers/TC3Q7MAJXF.com.adguard.safari.AdGuard\n  * ~/Library/Preferences/com.adguard.safari.AdGuard.plist\n* Quit all “AdGuard” and “cfprefsd” processes in Activity monitor\n* Reinstall AdGuard for Safari\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAdguardTeam%2FAdGuardForSafari","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAdguardTeam%2FAdGuardForSafari","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAdguardTeam%2FAdGuardForSafari/lists"}