/ublacklist

Blocks specific sites from appearing in Google search results

Primary LanguageTypeScriptMIT LicenseMIT

uBlacklist

简体中文

Blocks specific sites from appearing in Google search results

Chrome Web Store / Firefox Add-ons / App Store (for macOS and iOS, thanks to Group-Leafy)

Description

This extension prevents the sites you specify from appearing in Google search results.

You can add rules on search result pages, or on sites to be blocked by clicking the toolbar icon. Rules can be specified either by match patterns (e.g. *://*.example.com/*) or by regular expressions (e.g. /example\.(net|org)/).

You can synchronize rulesets across devices via cloud storage. At the moment, Google Drive and Dropbox are supported.

You can also subscribe to public rulesets. Some subscriptions are listed on the website: https://iorate.github.io/ublacklist/subscriptions

Supported search engines

This extension is available in the below search engines.

Web Images Videos News
Google ✔️ ✔️ ✔️ ✔️
Bing ✔️ ✔️ ✔️ ✔️
Brave *3 ✔️ ✔️ ✔️ ✔️
DuckDuckGo ✔️ ✔️ ✔️ ✔️
Ecosia ✔️
Kagi ✔️ ✔️ ✔️ ✔️
Qwant ✔️ ✔️ *1 ✔️
SearX *2 ✔️ ✔️ ✔️ ✔️
Startpage ✔️ ✔️ ✔️
Yahoo! JAPAN ✔️
Yandex ✔️

*1 Only if "Always play videos on Qwant.com" is turned off
*2 Only certain public instances are supported. If you want to add support for your own SearX/SearXNG search engine, edit src/common/search-engines.ts and build the extension manually
*3 Due to the difficulty in obtaining the full URLs of image links, this extension does not support per-subdomain blocking in Brave Image Search. (For example, if the link is to "www.example.com", it will block the entire "example.com").

For subscription providers

To publish a ruleset as a subscription, place a ruleset file encoded in UTF-8 on a suitable HTTP(S) server, and publish the URL. Here is an example hosted on GitHub:
https://raw.githubusercontent.com/iorate/ublacklist-example-subscription/master/uBlacklist.txt

You can prepend YAML frontmatter to your ruleset. It is recommended that you set the name variable.

---
name: Your ruleset name
---
*://*.example.com/*

In uBlacklist >=6.6.0 for Chrome, subscription links are available. To add a subscription with url, the following URL can be used as a shortcut to the options page:

https://iorate.github.io/ublacklist/subscribe?url={urlEncode(url)}

For the above example:
https://iorate.github.io/ublacklist/subscribe?url=https%3A%2F%2Fraw.githubusercontent.com%2Fiorate%2Fublacklist-example-subscription%2Fmaster%2FuBlacklist.txt

For developers

Build

To build this extension, pnpm>=9.7.0 or corepack (currently distributed with Node.js) is required.

# If you use corepack
# corepack enable

git clone https://github.com/iorate/ublacklist.git

cd ublacklist

pnpm install

# Usage: pnpm build [--browser BROWSER] [--version VERSION] [--debug] [--watch]
pnpm build

Before opening a pull request, you should make sure that pnpm check passes.

pnpm check

# Some lint errors can be fixed automatically
pnpm fix

NOTE: The API keys and secrets for the sync feature are not included in this repository. To develop the sync feature, set your own API keys and secrets in the .env file.

DROPBOX_API_KEY=...
DROPBOX_API_SECRET=...
GOOGLE_DRIVE_API_KEY=...
GOOGLE_DRIVE_API_SECRET=...

Locale

To add a locale,

  1. Determine an ISO language code such as en referring to kLanguageInfoTable.
  2. Copy src/locales/en/messages.json.ts to src/locales/${languageCode}/messages.json.ts and translate entries.
  3. Open src/scripts/dayjs-locales.ts and import the dayjs locale.
  4. To localize description and screenshots on web stores, create web-store-assets/${languageCode}/ and add files.
    • Screenshot localization is available only on Chrome Web Store.
    • Screenshots should be 1280x800.

Author

iorate (Twitter)

License

uBlacklist is licensed under MIT License.