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.
35 stars 5 forks source link

ruleset Adguard #1

Open burjuyz opened 10 months ago

burjuyz commented 10 months ago

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

Dunamis4tw commented 10 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 10 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 10 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 10 months ago

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

Dunamis4tw commented 10 months ago

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

burjuyz commented 10 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 10 months ago

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

burjuyz commented 10 months ago

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

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