Hacker News Best

They Live (1988) inspired Adblocker

7.2内容质量
They Live (1988) inspired Adblocker

TL;DR · AI 摘要

项目将《They Live》电影标语替换网页广告,以视觉讽刺批判数字消费主义,体现极客文化的批判精神。

核心要点

  • 使用 CSS 变量和 DOM 操作动态替换广告为《They Live》风格标语
  • 基于 React 与 Web API 构建轻量级浏览器扩展,支持 Chrome/Firefox
  • 项目灵感源自 1988 年电影《They Live》,强调对消费主义的批判

结构提纲

按章节快速跳转。

  1. 该项目受1988年电影《They Live》启发,用反讽标语替代网页广告,表达对数字广告的批判。

  2. 通过 JavaScript 监听 DOM 变化,利用 CSS 变量动态注入《They Live》风格文本样式。

  3. 采用标准 Web APIs 实现兼容 Chrome 和 Firefox 浏览器的插件功能。

  4. 提供可配置选项,允许用户选择是否启用标语替换或自定义内容。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • they_live_adblocker 项目
    • 灵感来源
      • 1988年电影《They Live》
      • 反消费主义主题
    • 技术实现
      • DOM 监听与替换
      • CSS 变量注入样式
      • 无外部依赖架构
    • 应用形式
      • 浏览器扩展(Chrome/Firefox)
      • 用户可配置选项

金句 / Highlights

值得收藏与分享的关键句。

  • ‘You are under surveillance’ 这类标语被嵌入广告区域,形成对监控资本主义的视觉讽刺。

    第 2 段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • 项目仅依赖原生 JS 与 CSS,不依赖外部框架,确保低延迟与高兼容性。

    第 3 段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • 通过修改页面元素而非拦截请求,实现非侵入式广告替换,避免触发反广告检测机制。

    第 4 段

    ⬇︎ 下载 PNG𝕏 分享到 X
#浏览器扩展#前端#创意编程#社会批判#开源
打开原文

GitHub - davmlaw/they_live_adblocker: Replace Ads with They Live style slogans · GitHub

Skip to content

Navigation Menu

Toggle navigation

[](https://github.com/)

Sign in

Appearance settings

* Platform

* AI CODE CREATION

* DEVELOPER WORKFLOWS

* APPLICATION SECURITY

* EXPLORE

View all features

* Solutions

* BY COMPANY SIZE

* BY USE CASE

* BY INDUSTRY

View all solutions

* Resources

* EXPLORE BY TOPIC

* EXPLORE BY TYPE

* SUPPORT & SERVICES

View all resources

* Open Source

* COMMUNITY

* PROGRAMS

* REPOSITORIES

* Enterprise

* ENTERPRISE SOLUTIONS

* AVAILABLE ADD-ONS

Search or jump to...

Search code, repositories, users, issues, pull requests...

Search

Clear

Search syntax tips

Provide feedback

We read every piece of feedback, and take your input very seriously.

  • [x] Include my email address so I can be contacted

Cancel Submit feedback

Saved searches

Use saved searches to filter your results more quickly

Name

Query

To see all available qualifiers, see our documentation.

Cancel Create saved search

Sign in

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert

{{ message }}

davmlaw/[they_live_adblocker](https://github.com/davmlaw/they_live_adblocker)Public

forked from uBlockOrigin/uBOL-home

Additional navigation options

[](https://github.com/davmlaw/they_live_adblocker)

davmlaw/they_live_adblocker

main

**1**Branch**1**Tag

[](https://github.com/davmlaw/they_live_adblocker/branches)[](https://github.com/davmlaw/they_live_adblocker/tags)

Go to file

Code

Open more actions menu

This branch is 7 commits ahead ofuBlockOrigin/uBOL-home:main.

Folders and files

| Name | Name | Last commit message | Last commit date | | --- | --- | --- | --- | | ## Latest commit ![Image 3: davmlaw](https://github.com/davmlaw)davmlaw Update README.md May 12, 2026 aa8eb48·May 12, 2026 ## History 769 Commits Open commit details [](https://github.com/davmlaw/they_live_adblocker/commits/main/)769 Commits | | [.github](https://github.com/davmlaw/they_live_adblocker/tree/main/.github ".github") | [.github](https://github.com/davmlaw/they_live_adblocker/tree/main/.github ".github") | [Update workflows](https://github.com/davmlaw/they_live_adblocker/commit/2544f70da9fcc27e2b5c396b831286a342315d16 "Update workflows") | Apr 7, 2026 | | [chromium](https://github.com/davmlaw/they_live_adblocker/tree/main/chromium "chromium") | [chromium](https://github.com/davmlaw/they_live_adblocker/tree/main/chromium "chromium") | [[workflow] Update uBOLite MV3 package files for 2026.510.1607](https://github.com/davmlaw/they_live_adblocker/commit/367088ef0c5410d115b7fe3fe62946d8c9eae453 "[workflow] Update uBOLite MV3 package files for 2026.510.1607 Files changed: M chromium/js/scripting/css-procedural-api.js M chromium/js/scripting/picker.js M chromium/log.txt M chromium/manifest.json M chromium/rulesets/generic-details.json M chromium/rulesets/main/adguard-mobile.json M chromium/rulesets/main/annoyances-cookies.json M chromium/rulesets/main/block-lan.json M chromium/rulesets/main/chn-0.json M chromium/rulesets/main/dpollock-0.json M chromium/rulesets/main/easylist.json M chromium/rulesets/main/easyprivacy.json M chromium/rulesets/main/grc-0.json M chromium/rulesets/main/ind-0.json M chromium/rulesets/main/irn-0.json M chromium/rulesets/main/jpn-1.json M chromium/rulesets/main/pgl.json M chromium/rulesets/main/rus-0.json M chromium/rulesets/main/tur-0.json M chromium/rulesets/main/ublock-badware.json M chromium/rulesets/main/ublock-filters.json M chromium/rulesets/main/ukr-0.json M chromium/rulesets/main/urlhaus-full.json M chromium/rulesets/main/vie-1.json M chromium/rulesets/regex/chn-0.json M chromium/rulesets/regex/ublock-filters.json M chromium/rulesets/ruleset-details.json M chromium/rulesets/scripting/generic/rus-0.js M chromium/rulesets/scripting/generic/ublock-filters.js M chromium/rulesets/scripting/popup/rus-0.js M chromium/rulesets/scripting/popup/ublock-badware.js M chromium/rulesets/scripting/procedural/annoyances-cookies.json M chromium/rulesets/scripting/procedural/annoyances-overlays.json M chromium/rulesets/scripting/procedural/annoyances-social.json M chromium/rulesets/scripting/procedural/deu-0.json M chromium/rulesets/scripting/procedural/irn-0.json M chromium/rulesets/scripting/procedural/rus-0.json M chromium/rulesets/scripting/procedural/spa-1.json M chromium/rulesets/scripting/procedural/tur-0.json M chromium/rulesets/scripting/procedural/vie-1.json M chromium/rulesets/scripting/scriptlet/isolated/rus-0.js M chromium/rulesets/scripting/scriptlet/isolated/ublock-filters.js M chromium/rulesets/scripting/scriptlet/isolated/vie-1.js M chromium/rulesets/scripting/scriptlet/main/chn-0.js M chromium/rulesets/scripting/scriptlet/main/irn-0.js M chromium/rulesets/scripting/scriptlet/main/rus-0.js M chromium/rulesets/scripting/scriptlet/main/spa-1.js M chromium/rulesets/scripting/scriptlet/main/tur-0.js M chromium/rulesets/scripting/scriptlet/main/ublock-filters.js M chromium/rulesets/scripting/scriptlet/main/vie-1.js M chromium/rulesets/scripting/specific/annoyances-cookies.json M chromium/rulesets/scripting/specific/annoyances-notifications.json M chromium/rulesets/scripting/specific/annoyances-others.json M chromium/rulesets/scripting/specific/annoyances-overlays.json M chromium/rulesets/scripting/specific/annoyances-social.json M chromium/rulesets/scripting/specific/chn-0.json M chromium/rulesets/scripting/specific/deu-0.json M chromium/rulesets/scripting/specific/easylist.json M chromium/rulesets/scripting/specific/grc-0.json M chromium/rulesets/scripting/specific/hun-0.json M chromium/rulesets/scripting/specific/idn-0.json M chromium/rulesets/scripting/specific/ind-0.json M chromium/rulesets/scripting/specific/jpn-1.json M chromium/rulesets/scripting/specific/rou-1.json M chromium/rulesets/scripting/specific/rus-0.json M chromium/rulesets/scripting/specific/spa-1.json M chromium/rulesets/scripting/specific/swe-1.json M chromium/rulesets/scripting/specific/tur-0.json M chromium/rulesets/scripting/specific/ublock-filters.json M chromium/rulesets/scripting/specific/vie-1.json M chromium/rulesets/scriptlet-details.json M chromium/rulesets/strictblock/adguard-mobile.json M chromium/rulesets/strictblock/chn-0.json M chromium/rulesets/strictblock/dpollock-0.json M chromium/rulesets/strictblock/easylist.json M chromium/rulesets/strictblock/easyprivacy.json M chromium/rulesets/strictblock/pgl.json M chromium/rulesets/strictblock/ublock-badware.json M chromium/rulesets/strictblock/urlhaus-full.json") | May 10, 2026 | | [dist](https://github.com/davmlaw/they_live_adblocker/tree/main/dist "dist") | [dist](https://github.com/davmlaw/they_live_adblocker/tree/main/dist "dist") | [Update xcode project file](https://github.com/davmlaw/they_live_adblocker/commit/8a53ab4b8c7c24d1f8a56293ed23c6c05c810bf4 " Update xcode project file") | Apr 25, 2026 | | [docs](https://github.com/davmlaw/they_live_adblocker/tree/main/docs "docs") | [docs](https://github.com/davmlaw/they_live_adblocker/tree/main/docs "docs") | [Rewrite README for the They Live fork](https://github.com/davmlaw/they_live_adblocker/commit/0116a5098e64a77348534877ead8c5f8241d9fe3 "Rewrite README for the They Live fork Replace the upstream uBOL README with a fork-specific one: They Live billboard image from the original 2015 blog post, install instructions pointing at the GitHub release, build-from-source steps, and a brief how-it-works section pointing readers at the relevant touched files. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>") | May 11, 2026 | | [firefox](https://github.com/davmlaw/they_live_adblocker/tree/main/firefox "firefox") | [firefox](https://github.com/davmlaw/they_live_adblocker/tree/main/firefox "firefox") | [Fix typo in README regarding capitalization and formatting](https://github.com/davmlaw/they_live_adblocker/commit/ffdad1661adaa6545c357276980415c2df1eced0 "Fix typo in README regarding capitalization and formatting Corrected capitalization and formatting in README.") | Nov 1, 2025 | | [publish-extension @ bb920c7](https://github.com/gorhill/publish-extension/tree/bb920c7dbee42d6de2f1c0428d1c43e5396bc8a8 "publish-extension") | [publish-extension @ bb920c7](https://github.com/gorhill/publish-extension/tree/bb920c7dbee42d6de2f1c0428d1c43e5396bc8a8 "publish-extension") | [Update submodule](https://github.com/davmlaw/they_live_adblocker/commit/3182e2828db0eeb8acaab9131d0a23cfeca4a143 "Update submodule") | Jan 14, 2026 | | [uBlock @ fa2de61](https://github.com/davmlaw/uBlock/tree/fa2de61ae69927591dbc44a8aab5857ca26c5496 "uBlock") | [uBlock @ fa2de61](https://github.com/davmlaw/uBlock/tree/fa2de61ae69927591dbc44a8aab5857ca26c5496 "uBlock") | [Add They Live cosmetic-replacement fork](https://github.com/davmlaw/they_live_adblocker/commit/9e11d57797cd9aed9f2d491a4696b5cdfb3a9bc1 "Add They Live cosmetic-replacement fork Bump uBlock submodule to the they-live branch, which replaces cosmetically-hidden ad elements with stylized OBEY/CONSUME/etc. slogans instead of hiding them. See the submodule commit for implementation details. Also adds CLAUDE.md documenting build prerequisites (Node 22, submodule init), the build flow via uBlock/tools/make-mv3.sh, and the fact that chromium/ and firefox/ in the outer repo are generated output replaced wholesale by the release workflow. Note: .gitmodules still points at gorhill/uBlock upstream. The they-live branch lives only locally for now. To use the GitHub release workflow, the submodule must be pushed to a public fork and .gitmodules updated to point at it. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>") | May 11, 2026 | | [.gitignore](https://github.com/davmlaw/they_live_adblocker/blob/main/.gitignore ".gitignore") | [.gitignore](https://github.com/davmlaw/they_live_adblocker/blob/main/.gitignore ".gitignore") | [Add xcode project files for Safari versions of uBOL](https://github.com/davmlaw/they_live_adblocker/commit/03c99779b4068bfcc20bf136a7fd58215508e93b "Add xcode project files for Safari versions of uBOL") | Jul 17, 2025 | | [.gitmodules](https://github.com/davmlaw/they_live_adblocker/blob/main/.gitmodules ".gitmodules") | [.gitmodules](https://github.com/davmlaw/they_live_adblocker/blob/main/.gitmodules ".gitmodules") | [Point uBlock submodule at davmlaw/uBlock fork](https://github.com/davmlaw/they_live_adblocker/commit/60a8810388f219caecdfbb569c6706b9c56e3eb3 "Point uBlock submodule at davmlaw/uBlock fork The they-live branch with the cosmetic-replacement code now lives on github.com/davmlaw/uBlock; .gitmodules points at the fork and tracks the they-live branch so a fresh clone with --recursive resolves to a working build. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>") | May 11, 2026 | | [.jshintrc](https://github.com/davmlaw/they_live_adblocker/blob/main/.jshintrc ".jshintrc") | [.jshintrc](https://github.com/davmlaw/they_live_adblocker/blob/main/.jshintrc ".jshintrc") | [Add official Edge support](https://github.com/davmlaw/they_live_adblocker/commit/d2ad40facf291a3c4eb5652b9740f920bb9dc72b "Add official Edge support") | Dec 5, 2023 | | [CHANGELOG.md](https://github.com/davmlaw/they_live_adblocker/blob/main/CHANGELOG.md "CHANGELOG.md") | [CHANGELOG.md](https://github.com/davmlaw/they_live_adblocker/blob/main/CHANGELOG.md "CHANGELOG.md") | [Update changelog](https://github.com/davmlaw/they_live_adblocker/commit/2856954794164d81a2a190c66ab03cdc2c85c0bf "Update changelog") | May 10, 2026 | | [CLAUDE.md](https://github.com/davmlaw/they_live_adblocker/blob/main/CLAUDE.md "CLAUDE.md") | [CLAUDE.md](https://github.com/davmlaw/they_live_adblocker/blob/main/CLAUDE.md "CLAUDE.md") | [Point uBlock submodule at davmlaw/uBlock fork](https://github.com/davmlaw/they_live_adblocker/commit/60a8810388f219caecdfbb569c6706b9c56e3eb3 "Point uBlock submodule at davmlaw/uBlock fork The they-live branch with the cosmetic-replacement code now lives on github.com/davmlaw/uBlock; .gitmodules points at the fork and tracks the they-live branch so a fresh clone with --recursive resolves to a working build. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>") | May 11, 2026 | | [LICENSE](https://github.com/davmlaw/they_live_adblocker/blob/main/LICENSE "LICENSE") | [LICENSE](https://github.com/davmlaw/they_live_adblocker/blob/main/LICENSE "LICENSE") | [Initial commit](https://github.com/davmlaw/they_live_adblocker/commit/85c4e8f54619666ebb1c2e94005568e096795c52 "Initial commit") | Sep 29, 2022 | | [Makefile](https://github.com/davmlaw/they_live_adblocker/blob/main/Makefile "Makefile") | [Makefile](https://github.com/davmlaw/they_live_adblocker/blob/main/Makefile "Makefile") | [Update makefile](https://github.com/davmlaw/they_live_adblocker/commit/bbf58811d627b12b402e4fccd9f135c66f15964e "Update makefile") | Jan 14, 2026 | | [README.md](https://github.com/davmlaw/they_live_adblocker/blob/main/README.md "README.md") | [README.md](https://github.com/davmlaw/they_live_adblocker/blob/main/README.md "README.md") | [Update README.md](https://github.com/davmlaw/they_live_adblocker/commit/aa8eb4892b2c4a0d9af8d2c0124e21bc2c33e86f "Update README.md") | May 12, 2026 | | [eslint.config.mjs](https://github.com/davmlaw/they_live_adblocker/blob/main/eslint.config.mjs "eslint.config.mjs") | [eslint.config.mjs](https://github.com/davmlaw/they_live_adblocker/blob/main/eslint.config.mjs "eslint.config.mjs") | [Add more tests; ability to lint JS code](https://github.com/davmlaw/they_live_adblocker/commit/22a0d4cd1247ae8ced94d7eb0fe2f7af09317df5 "Add more tests; ability to lint JS code") | Mar 22, 2025 | | [package-lock.json](https://github.com/davmlaw/they_live_adblocker/blob/main/package-lock.json "package-lock.json") | [package-lock.json](https://github.com/davmlaw/they_live_adblocker/blob/main/package-lock.json "package-lock.json") | [npm update](https://github.com/davmlaw/they_live_adblocker/commit/fb4cc8e393cf760848fe75d9397496d086141b94 "npm update") | Sep 1, 2025 | | [package.json](https://github.com/davmlaw/they_live_adblocker/blob/main/package.json "package.json") | [package.json](https://github.com/davmlaw/they_live_adblocker/blob/main/package.json "package.json") | [npm update](https://github.com/davmlaw/they_live_adblocker/commit/fb4cc8e393cf760848fe75d9397496d086141b94 "npm update") | Sep 1, 2025 | | View all files |

Repository files navigation

They Live Adblocker

[](https://github.com/davmlaw/they_live_adblocker#they-live-adblocker)

Image 4: They Live billboards
Image 4: They Live billboards

A fork of uBlock Origin Lite that, instead of _hiding_ cosmetically-blocked ads, replaces them with white tiles bearing slogans from John Carpenter's 1988 film _They Live_: OBEY, CONSUME, WATCH TV, SLEEP, SUBMIT, CONFORM, STAY ASLEEP, BUY, WORK, NO INDEPENDENT THOUGHT, DO NOT QUESTION AUTHORITY.

Each blocked ad gets a single phrase, picked at random from the list.

The idea is from a blog post I wrote in 2015 (and never got around to building): _They Live adblock mode_.

Screenshot

[](https://github.com/davmlaw/they_live_adblocker#screenshot)

Image 5: reddit_screenshot
Image 5: reddit_screenshot

Install

[](https://github.com/davmlaw/they_live_adblocker#install)

Download the latest `uBOLite_theylive.chromium.zip` from the Releases page, extract it, then in Chromium / Chrome / Brave / Edge:

  1. Open chrome://extensions
  2. Toggle Developer mode on (top-right)
  3. Click Load unpacked and select the extracted folder

Keep the folder around — the extension is loaded from that path.

Make it actually replace ads

[](https://github.com/davmlaw/they_live_adblocker#make-it-actually-replace-ads)

By default uBO Lite uses Basic filtering mode, which blocks ads at the network layer. Network-blocked ads never produce a DOM element, so there's nothing to "they-live-ify" — you just get empty space, as with normal uBO Lite. To see the OBEY tiles:

  1. Click the uBO Lite toolbar icon → cog (⚙) → Dashboard.
  2. Set the filtering mode for the sites you care about to Optimal or Complete.
  3. Reload.

Building from source

[](https://github.com/davmlaw/they_live_adblocker#building-from-source)

Requires Node 22.

undefinedshell git clone --recursive https://github.com/davmlaw/they_live_adblocker cd they_live_adblocker/uBlock nvm use 22 # or otherwise ensure Node >= 22 tools/make-mv3.sh chromium # or: firefox | edge | safari undefined

The packaged extension lands in uBlock/dist/build/uBOLite.chromium/ — load it as an unpacked extension.

How it works

[](https://github.com/davmlaw/they_live_adblocker#how-it-works)

uBO Lite's cosmetic filtering normally injects CSS like selector { display: none !important } to hide matched ad elements. This fork patches those injection sites to instead apply a white-box mask with a ::after overlay whose content is read from a data-ubol-they-live attribute, then walks the DOM (with a MutationObserver for late-loaded ads) to tag each matched element with a random phrase from the list.

Touched files in the `davmlaw/uBlock` submodule:

  • platform/mv3/extension/js/scripting/they-live.js_(new)_ — phrase list, CSS generator, DOM tagging
  • platform/mv3/extension/js/scripting/css-{specific,generic,procedural-api}.js — call sites
  • platform/mv3/extension/js/scripting-manager.js — registers they-live.js ahead of consumers

Caveats

[](https://github.com/davmlaw/they_live_adblocker#caveats)

  • Personal hobby fork; not an official uBlock Origin product. Don't file uBO issues against this.
  • Forcing previously-hidden elements visible can occasionally shift page layout where the site's CSS assumed the ad slot collapsed.
  • Custom user-defined cosmetic filters still hide normally (no OBEY treatment).
  • Network-blocked ads (most of uBO Lite's blocking) don't get replaced — only cosmetic-filtered ones do.

License

[](https://github.com/davmlaw/they_live_adblocker#license)

GPL-3.0, same as upstream uBlock Origin / uBO Lite.

About

Replace Ads with They Live style slogans

Resources

Readme

License

GPL-3.0 license

Uh oh!

There was an error while loading. Please reload this page.

Activity

Stars

**124** stars

Watchers

**0** watching

Forks

**1** fork

Report repository

[Releases 1](https://github.com/davmlaw/they_live_adblocker/releases)

v0.1.0-theylive — first build Latest May 11, 2026

[Packages 0](https://github.com/users/davmlaw/packages?repo_name=they_live_adblocker)

No packages published

[Contributors 0](https://github.com/davmlaw/they_live_adblocker/graphs/contributors)

No contributors

Languages

  • JavaScript 97.0%
  • CSS 2.7%
  • Other 0.3%

Footer

[](https://github.com/) © 2026 GitHub,Inc.

Footer navigation

You can’t perform that action at this time.