Dunamis4tw / generate-geoip-geosite

Generates GeoIP, Geosite and Rule-Set files (used by Sing-Box to configure routes) from lists of IP addresses and domains.
24 stars 4 forks source link

ruleset Adguard #1

Open burjuyz opened 8 months ago

burjuyz commented 8 months ago

Можно ли каким-то образом использовать списки того-же Adguard чтоб создать ruleset с правилами блокировки рекламы, чтоб этот список был адаптирован под РУ регион? если да не могли бы вы пожалуйста расписать алгоритм как это создать самому...

Dunamis4tw commented 8 months ago

Можно использовать любые списки, главное привести их в такой вид, чтобы один домен был в одной строчке. Например:

domain1.ru
domain2.ru
domain3.ru

Этот список доменов необходимо сохранить в файл с названием "include-domain-adguard.lst" в любую папку, например "input". Затем запускаем утилиту: generate-geoip-geosite -i ./input -o ./output и в папке "output" вы получите всевозможные варианты (srs,json,geosite) Это самый простой ручной вариант. Вам необходимо будет найти где публикуются домены РУ региона Adguard'а и вручную подготовить этот список.

Второй вариант, можно написать функцию, которая будет парсить списки, публикуемые Adguard'ом. Тогда, можно будет настроить Source-файл, где будет указана ссылка на список и тип контента, который как раз и будет указывать программе, что этот список нужно распарсить нашей новой функцией. Вот, по аналогии, source-файл, скачивающий и парсящий списки для антизапрета:

[
  {
    "url": "https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv",
    "contentType": "CsvDumpAntizapret",
    "category": "antizapret"
  }
]

И вот как выглядит функция, которая парсит этот список. Данный вариант позволит нам в автоматическом режиме скачивать актуальные списки, парсить их в обычные списки и составлять актуальные Rule-set'ы и geosite'ы.

В целом, ранее я хотел попробовать парсить какие-нибудь списки популярных блокировщиков, (uBlock Origin, adBlock, Adguard). Но как то руки не дошли) Сейчас я посмотрел какие списки публикует uBlock и Adguard, пока не очень понятно что из этого стоит парсить. Если вы разберётесь и подскажете какие именно списки стоит брать у этих блокировщиков, я буду вам признателен и постараюсь написать функцию, которая будет парсить эти списки.

burjuyz commented 8 months ago

Мое мнение что достаточно было бы 2-3 списков основных 1- https://4pda.to/forum/index.php?showtopic=275091&st=8000#Spoil-89665467-4 - здесь автор парсит сразу с нескольких источников, хоорошее решение. 2 - https://raw.githubusercontent.com/im-sm/Pi-hole-Torrent-Blocklist/main/all-torrent-websites.txt - для тех кто хочет блочить торренты.

Был бы вам очень признателен если сделаете автоматизацию и публикацию готовых списков чтоб их можно было использовать в синг-боксе. Отдельное спасибо за подробное объяснение каким образом делать самостоятельно.

Dunamis4tw commented 8 months ago

Релизнул версию 1.2.0, в которой добавил возможность парсить hosts файлы. Теперь можно парсить все файлы из комментария на 4pda, ссылку на который вы предоставили. В проекте добавил sourceAdAway.json, где все есть все источники из комментария. Чтобы сгенерировать, достаточно ввести generate-geoip-geosite -s sourceAdAway.json -i ./adaway -o ./adaway. Со второй ссылкой всё очень просто, функционал парсинга данной ссылки уже есть. Пример Source файла может выглядеть следующим образом:

[
  {
    "url": "https://raw.githubusercontent.com/im-sm/Pi-hole-Torrent-Blocklist/main/all-torrent-websites.txt",
    "contentType": "DefaultList",
    "category": "torrent_websites"
  }
]

Пожалуй тоже добавлю в проект и этот source файл :)

Dunamis4tw commented 8 months ago

Насчёт публикации готовых списков, было желание создать отдельный репозиторий, где раз в день эти списки по указанным источникам будут генерироваться, и загружаться на github. Но пока руки не дошли до этого)

Dunamis4tw commented 8 months ago

Добавил sourceTorrents.json. Пользоваться им также просто.

burjuyz commented 8 months ago

Великолепно, что вы реализовали все хотелки, пока столкнулся с мелкими косяками, не могу понять в чем дело. Можем связаться через почту burjuyz AT почта гугла.

INFO 2024/01/14 14:48:57 ==== READING SOURCE FILE ==== INFO 2024/01/14 14:48:57 sources file 'sourceAdAway.json' successfully read INFO 2024/01/14 14:48:57 sources file 'sourceAdAway.json' successfully deserialized INFO 2024/01/14 14:48:57 ==== DOWNLOADING ==== INFO 2024/01/14 14:48:57 downloading the file 'https://schakal.ru/hosts/hosts.txt'... INFO 2024/01/14 14:48:58 parsing the file... ERROR 2024/01/14 14:48:58 main.go:39: invalid data handler type: HostsFile

Dunamis4tw commented 8 months ago

Ошибка "invalid data handler type: HostsFile" связана с тем, что программа не знает функцию которая как раз таки обрабатывает hosts файл. В связи с чем возник вопрос, вы точно обновились до v1.2.0? :D

burjuyz commented 8 months ago

вы точно обновились до v1.2.0? :D

Чукча не читатель чукча писатель -))