/no-adb-killer

🎉 Avoid the Adblock killers, enjoy the ad-free website again!

Primary LanguageTypeScript

👈🏻🚫 No AdBlock-Killer

Have you ever had to disable adblock on a website? Thanks to no-adblock-killer, keep enjoying the ad-free website!

IMAGE ALT TEXT HERE

🎉 Instalation Is So Easy !

chrome Chrome Extension

🎛 How does it works ?

Adblock-killers are located in website source code, each using a different means to detect them.

This extension simply modifies a small part of the source code (1-10 chars) where the adblock is detected.


There is also more options avaibles to disable adblock-killer.

Check the config.json or npm run config:display to see what's changing on which website.

✅ Tests

npm test
🗑  Clearing
📝 Building scripts
🈺 Minifying configuration
✅ 'config.min.json' file is now minfified.
📎 Building extension
🕑 Testing


  #CONFIG
    ✓ should read config
    ✓ should have correct config file
    ✓ should get the initial script (719ms)
    ✓ should read the replaced script
    ✓ should have unique name
    ✓ should have correct differences
    ✓ should have correct chrome pattern


  7 passing (744ms)

⌨️ Usefull Commands

Name Command Description
start npm start Start the construction in watch mode. Any changes on src/ will automatically rebuild the extension.
🔧 development mode
build npm run build Build the project.
📦 production mode
config npm run build:config Build the config.json.
This is not an automated task, so if you edit config.json please run it.
display npm run config:display Display the config.build.json user-friendly.

👀 Quick View Of The Architecture

Path Description
dist/ 📝 Where scripts are built and ready to run.
app/ 🖥 The built chrome extension.
static/config.json 💾 Where actions of each site are written.
See here to know how it's written.
static/config.build.json The built config of config.json.
⛔️ Don't edit it, it'll be updated automatically.

🌈 Contributor Friendly

How Can I Contribute ? (my advice 😇)

1️⃣ Find the file where is written "the adblock killer".

I usualy use chrome devtools/networks and simply search for something likes "adblock" in javascript sources.

2️⃣ Then find the specific "code instruction" that spot your adblock.

For example for tf1.fr, I found this line that informs the website (if "e == true"), that user has an extension adblock by debugging the javascript code.

this.adblockIsActivated(function(e){if(e) //...

By modifying the variable e to false, I disable the adblock killer.

3️⃣ Write Your configuration.

I write a RegExp that can replace that instruction:
/this\.adblockIsActivated\(function\((\w+)\)\{if\(\w\)/
    (Written as: {"from": "this\\.adblockIsActivated\\(function\\((\\w+)\\)\\{if\\(\\w\\)"} in the config.json)

I write the replaced content:
"this.adblockIsActivated(function($1){if(false)"
    (Written as: {"to": "this.adblockIsActivated(function($1){if(false)"} in the config.json)

Note: Use the RegExp Block to match any variable name. Variable name can be changes during minor patch by the website owner. Eg. function(e) can became function(a) in a different webpack build.

4️⃣ Try Your Fix.

I update the config.json by respecting this template.
I npm run build:config to build a new config.build.json.
I npm start to build the extension.
Finaly I load the builded extension to test it in my browser.

5️⃣ Make Your PR 🙂

Fork the repository if isn't yet done.
Push your contributions. And wait feedback ! 🎉


📃 Configuration (config.json)

The config.json contains an array of configuration.

Configuration Template

Key Type Value Example Description
action string "replace"
"redirect"
"cancel"
"replace" The action of your configuration.
name string any "6play" The website name.
pattern string any "https://www.6play.fr/player-fw-*" The Chrome Pattern URL.
url string any "https://www.6play.fr/player-fw-d18b7b5d33.bundle.js" The URL of the adblock killer script.

Replace Configuration

Key Type Example Description
from string (RegExp) "this\\.adblockIsActivated\\(function\\((\\w+)\\)\\{if\\(\\w+\\)" The excaped RegExp of the instruction to be replace.
to string "this.adblockIsActivated(function($1){if(false)" The replaced string to disable the adblock killer.

⚠️ Any Issue ? Find a website with an adblock killer ?

Go HERE and explain me what's wrong. 🤙🏻

✅ Todo

  • Add Redirect and Cancel action documentation.