diff --git a/Alternate versions Anti-Malware List/AGHtest.py b/Alternate versions Anti-Malware List/AGHtest.py deleted file mode 100644 index 9284c222f..000000000 --- a/Alternate versions Anti-Malware List/AGHtest.py +++ /dev/null @@ -1,1808 +0,0 @@ -import requests -import re - -SOURCES = ['https://raw.githubusercontent.com/DandelionSprout/adfilt/master/AdGuard%20Home%20Compilation%20List/TopDescription.notlist', 'https://easylist-downloads.adblockplus.org/easylist_noelemhide.txt', 'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt', 'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2020.txt', 'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt', 'https://filters.adtidy.org/extension/ublock/filters/2_without_easylist.txt', 'https://filters.adtidy.org/extension/ublock/filters/16.txt', 'https://www.i-dont-care-about-cookies.eu/abp/', 'https://easylist-downloads.adblockplus.org/easylistgermany.txt', 'https://raw.githubusercontent.com/abp-filters/abp-filters-anti-cv/master/english.txt', 'https://raw.githubusercontent.com/abp-filters/abp-filters-anti-cv/master/french.txt', 'https://easylist-downloads.adblockplus.org/antiadblockfilters.txt', 'https://easylist-downloads.adblockplus.org/advblock.txt', 'https://easylist-downloads.adblockplus.org/Liste_AR.txt', 'https://easylist-downloads.adblockplus.org/easylistspanish.txt'] - -UNSUPPORTED_AGH = ['##', '@#', '#?#', '#%#', '!+', 'domain=', 'generichide', '$ghide', ',ghide', '$csp', 'xmlhttprequest', '$xhr', '$stylesheet', '$elemhide', '$inline-script', '$other', '$~object', 'redirect=', '#$#', '$domain', ',domain', '[Adblock Plus 2.0]', 'CV-', '$csp'] -UNSUPPORTED_IP = ['##', '@#', '#?#', '#%#', 'domain=', 'generichide', '$csp', 'badfilter', 'xmlhttprequest', '$xhr', '$stylesheet', '$elemhide', '$inline-script', '$other', '$~object', 'redirect=', '#$#', '!+'] - -OUTPUT = 'xyzzyx.txt' -OUTPUT_AGH = 'AdGuardHomeCompilationList.txt' -OUTPUT_IP = 'AdGuardHomeCompilationListIPs.txt' - -# function that downloads the filter list -def download_filters() -> str: - text = '' - for url in SOURCES: - r = requests.get(url) - text += r.text - return text - -def is_supported_agh(line) -> bool: - for token in UNSUPPORTED_AGH: - if token in line: - return False - - return True - -# function that prepares the filter list for AdGuard Home -def prepare_agh(lines) -> str: - text = '' - - previous_line = None - - for line in lines: - - if line == previous_line: - continue - - line = re.sub( - r"([$,])third-party", - "", - line - ) - - line = re.sub( - r"([$,])~third-party", - "", - line - ) - - line = re.sub( - r"([$,])3p", - "", - line - ) - - line = re.sub( - r"([$,])first-party", - "", - line - ) - - line = re.sub( - r"([$,])1p", - "", - line - ) - - line = re.sub( - r"([$,])image", - "", - line - ) - - line = re.sub( - r"([$,])media", - "", - line - ) - - line = re.sub( - r"([$,])script", - "", - line - ) - - line = re.sub( - r"([$,])popup", - "", - line - ) - - line = re.sub( - r"([$,])popunder", - "", - line - ) - - line = re.sub( - r"([$,])document", - "", - line - ) - - line = re.sub( - r"([$,])doc", - "", - line - ) - - line = re.sub( - r"([$,])subdocument", - "", - line - ) - - line = re.sub( - r"([$,])object", - "", - line - ) - - line = re.sub( - r"([$,])~object-subrequest", - "", - line - ) - - line = re.sub( - r"([$,])frame", - "", - line - ) - - line = re.sub( - r"([$,])all", - "", - line - ) - - line = re.sub( - r",important", - "$important", - line - ) - - line = re.sub( - r",domain=~?in-addr\.arpa", - "", - line - ) - - line = re.sub( - r".*\^[*$,][ac-hj-z?].*", - "", - line - ) - - line = re.sub( - r".*\.js$", - "", - line - ) - - line = re.sub( - r"^(\.[a-z0-9.]{4,60}\.)$", - r"||*\1", - line - ) - - line = re.sub( - r"^[&+=?^_%].*", - "", - line - ) - - line = re.sub( - r"^([a-z])", - r"||\1", - line - ) - - line = re.sub( - r"^[0-9].*", - "", - line - ) - - line = re.sub( - r"^!#.*", - "", - line - ) - - line = re.sub( - r"^\|[a-z0-9].*", - "", - line - ) - - line = re.sub( - r"^;[a-z0-9].*", - "", - line - ) - - line = re.sub( - r"^Amasty_.*", - "", - line - ) - - line = re.sub( - r"^\*.*", - "", - line - ) - - line = re.sub( - r"^\\.*", - "", - line - ) - - line = re.sub( - r"^:[a-z0-9?!].*", - "", - line - ) - - line = re.sub( - r"^@[a-z0-9].*", - "", - line - ) - - line = re.sub( - r"@?@?\|\|.*/.*", - r"", - line - ) - - line = re.sub( - r"\^,badfilter", - r"^badfilter", - line - ) - - line = re.sub( - r"\^badfilter", - r"^$badfilter", - line - ) - - line = re.sub( - r".*\^\*.*", - r"", - line - ) - - line = re.sub( - r".*\*\^[a-z0-9?].*", - r"", - line - ) - - line = re.sub( - r".*\^&.*", - r"", - line - ) - - line = re.sub( - r".*\|.*/.*", - r"", - line - ) - - line = re.sub( - r".*\*[&?@].*", - r"", - line - ) - - line = re.sub( - r"^!$", - r"", - line - ) - - line = re.sub( - r"^@@/.*", - r"", - line - ) - - line = re.sub( - r"^[,=^?~].*", - r"", - line - ) - - line = re.sub( - r"^! \|.*", - r"", - line - ) - - line = re.sub( - r"\.php(\||\?)$", - r"", - line - ) - - line = re.sub( - r"^\|\|goo\.gl\^$", - r"", - line - ) - - line = re.sub( - r"^\|\|9anime\.\*\^$", - r"", - line - ) - - line = re.sub( - r"^\|\|play-asia\.com\^$", - r"", - line - ) - - line = re.sub( - r"^\|\|dmcdn\.net\^$", - r"", - line - ) - - line = re.sub( - r"^\|\|canyoublockit\.com\^$", - r"", - line - ) - - line = re.sub( - r"^\|\|overclockers\.co\.uk\^$", - r"", - line - ) - - line = re.sub( - r"^\|\|opensubtitles\.com\^$", - r"", - line - ) - - line = re.sub( - r"^\|\|bit\.ly\^$", - r"", - line - ) - - line = re.sub( - r"/\^https\?:\\/\\/([0-9]{1,3})\\\.([0-9]{1,3})\\\.([0-9]{1,3})\\.\(\\d\)\{1,3\}\.\*\/", - r"://\1.\2.\3.\n@@://\1.\2.\3.*in-addr.arpa^", - line - ) - - line = re.sub( - r"\|\|([0-9][0-9]?[0-9]?)\.([0-9][0-9]?[0-9]?)\.([0-9][0-9]?[0-9]?)\.$", - r"://\1.\2.\3.\n@@://\1.\2.\3.*in-addr.arpa^", - line - ) - - line = re.sub( - r"\|\|([0-9][0-9]?[0-9]?)\.([0-9][0-9]?[0-9]?)\.$", - r"", - line - ) - - line = re.sub( - r"^! http.*", - r"", - line - ) - - line = re.sub( - r"^://.*/.*", - r"", - line - ) - - line = re.sub( - r".*104\\\.154\\\.\..*", - r"", - line - ) - - line = re.sub( - r"^/.*[a-z0-9]\\?/[a-z0-9\(].*", - r"", - line - ) - - line = re.sub( - r"\|\|.*_.*", - r"", - line - ) - - line = re.sub( - r"^/.*[a-z]\\/.*", - r"", - line - ) - - line = re.sub( - r"^/.*[a-z]\/.*", - r"", - line - ) - - line = re.sub( - r"^/[a-z0-9.*_/-]{1,70}/$", - r"", - line - ) - - line = re.sub( - r"^[a-z0-9@|].*\?.*", - r"", - line - ) - - line = re.sub( - r"^! Checksum:.*", - r"", - line - ) - - line = re.sub( - r".*\(update frequency\)", - r"", - line - ) - - line = re.sub( - r"^! 20(1|2).*", - r"", - line - ) - - line = re.sub( - r"^! Ref:.*", - r"", - line - ) - - line = re.sub( - r"^! #", - r"", - line - ) - - line = re.sub( - r"\*\^$", - r"*", - line - ) - - line = re.sub( - r"^\|\|\*\.", - r".", - line - ) - - line = re.sub( - r"\.\*$", - r".", - line - ) - - line = re.sub( - r"^[0-9]{1,5}$", - r"", - line - ) - - line = re.sub( - r"^[a-z0-9.-].*[/?_+=&]$", - r"", - line - ) - - line = re.sub( - r"^[a-z0-9.-].*[a-z0-9.-][/?_+=&][a-z0-9.$-].*", - r"", - line - ) - - line = re.sub( - r"^[@.].*[a-z0-9*]/.*", - r"", - line - ) - - line = re.sub( - r"^#\..*", - r"", - line - ) - - line = re.sub( - r".*[$,]jsinject$", - r"", - line - ) - - line = re.sub( - r".* - .*", - r"", - line - ) - - line = re.sub( - r"^![a-z0-9].*#.*", - r"", - line - ) - - line = re.sub( - r"^!\*(\*.*|$)", - r"", - line - ) - - line = re.sub( - r"^! ! \+.*", - r"", - line - ) - - line = re.sub( - r"^! AG_.*", - r"", - line - ) - - line = re.sub( - r"^\|.*:[0-9].*", - r"", - line - ) - - line = re.sub( - r"^[a-z0-9.-].*[a-z0-9.-][/?_+=&][a-zA-Z0-9.$*-].*", - r"", - line - ) - - line = re.sub( - r"^/.*[_?=/;~@%#+,].*", - r"", - line - ) - - line = re.sub( - r"^[|:/.-].*[%:].*", - r"", - line - ) - - line = re.sub( - r"^/[a-zA-Z0-9-]{1,100}[|^]$", - r"", - line - ) - - line = re.sub( - r"^\|\|(cdn77\.org|non\.li)\^$", - r"||\1^$dnstype=~CNAME", - line - ) - - line = re.sub( - r".*\.(png|jpe?g|gif|js|swf)($|\||\^)", - r"", - line - ) - - line = re.sub( - r"^#.*", - r"", - line - ) - - line = re.sub( - r"^\..*=.*", - r"", - line - ) - - line = re.sub( - r"^[:/].*[&?].*", - r"", - line - ) - - line = re.sub( - r"^[a-z0-9./|-].*\^=.*", - r"", - line - ) - - line = re.sub( - r"^://[1-2]?[0-9]?[0-9]\.[1-2]?[0-9]?[0-9]\.$", - r"", - line - ) - - line = re.sub( - r"^@@$", - r"", - line - ) - - line = re.sub( - r"\^,~", - r"^$~", - line - ) - - line = re.sub( - r".*\.,badfilter$", - r"", - line - ) - - line = re.sub( - r"([a-zA-Z0-9.,;'?!#_-]) $", - r"\1", - line - ) - - line = re.sub( - r"^! \*\*\* easylistgermany:easylistgermany/easylistgermany_allowlist_popup\.txt \*\*\*$", - r"! Title: ABP Filters", - line - ) - - line = re.sub( - r"^!-------------{1,}!$", - r"", - line - ) - - line = re.sub( - r"^[0-9]{1,} .*", - r"", - line - ) - - line = re.sub( - r"^[a-z0-9/-]{1,5}$", - r"", - line - ) - - line = re.sub( - r"^\.[a-zA-Z0-9]{3,}\|$", - r"", - line - ) - - line = re.sub( - r"^! E[nN][dD].*", - r"", - line - ) - - line = re.sub( - r"^! Expires: [0-9] .*", - r"", - line - ) - - line = re.sub( - r"^! (Good|Bad): .*", - r"", - line - ) - - line = re.sub( - r".* end ⬆️$", - r"", - line - ) - - line = re.sub( - r"^! This section contains the list of .*", - r"", - line - ) - - line = re.sub( - r"^! Note, .*", - r"", - line - ) - - line = re.sub( - r".*github\.com/NanoMeow/.*", - r"", - line - ) - - line = re.sub( - r" -{4,}(!?)$", - r" ---\1", - line - ) - - line = re.sub( - r"! ?-{3,}!?$", - r"", - line - ) - - line = re.sub( - r" ={4,}$", - r" ===", - line - ) - - line = re.sub( - r"^!-{4,}([ A-ZÉ])", - r"!---\1", - line - ) - - line = re.sub( - r"([a-z(])-{4,}!$", - r"\1---!", - line - ) - - line = re.sub( - r"^! Last modified: %timestamp%$", - r"", - line - ) - - line = re.sub( - r"\*\*\*! Title: ", - r"***\n! Title: ", - line - ) - - line = re.sub( - r"^! \*\*\* .*hide.*", - r"", - line - ) - - line = re.sub( - r"^! Smart ?JSON.*", - r"", - line - ) - - line = re.sub( - r"^! ! .*", - r"", - line - ) - - line = re.sub( - r" ", - r" ", - line - ) - - line = re.sub( - r"^! \*\*\* easylistspanish:easylistspanish(_adult/adult_thirdparty|/easylistspanish_allowlist_|_adult/adult_allowlist).*", - r"", - line - ) - - line = re.sub( - r"^! \*\*\* easylist:easylist_adult/adult_specific_block_popup\.txt \*\*\*", - r"", - line - ) - - line = re.sub( - r"^! \*\*\* easylist:easylist_adult/adult_allowlist.*", - r"", - line - ) - - line = re.sub( - r"^! \*\*\* easylistgermany:easylistgermany/(easylistgermany_allowlist|easylistgermany_specific_block_popup\.).*", - r"", - line - ) - - line = re.sub( - r"! \*\*\* antiadblockfilters.*(czech|dutch|finnish|hebrew|indonesian|latvian|romanian|slovak).*", - r"", - line - ) - - line = re.sub( - r"^\|\|51\.89\.187\.136\^$", - r"51.89.187.136/29", - line - ) - - line = re.sub( - r"^\|\|51\.89\.187\.1(3[7-9]|4[0-3])\^$", - r"", - line - ) - - line = re.sub( - r"^!$", - r"", - line - ) - - line = re.sub( - r"^/[a-zA-Z]{1,8}$", - r"", - line - ) - - line = re.sub( - r"^! .* Adblock Plus($| .*)", - r"", - line - ) - - line = re.sub( - r"^! .*CSS.*", - r"", - line - ) - - if is_supported_agh(line) and not line == '': - text += line + '\r\n' - - return text - -# ——— IP version ——— - -def is_supported_ip(line) -> bool: - for token in UNSUPPORTED_IP: - if token in line: - return False - - return True - - # function that prepares the filter list for AdGuard Home -def prepare_ip(lines) -> str: - text = '' - - previous_line = None - - for line in lines: - - if line == previous_line: - continue - - line = re.sub( - r"([$,])third-party", - "", - line - ) - - line = re.sub( - r"([$,])~third-party", - "", - line - ) - - line = re.sub( - r"([$,])3p", - "", - line - ) - - line = re.sub( - r"([$,])first-party", - "", - line - ) - - line = re.sub( - r"([$,])1p", - "", - line - ) - - line = re.sub( - r"([$,])image", - "", - line - ) - - line = re.sub( - r"([$,])media", - "", - line - ) - - line = re.sub( - r"([$,])script", - "", - line - ) - - line = re.sub( - r"([$,])popup", - "", - line - ) - - line = re.sub( - r"([$,])popunder", - "", - line - ) - - line = re.sub( - r"([$,])document", - "", - line - ) - - line = re.sub( - r"([$,])subdocument", - "", - line - ) - - line = re.sub( - r"([$,])~subdocument", - "", - line - ) - - line = re.sub( - r"([$,])object", - "", - line - ) - - line = re.sub( - r"([$,])~object-subrequest", - "", - line - ) - - line = re.sub( - r"([$,])frame", - "", - line - ) - - line = re.sub( - r"([$,])all", - "", - line - ) - - line = re.sub( - r",important", - "$important", - line - ) - - line = re.sub( - r".*\^[*$,].*", - "", - line - ) - - line = re.sub( - r".*\.js$", - "", - line - ) - - line = re.sub( - r"^[&+-.=?^_%].*", - "", - line - ) - - line = re.sub( - r"^([a-z])", - r"||\1", - line - ) - - line = re.sub( - r"^[0-9].*", - "", - line - ) - - line = re.sub( - r"^\|[a-z0-9].*", - "", - line - ) - - line = re.sub( - r"^;[a-z0-9].*", - "", - line - ) - - line = re.sub( - r"^Amasty_.*", - "", - line - ) - - line = re.sub( - r"^\*.*", - r"", - line - ) - - line = re.sub( - r"^\\.*", - r"", - line - ) - - line = re.sub( - r"^:.*", - r"", - line - ) - - line = re.sub( - r"^@[a-z0-9].*", - r"", - line - ) - - line = re.sub( - r"[@]?[@]?\|\|.*[a-zа-яみ].*", - r"", - line - ) - - line = re.sub( - r"! (Version: .*[a-z].*)", - r"# \1", - line - ) - - line = re.sub( - r"^![a-z #].*", - r"", - line - ) - - line = re.sub( - r"^!-.*", - r"", - line - ) - - line = re.sub( - r"^!$", - r"", - line - ) - - line = re.sub( - r"\[Adblock Plus 2\.0\]", - r"", - line - ) - - line = re.sub( - r"\|\|", - r"", - line - ) - - line = re.sub( - r"\^$", - r"", - line - ) - - line = re.sub( - r"^([0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?)\.$", - r"\1.0/24", - line - ) - - line = re.sub( - r"^([0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?)\.$", - r"", - line - ) - - line = re.sub( - r"^@@.*[a-z].*", - r"", - line - ) - - line = re.sub( - r"\[Adblock Plus 3\.4\]", - "! Title: IP Entries from Adblock Lists\n! Contains transformated entries from: EasyList, uBlock Filters, uBlock Filters - Badware Risks, AdGuard Base Filter, AdGuard French Filter, EasyList Germany, ABP Anti-Circumvention Filters, RU AdList, Liste AR, EasyList Spanish \n! Expires: 14 days\n! Licence: In accordance with the Dandelicence, the borrowed entries are considered to have been changed and reduced enough from their original lists, that they're counted as transformative work, meaning that creditation and seperate paragraphs are not necessary unless one of the lists' makers were to ask for such.\n! Description: This was made as a proof-of-concept to see if the IP-based entries of major adblock lists, could be used to create an IP adblocker list for IP blockers, despite how IP lists are normally only meant to block malware, E-mail spam, or port scanners.", - line - ) - - line = re.sub( - r"# Version: (.*)-.*", - r"! Version: \1-Alpha", - line - ) - - line = re.sub( - r"^!$", - r"", - line - ) - - line = re.sub( - r"^/.*[a-zA-Z0-9_=.,*?|^@&~+;-]$", - r"", - line - ) - - line = re.sub( - r"^/.*[\]]$", - r"", - line - ) - - line = re.sub( - r"^://.*/.*", - r"", - line - ) - - line = re.sub( - r".*104\\\.154\\\.\..*", - r"", - line - ) - - line = re.sub( - r"^/.*[a-z0-9]\\?/[a-z0-9\(].*", - r"", - line - ) - - line = re.sub( - r"^/\^[h.].*", - r"", - line - ) - - line = re.sub( - r"^/\\.*", - r"", - line - ) - - line = re.sub( - r"^/\(https\?:\\/\\/\)([0-9][0-9]?[0-9]?)\\.([0-9][0-9]?[0-9]?)\\.([0-9][0-9]?[0-9]?)\\.\..*/", - r"\1.\2.\3.0/24", - line - ) - - line = re.sub( - r"^/\(https\?:\\/\\/\)([0-9][0-9]?[0-9]?)\\.([0-9][0-9]?[0-9]?)\\.\..*/", - r"", - line - ) - - line = re.sub( - r"^/.*", - r"", - line - ) - - line = re.sub( - r"^@@.*", - r"", - line - ) - - line = re.sub( - r"^![a-zA-Z!*].*", - r"", - line - ) - - line = re.sub( - r"^[A-Za-z].*", - r"", - line - ) - - line = re.sub( - r"^ $", - r"", - line - ) - - line = re.sub( - r"^#[a-z0-9#].*", - "", - line - ) - - line = re.sub( - r".*dmcdn\..*", - r"", - line - ) - - line = re.sub( - r"^[a-z.#%$[].*", - r"", - line - ) - - line = re.sub( - r"([a-zA-Z0-9.,;'?!#_-]) $", - r"\1", - line - ) - - if is_supported_ip(line) and not line == '': - text += line + '\r\n' - - return text - -if __name__ == "__main__": - print('Starting the script') - text = download_filters() - lines = text.splitlines(False) - print('Total number of rules: ' + str(len(lines))) - - agh_filter = prepare_agh(lines) - ip_filter = prepare_ip(lines) - - with open(OUTPUT, "w") as text_file: - text_file.write(text) - - with open(OUTPUT_AGH, "w") as text_file: - text_file.write(agh_filter) - - with open(OUTPUT_IP, "w") as text_file: - text_file.write(ip_filter) - - print('The list versions have been generated.') - -# ———————————————————————————————————————————— - -import requests -import re - -SOURCES = ['https://raw.githubusercontent.com/DandelionSprout/adfilt/master/AdGuard%20Home%20Compilation%20List/TopDescription-Notifications.notlist', 'https://easylist-downloads.adblockplus.org/fanboy-notifications.txt', 'https://raw.githubusercontent.com/AdguardTeam/AdguardFilters/master/AnnoyancesFilter/Popups/sections/push-notifications_general.txt'] - -UNSUPPORTED_AGH = ['##', '@#', '#?#', '#%#', '!+', 'domain=', 'generichide', '$ghide', ',ghide', '$csp', 'xmlhttprequest', '$xhr', '$stylesheet', '$elemhide', '$inline-script', '$other', '$~object', 'redirect=', '#$#', '$domain', ',domain', '[Adblock Plus 2.0]', 'CV-'] - -OUTPUT = 'xyzzyxnotif.txt' -OUTPUT_AGH = 'AdGuardHomeCompilationList-Notifications.txt' - -# function that downloads the filter list -def download_filters() -> str: - text = '' - for url in SOURCES: - r = requests.get(url) - text += r.text - return text - -def is_supported_agh(line) -> bool: - for token in UNSUPPORTED_AGH: - if token in line: - return False - - return True - -# function that prepares the filter list for AdGuard Home -def prepare_agh(lines) -> str: - text = '' - - previous_line = None - - for line in lines: - - if line == previous_line: - continue - - line = re.sub( - r"([$,])third-party", - "", - line - ) - - line = re.sub( - r"([$,])~third-party", - "", - line - ) - - line = re.sub( - r"([$,])3p", - "", - line - ) - - line = re.sub( - r"([$,])first-party", - "", - line - ) - - line = re.sub( - r"([$,])1p", - "", - line - ) - - line = re.sub( - r"([$,])image", - "", - line - ) - - line = re.sub( - r"([$,])media", - "", - line - ) - - line = re.sub( - r"([$,])script", - "", - line - ) - - line = re.sub( - r"([$,])popup", - "", - line - ) - - line = re.sub( - r"([$,])popunder", - "", - line - ) - - line = re.sub( - r"([$,])document", - "", - line - ) - - line = re.sub( - r"([$,])doc", - "", - line - ) - - line = re.sub( - r"([$,])subdocument", - "", - line - ) - - line = re.sub( - r"([$,])object", - "", - line - ) - - line = re.sub( - r"([$,])~object-subrequest", - "", - line - ) - - line = re.sub( - r"([$,])frame", - "", - line - ) - - line = re.sub( - r"([$,])all", - "", - line - ) - - line = re.sub( - r",important", - "$important", - line - ) - - line = re.sub( - r",domain=~?in-addr\.arpa", - "", - line - ) - - line = re.sub( - r"/\^https\?:\\/\\/([0-9]{1,3})\\\.([0-9]{1,3})\\\.([0-9]{1,3})\\.\(\\d\)\{1,3\}\.\*\/", - "\1.\2.\3.0/24", - line - ) - - line = re.sub( - r".*\^[*$,][ac-hj-z?].*", - "", - line - ) - - line = re.sub( - r".*\.js$", - "", - line - ) - - line = re.sub( - r"^(\.[a-z0-9.]{4,60}\.)$", - r"||*\1", - line - ) - - line = re.sub( - r"^[&+=?^_%].*", - "", - line - ) - - line = re.sub( - r"^([a-z])", - r"||\1", - line - ) - - line = re.sub( - r"^[0-9].*", - "", - line - ) - - line = re.sub( - r"^!#.*", - "", - line - ) - - line = re.sub( - r"^\|[a-z0-9].*", - "", - line - ) - - line = re.sub( - r"^;[a-z0-9].*", - "", - line - ) - - line = re.sub( - r"^Amasty_.*", - "", - line - ) - - line = re.sub( - r"^\*.*", - "", - line - ) - - line = re.sub( - r"^\\.*", - "", - line - ) - - line = re.sub( - r"^:[a-z0-9?!].*", - "", - line - ) - - line = re.sub( - r"^@[a-z0-9].*", - "", - line - ) - - line = re.sub( - r"@?@?\|\|.*/.*", - r"", - line - ) - - line = re.sub( - r"\^,badfilter", - r"^badfilter", - line - ) - - line = re.sub( - r"\^badfilter", - r"^$badfilter", - line - ) - - line = re.sub( - r".*\^\*.*", - r"", - line - ) - - line = re.sub( - r".*\*\^[a-z0-9?].*", - r"", - line - ) - - line = re.sub( - r".*\^&.*", - r"", - line - ) - - line = re.sub( - r".*\|.*/.*", - r"", - line - ) - - line = re.sub( - r".*\*[&?@].*", - r"", - line - ) - - line = re.sub( - r"^!$", - r"", - line - ) - - line = re.sub( - r"^@@/.*", - r"", - line - ) - - line = re.sub( - r"^[,=^?~].*", - r"", - line - ) - - line = re.sub( - r"^! \|.*", - r"", - line - ) - - line = re.sub( - r"\.php(\||\?)$", - r"", - line - ) - - line = re.sub( - r"^\|\|goo\.gl\^$", - r"", - line - ) - - line = re.sub( - r"^\|\|9anime\.\*\^$", - r"", - line - ) - - line = re.sub( - r"^\|\|play-asia\.com\^$", - r"", - line - ) - - line = re.sub( - r"\|\|([0-9][0-9]?[0-9]?)\.([0-9][0-9]?[0-9]?)\.([0-9][0-9]?[0-9]?)\.$", - r"://\1.\2.\3.\n@@://\1.\2.\3.*in-addr.arpa^", - line - ) - - line = re.sub( - r"\|\|([0-9][0-9]?[0-9]?)\.([0-9][0-9]?[0-9]?)\.$", - r"://\1.\2.\n@@://\1.\2.*in-addr.arpa^", - line - ) - - line = re.sub( - r"^! http.*", - r"", - line - ) - - line = re.sub( - r"^://.*/.*", - r"", - line - ) - - line = re.sub( - r".*104\\\.154\\\.\..*", - r"", - line - ) - - line = re.sub( - r"^/.*[a-z0-9]\\?/[a-z0-9\(].*", - r"", - line - ) - - line = re.sub( - r"\|\|.*_.*", - r"", - line - ) - - line = re.sub( - r"^/.*[a-z]\\/.*", - r"", - line - ) - - line = re.sub( - r"^/.*[a-z]\/.*", - r"", - line - ) - - line = re.sub( - r"^/[a-z0-9.*_/-]{1,70}/$", - r"", - line - ) - - line = re.sub( - r"^[a-z0-9@|].*\?.*", - r"", - line - ) - - line = re.sub( - r"^! Checksum:.*", - r"", - line - ) - - line = re.sub( - r".*\(update frequency\)", - r"", - line - ) - - line = re.sub( - r"^! 20(1|2).*", - r"", - line - ) - - line = re.sub( - r"^! Ref:.*", - r"", - line - ) - - line = re.sub( - r"^! #", - r"", - line - ) - - line = re.sub( - r"\*\^$", - r"*", - line - ) - - line = re.sub( - r"^\|\|\*\.", - r".", - line - ) - - line = re.sub( - r"\.\*$", - r".", - line - ) - - line = re.sub( - r"^[0-9]{1,5}$", - r"", - line - ) - - line = re.sub( - r"! Disabling of push-notifications", - r"! Title: AdGuard Annoyances Web Push\n! Homepage: https://github.com/AdguardTeam/AdguardFilters/tree/master/AnnoyancesFilter/sections\n! Sourced from: https://raw.githubusercontent.com/AdguardTeam/AdguardFilters/master/AnnoyancesFilter/sections/push-notifications.txt\n! Disabling of push-notifications", - line - ) - - line = re.sub( - r"^[a-z0-9.-].*[/?_+=&]$", - r"", - line - ) - - line = re.sub( - r"^[a-z0-9.-].*[a-z0-9.-][/?_+=&][a-z0-9.$-].*", - r"", - line - ) - - line = re.sub( - r"^/.*[_?=/;~@%#+,].*", - r"", - line - ) - - line = re.sub( - r"\^,~", - r"^$~", - line - ) - - line = re.sub( - r".*\.,badfilter$", - r"", - line - ) - - line = re.sub( - r".*dmcdn\..*", - r"", - line - ) - - line = re.sub( - r"([a-zA-Z0-9.,;'?!#_-]) $", - r"\1", - line - ) - - line = re.sub( - r"^(! This section contains )", - r"! Title: AdGuard Popups filter - Push notifications, specific\n\1", - line - ) - - line = re.sub( - r".*/,stylesheet$", - r"", - line - ) - - if is_supported_agh(line) and not line == '': - text += line + '\r\n' - - return text - -if __name__ == "__main__": - print('Starting the script') - text = download_filters() - lines = text.splitlines(False) - print('Total number of rules: ' + str(len(lines))) - - agh_filter = prepare_agh(lines) - - with open(OUTPUT, "w") as text_file: - text_file.write(text) - - with open(OUTPUT_AGH, "w") as text_file: - text_file.write(agh_filter) - - print('The notifications list version has been generated.') \ No newline at end of file