Have you ever had to disable adblock on a website? Thanks to no-adblock-killer, keep enjoying the ad-free website!
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.
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)
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. |
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. |
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
tofalse
, 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 becamefunction(a)
in a different webpack build.
4οΈβ£ Try Your Fix.
I update the config.json by respecting this template.
Inpm run build:config
to build a new config.build.json.
Inpm 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.
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. |
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. |
Go HERE and explain me what's wrong. π€π»