Skip to content

Instantly share code, notes, and snippets.

@LeiHao0
Last active May 19, 2023 19:09
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save LeiHao0/4a4235df0fb97d559f9876eab0ebb5a4 to your computer and use it in GitHub Desktop.
Save LeiHao0/4a4235df0fb97d559f9876eab0ebb5a4 to your computer and use it in GitHub Desktop.
Batch add block list in Adguard Home
// https://github.com/AdguardTeam/AdGuardHome/blob/master/openapi/openapi.yaml
old_blist = [];
blist = [
"https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Spam/hosts",
"https://v.firebog.net/hosts/static/w3kbl.txt",
"https://raw.githubusercontent.com/matomo-org/referrer-spam-blacklist/master/spammers.txt",
"https://someonewhocares.org/hosts/zero/hosts",
"https://raw.githubusercontent.com/VeleSila/yhosts/master/hosts",
"https://winhelp2002.mvps.org/hosts.txt",
"https://v.firebog.net/hosts/neohostsbasic.txt",
"https://raw.githubusercontent.com/RooneyMcNibNug/pihole-stuff/master/SNAFU.txt",
"https://paulgb.github.io/BarbBlock/blacklists/hosts-file.txt",
"https://adaway.org/hosts.txt",
"https://v.firebog.net/hosts/AdguardDNS.txt",
"https://v.firebog.net/hosts/Admiral.txt",
"https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt",
"https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt",
"https://v.firebog.net/hosts/Easylist.txt",
"https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext",
"https://raw.githubusercontent.com/FadeMind/hosts.extras/master/UncheckyAds/hosts",
"https://raw.githubusercontent.com/bigdargon/hostsVN/master/hosts",
"https://raw.githubusercontent.com/jdlingyu/ad-wars/master/hosts",
"https://v.firebog.net/hosts/Easyprivacy.txt",
"https://v.firebog.net/hosts/Prigent-Ads.txt",
"https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.2o7Net/hosts",
"https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt",
"https://hostfiles.frogeye.fr/firstparty-trackers-hosts.txt",
"https://www.github.developerdan.com/hosts/lists/ads-and-tracking-extended.txt",
"https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/android-tracking.txt",
"https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV.txt",
"https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/AmazonFireTV.txt",
"https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-blocklist.txt",
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareHosts.txt",
"https://osint.digitalside.it/Threat-Intel/lists/latestdomains.txt",
"https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt",
"https://v.firebog.net/hosts/Prigent-Crypto.txt",
"https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Risk/hosts",
"https://bitbucket.org/ethanr/dns-blacklists/raw/8575c9f96e5b4a1308f2f12394abd86d0927a4a0/bad_lists/Mandiant_APT1_Report_Appendix_D.txt",
"https://phishing.army/download/phishing_army_blocklist_extended.txt",
"https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-malware.txt",
"https://v.firebog.net/hosts/RPiList-Malware.txt",
"https://v.firebog.net/hosts/RPiList-Phishing.txt",
"https://raw.githubusercontent.com/Spam404/lists/master/main-blacklist.txt",
"https://raw.githubusercontent.com/AssoEchap/stalkerware-indicators/master/generated/hosts",
"https://urlhaus.abuse.ch/downloads/hostfile/",
"https://malware-filter.gitlab.io/malware-filter/phishing-filter-hosts.txt",
"https://v.firebog.net/hosts/Prigent-Malware.txt",
"https://zerodot1.gitlab.io/CoinBlockerLists/hosts_browser",
];
alist = [
"https://raw.githubusercontent.com/anudeepND/whitelist/master/domains/whitelist.txt",
"https://raw.githubusercontent.com/anudeepND/whitelist/master/domains/referral-sites.txt",
"https://raw.githubusercontent.com/anudeepND/whitelist/master/domains/optional-list.txt",
];
url = "http://127.0.0.1/control/filtering/";
function updateList(list, mode) {
path = mode == "rm" ? "remove_url" : "add_url";
whitelist = mode == "whitelist" ? true : false;
for (i in list) {
l = list[i];
fetch(url + path, {
method: "POST",
body:
mode == "rm"
? JSON.stringify({
url: l,
whitelist: whitelist,
})
: JSON.stringify({
name: l.substr(-10),
url: l,
whitelist: whitelist,
}),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.text())
.then((data) => console.log(data));
}
}
updateList(old_blist, "rm");
updateList(blist, "add");
updateList(alist, "whitelist");
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager
import ssl
import requests
import json
## CHANGE HERE ##
# ip address of AdGuard Home
# "http(s)://<adguardHomeIp:<port>"
host = "http://192.168.2.2:80"
proxies = {
"http": "http://127.0.0.1:7890",
"https": "http://127.0.0.1:7890",
}
# user name
userName = ""
# password
password = ""
# block list
# taken from Wally3K's Firebog https://firebog.net/
urls = [
"https://raw.githubusercontent.com/PolishFiltersTeam/KADhosts/master/KADhosts.txt",
"https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Spam/hosts",
"https://v.firebog.net/hosts/static/w3kbl.txt",
"https://raw.githubusercontent.com/matomo-org/referrer-spam-blacklist/master/spammers.txt",
"https://someonewhocares.org/hosts/zero/hosts",
"https://raw.githubusercontent.com/VeleSila/yhosts/master/hosts",
"https://winhelp2002.mvps.org/hosts.txt",
"https://v.firebog.net/hosts/neohostsbasic.txt",
"https://raw.githubusercontent.com/RooneyMcNibNug/pihole-stuff/master/SNAFU.txt",
"https://paulgb.github.io/BarbBlock/blacklists/hosts-file.txt",
"https://adaway.org/hosts.txt",
"https://v.firebog.net/hosts/AdguardDNS.txt",
"https://v.firebog.net/hosts/Admiral.txt",
"https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt",
"https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt",
"https://v.firebog.net/hosts/Easylist.txt",
"https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext",
"https://raw.githubusercontent.com/FadeMind/hosts.extras/master/UncheckyAds/hosts",
"https://raw.githubusercontent.com/bigdargon/hostsVN/master/hosts",
"https://raw.githubusercontent.com/jdlingyu/ad-wars/master/hosts",
"https://v.firebog.net/hosts/Easyprivacy.txt",
"https://v.firebog.net/hosts/Prigent-Ads.txt",
"https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.2o7Net/hosts",
"https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt",
"https://hostfiles.frogeye.fr/firstparty-trackers-hosts.txt",
"https://www.github.developerdan.com/hosts/lists/ads-and-tracking-extended.txt",
"https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/android-tracking.txt",
"https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV.txt",
"https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/AmazonFireTV.txt",
"https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-blocklist.txt",
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareHosts.txt",
"https://osint.digitalside.it/Threat-Intel/lists/latestdomains.txt",
"https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt",
"https://v.firebog.net/hosts/Prigent-Crypto.txt",
"https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Risk/hosts",
"https://bitbucket.org/ethanr/dns-blacklists/raw/8575c9f96e5b4a1308f2f12394abd86d0927a4a0/bad_lists/Mandiant_APT1_Report_Appendix_D.txt",
"https://phishing.army/download/phishing_army_blocklist_extended.txt",
"https://malware-filter.gitlab.io/malware-filter/phishing-filter-hosts.txt",
"https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-malware.txt",
"https://v.firebog.net/hosts/RPiList-Malware.txt",
"https://v.firebog.net/hosts/RPiList-Phishing.txt",
"https://raw.githubusercontent.com/Spam404/lists/master/main-blacklist.txt",
"https://raw.githubusercontent.com/AssoEchap/stalkerware-indicators/master/generated/hosts",
"https://urlhaus.abuse.ch/downloads/hostfile/",
"https://v.firebog.net/hosts/Prigent-Malware.txt",
"https://zerodot1.gitlab.io/CoinBlockerLists/hosts_browser",
]
allow_urls = [
"https://raw.githubusercontent.com/anudeepND/whitelist/master/domains/whitelist.txt",
"https://raw.githubusercontent.com/anudeepND/whitelist/master/domains/referral-sites.txt",
"https://raw.githubusercontent.com/anudeepND/whitelist/master/domains/optional-list.txt",
]
############ End Edits #################
# Open TLSv1 Adapter
class MyAdapter(HTTPAdapter):
def init_poolmanager(self, connections, maxsize, block=False):
self.poolmanager = PoolManager(num_pools=connections,
maxsize=maxsize,
block=block,
ssl_version=ssl.PROTOCOL_TLSv1)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0', 'Content-Type':'application/json'}
s = requests.Session()
s.mount(host, MyAdapter())
x = s.post(host + "/control/login", json.dumps({"name": userName, "password" : password}), headers=headers, proxies=proxies)
print(x.text)
for u in urls:
filterObj = json.dumps({'url':u, "name":u,"whitelist":False})
print(filterObj)
x = s.post(host + "/control/filtering/add_url", data = filterObj, headers=headers)
print(x.text)
for u in allow_urls:
filterObj = json.dumps({'url':u, "name":u,"whitelist":True})
print(filterObj)
x = s.post(host + "/control/filtering/add_url", data = filterObj, headers=headers)
print(x.text)
# help from
# https://stackoverflow.com/questions/30946370/using-requests-to-login-to-a-website-that-has-javascript-login-form
# https://stackoverflow.com/questions/33818206/python-login-into-a-website-with-javascript-form
@vannimb
Copy link

vannimb commented Oct 4, 2022

Dear @LeiHao0 ,
thanks for your work, i find the gistfile1.py very useful!
apparently adguardhome had some recent chnages regarding the json requests that make your script not working...
Here the adguardhome changelog link: https://github.com/AdguardTeam/AdGuardHome/blob/master/CHANGELOG.md#v010714---2022-09-29

i get this kind of output with the current script version:
{"url": "https://urlhaus.abuse.ch/downloads/hostfile/", "name": "https://urlhaus.abuse.ch/downloads/hostfile/", "whitelist": false}
Forbidden

Would it be possible for you to update the gistfile1.py to make it work again?

many thanks

@vannimb
Copy link

vannimb commented Oct 5, 2022

it was enough to modify the following line and the script started working again:
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0', 'Content-Type':'application/json'}

@LeiHao0
Copy link
Author

LeiHao0 commented Oct 5, 2022

Hi @vannimb, thank you for your commands. You can try the javascript version. It's more straightforward and can be executed with the chrome console.

@vannimb
Copy link

vannimb commented Oct 5, 2022

Hello @LeiHao0, i tried from the chrome console as you suggested the items are added but i get the following error:
Uncaught (in promise) SyntaxError: Unexpected token 'F', "Filter URL"... is not valid JSON

should the js version be modiified for this latest adguard version?

@LeiHao0
Copy link
Author

LeiHao0 commented Nov 20, 2022

@vannimb fixed.

the SyntaxError caused by AdGuardHome API response is a string instead of a json. This means the list still can be added in for the previous version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment