[GH-ISSUE #1039] Support lists sites in format *.txt, *.lst for split-tunnel sites from https://antifilter.download/ #345

Open
opened 2026-10-13 20:19:26 +00:00 by bsakaguchi · 15 comments
Owner

Originally created by @gegemon2012 on GitHub (Sep 3, 2024).
Original GitHub issue: https://github.com/amnezia-vpn/amnezia-client/issues/1039

Здравствуйте!
Подскажите пожалуйста как мне импортировать в список раздельного туннелирования сайтов списки с сайта https://antifilter.download/ в формате *.lst и *.txt. Тут подробнее - https://community.antifilter.download/ о списках.
И почему по умолчанию такой функционал отсутствует в программе, ведь программа позициорируется как для обывателя, а списки сохраняет и импортирует только в экзотическом формате *.json.
Может можно как-то сконвертировать lst/txt в json? Или дополнить функционал программы на распознование таких списков в формате *.lst и *.txt. Я сам не программист но не думаю что это такая уж и сложная задача. А еще лучше если программа могла сама парсить списки с сайта и обновлять их в автоматическом режиме.

Originally created by @gegemon2012 on GitHub (Sep 3, 2024). Original GitHub issue: https://github.com/amnezia-vpn/amnezia-client/issues/1039 Здравствуйте! Подскажите пожалуйста как мне импортировать в список раздельного туннелирования сайтов списки с сайта https://antifilter.download/ в формате *.lst и *.txt. Тут подробнее - https://community.antifilter.download/ о списках. И почему по умолчанию такой функционал отсутствует в программе, ведь программа позициорируется как для обывателя, а списки сохраняет и импортирует только в экзотическом формате *.json. Может можно как-то сконвертировать lst/txt в json? Или дополнить функционал программы на распознование таких списков в формате *.lst и *.txt. Я сам не программист но не думаю что это такая уж и сложная задача. А еще лучше если программа могла сама парсить списки с сайта и обновлять их в автоматическом режиме.
Author
Owner

@ChattBot commented on GitHub (Sep 4, 2024):

##код на python
import json
with open("./ip.lst") as input_file:
    with open("./ip_lst.json","w") as output_file:
        json.dump([line.strip() for line in input_file.readlines()],output_file)

ip_lst.json

<!-- gh-comment-id:2328848006 --> @ChattBot commented on GitHub (Sep 4, 2024): ```python ##код на python import json with open("./ip.lst") as input_file: with open("./ip_lst.json","w") as output_file: json.dump([line.strip() for line in input_file.readlines()],output_file) ``` [ip_lst.json](https://github.com/user-attachments/files/16870502/ip_lst.json)
Author
Owner

@gegemon2012 commented on GitHub (Sep 4, 2024):

##код на python
import json
with open("./ip.lst") as input_file:
    with open("./ip_lst.json","w") as output_file:
        json.dump([line.strip() for line in input_file.readlines()],output_file)

ip_lst.json

Спасибо за помощь! Но я не программист и осваивать python ради конвертации распространенных форматов листов... Я то может и освою а вот другого, массового пользователя это отпугнет от amneziavpn. Прошу все-таки авторов программы добавить поддержку списков в формате *.lst и *.txt.

<!-- gh-comment-id:2329006020 --> @gegemon2012 commented on GitHub (Sep 4, 2024): > ```python > ##код на python > import json > with open("./ip.lst") as input_file: > with open("./ip_lst.json","w") as output_file: > json.dump([line.strip() for line in input_file.readlines()],output_file) > ``` > > [ip_lst.json](https://github.com/user-attachments/files/16870502/ip_lst.json) Спасибо за помощь! Но я не программист и осваивать python ради конвертации распространенных форматов листов... Я то может и освою а вот другого, массового пользователя это отпугнет от amneziavpn. Прошу все-таки авторов программы добавить поддержку списков в формате *.lst и *.txt.
Author
Owner

@gegemon2012 commented on GitHub (Sep 4, 2024):

GoogleIPsFULL.json
Рано порадовался... Неработает этот список, импортируется но не отображаются ip-адреса да и структура приложенного к настоящему письму работающего списка отличается. Более того я почему то подумал что этот список будет применяться к настройкам сервера, а оказывается настройки применяются к VPN-клиенту. По истине было бы гениально если бы этот список применялся на сервере! Надеюсь что дождусь такой реализации.

<!-- gh-comment-id:2329558364 --> @gegemon2012 commented on GitHub (Sep 4, 2024): [GoogleIPsFULL.json](https://github.com/user-attachments/files/16874300/GoogleIPsFULL.json) Рано порадовался... Неработает этот список, импортируется но не отображаются ip-адреса да и структура приложенного к настоящему письму работающего списка отличается. Более того я почему то подумал что этот список будет применяться к настройкам сервера, а оказывается настройки применяются к VPN-клиенту. По истине было бы гениально если бы этот список применялся на сервере! Надеюсь что дождусь такой реализации.
Author
Owner

@Ilya87 commented on GitHub (Sep 5, 2024):

В зависимости от используемого протокола будут разные настройки. Если хотите самый продвинутый «необнаружаемый» протокол VPN, используйте Xray.

<!-- gh-comment-id:2330821378 --> @Ilya87 commented on GitHub (Sep 5, 2024): В зависимости от используемого протокола будут разные настройки. Если хотите самый продвинутый «необнаружаемый» протокол VPN, используйте Xray.
Author
Owner

@ChattBot commented on GitHub (Sep 5, 2024):

import json

with open("./ipsum.lst") as input_file:
    with open("./ipsum_lst.json", "w") as output_file:
        json.dump(
            [{"hostname": line.strip()} for line in input_file.readlines()],
            output_file,
            indent=2,
        )

На длинных списках клиент виснет

allyouneed_lst.json
ip_lst.json
ipresolve_lst.json
ipsum_lst.json
subnet_lst.json

<!-- gh-comment-id:2331332223 --> @ChattBot commented on GitHub (Sep 5, 2024): ```python import json with open("./ipsum.lst") as input_file: with open("./ipsum_lst.json", "w") as output_file: json.dump( [{"hostname": line.strip()} for line in input_file.readlines()], output_file, indent=2, ) ``` На длинных списках клиент виснет [allyouneed_lst.json](https://github.com/user-attachments/files/16892917/allyouneed_lst.json) [ip_lst.json](https://github.com/user-attachments/files/16892918/ip_lst.json) [ipresolve_lst.json](https://github.com/user-attachments/files/16892919/ipresolve_lst.json) [ipsum_lst.json](https://github.com/user-attachments/files/16892921/ipsum_lst.json) [subnet_lst.json](https://github.com/user-attachments/files/16892922/subnet_lst.json)
Author
Owner

@gegemon2012 commented on GitHub (Sep 6, 2024):

На длинных списках клиент виснет

Спасибо большое!
Да, с такими списками клиент наглухо виснет... Я так понимаю что лучше бы эти списки обрабатывались на VPS сервере. Хотелось бы, чтобы добавили данную функциональность!

<!-- gh-comment-id:2333966611 --> @gegemon2012 commented on GitHub (Sep 6, 2024): > На длинных списках клиент виснет Спасибо большое! Да, с такими списками клиент наглухо виснет... Я так понимаю что лучше бы эти списки обрабатывались на VPS сервере. Хотелось бы, чтобы добавили данную функциональность!
Author
Owner

@samdark commented on GitHub (Oct 3, 2024):

https://github.com/samdark/plain_to_amnezia in case you want to convert from plain text to amnezia JSON.

<!-- gh-comment-id:2391945990 --> @samdark commented on GitHub (Oct 3, 2024): https://github.com/samdark/plain_to_amnezia in case you want to convert from plain text to amnezia JSON.
Author
Owner

@RudySource commented on GitHub (Oct 28, 2024):

import json
import os

# Укажите полный путь к вашему файлу
input_file_path = "D:\FIXAllHaudi\lists\list-apple.txt"  # Замените на ваш путь
output_file_path = "D:\FIXAllHaudi\lists\list-apple.json"  # Замените на ваш путь

# Проверка существования входного файла
if not os.path.exists(input_file_path):
    print(f"Файл не найден: {input_file_path}")
else:
    with open(input_file_path) as input_file:
        with open(output_file_path, "w") as output_file:
            json.dump(
                [{"hostname": line.strip()} for line in input_file.readlines()],
                output_file,
                indent=2,
            )
    print(f"Конвертация завершена. Результат сохранен в: {output_file_path}")
Не благодарите) 
<!-- gh-comment-id:2442643631 --> @RudySource commented on GitHub (Oct 28, 2024): ``` import json import os # Укажите полный путь к вашему файлу input_file_path = "D:\FIXAllHaudi\lists\list-apple.txt" # Замените на ваш путь output_file_path = "D:\FIXAllHaudi\lists\list-apple.json" # Замените на ваш путь # Проверка существования входного файла if not os.path.exists(input_file_path): print(f"Файл не найден: {input_file_path}") else: with open(input_file_path) as input_file: with open(output_file_path, "w") as output_file: json.dump( [{"hostname": line.strip()} for line in input_file.readlines()], output_file, indent=2, ) print(f"Конвертация завершена. Результат сохранен в: {output_file_path}") ``` Не благодарите)
Author
Owner

@Asofwar commented on GitHub (Nov 20, 2024):

import json

with open("./ipsum.lst") as input_file:
    with open("./ipsum_lst.json", "w") as output_file:
        json.dump(
            [{"hostname": line.strip()} for line in input_file.readlines()],
            output_file,
            indent=2,
        )

На длинных списках клиент виснет

allyouneed_lst.json ip_lst.json ipresolve_lst.json ipsum_lst.json subnet_lst.json

Вам нужен только 1 список allyouneed

<!-- gh-comment-id:2488400611 --> @Asofwar commented on GitHub (Nov 20, 2024): > ```python > import json > > with open("./ipsum.lst") as input_file: > with open("./ipsum_lst.json", "w") as output_file: > json.dump( > [{"hostname": line.strip()} for line in input_file.readlines()], > output_file, > indent=2, > ) > ``` > > На длинных списках клиент виснет > > [allyouneed_lst.json](https://github.com/user-attachments/files/16892917/allyouneed_lst.json) [ip_lst.json](https://github.com/user-attachments/files/16892918/ip_lst.json) [ipresolve_lst.json](https://github.com/user-attachments/files/16892919/ipresolve_lst.json) [ipsum_lst.json](https://github.com/user-attachments/files/16892921/ipsum_lst.json) [subnet_lst.json](https://github.com/user-attachments/files/16892922/subnet_lst.json) Вам нужен только 1 список allyouneed
Author
Owner

@gegemon2012 commented on GitHub (Nov 21, 2024):

import json

with open("./ipsum.lst") as input_file:
    with open("./ipsum_lst.json", "w") as output_file:
        json.dump(
            [{"hostname": line.strip()} for line in input_file.readlines()],
            output_file,
            indent=2,
        )

На длинных списках клиент виснет
allyouneed_lst.json ip_lst.json ipresolve_lst.json ipsum_lst.json subnet_lst.json

Вам нужен только 1 список allyouneed

Так даже только на нем виснет...

<!-- gh-comment-id:2491692799 --> @gegemon2012 commented on GitHub (Nov 21, 2024): > > ```python > > import json > > > > with open("./ipsum.lst") as input_file: > > with open("./ipsum_lst.json", "w") as output_file: > > json.dump( > > [{"hostname": line.strip()} for line in input_file.readlines()], > > output_file, > > indent=2, > > ) > > ``` > > > > > > > > > > > > > > > > > > > > > > > > На длинных списках клиент виснет > > [allyouneed_lst.json](https://github.com/user-attachments/files/16892917/allyouneed_lst.json) [ip_lst.json](https://github.com/user-attachments/files/16892918/ip_lst.json) [ipresolve_lst.json](https://github.com/user-attachments/files/16892919/ipresolve_lst.json) [ipsum_lst.json](https://github.com/user-attachments/files/16892921/ipsum_lst.json) [subnet_lst.json](https://github.com/user-attachments/files/16892922/subnet_lst.json) > > Вам нужен только 1 список allyouneed Так даже только на нем виснет...
Author
Owner

@Dartanum commented on GitHub (Jan 22, 2025):

import json

with open("./ipsum.lst") as input_file:
with open("./ipsum_lst.json", "w") as output_file:
json.dump(
[{"hostname": line.strip()} for line in input_file.readlines()],
output_file,
indent=2,
)

На длинных списках клиент виснет
allyouneed_lst.json ip_lst.json ipresolve_lst.json ipsum_lst.json subnet_lst.json

Вам нужен только 1 список allyouneed

Так даже только на нем виснет...

А как боролись с зависанием? У меня после импорта большого файла виснет намертво - пробовал чистить кеш, руками удалять из AppData/Local, переустанавливал приложение - все равно виснет

<!-- gh-comment-id:2606878771 --> @Dartanum commented on GitHub (Jan 22, 2025): > > > import json > > > > > > with open("./ipsum.lst") as input_file: > > > with open("./ipsum_lst.json", "w") as output_file: > > > json.dump( > > > [{"hostname": line.strip()} for line in input_file.readlines()], > > > output_file, > > > indent=2, > > > ) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > На длинных списках клиент виснет > > > [allyouneed_lst.json](https://github.com/user-attachments/files/16892917/allyouneed_lst.json) [ip_lst.json](https://github.com/user-attachments/files/16892918/ip_lst.json) [ipresolve_lst.json](https://github.com/user-attachments/files/16892919/ipresolve_lst.json) [ipsum_lst.json](https://github.com/user-attachments/files/16892921/ipsum_lst.json) [subnet_lst.json](https://github.com/user-attachments/files/16892922/subnet_lst.json) > > > > > > Вам нужен только 1 список allyouneed > > Так даже только на нем виснет... А как боролись с зависанием? У меня после импорта большого файла виснет намертво - пробовал чистить кеш, руками удалять из AppData/Local, переустанавливал приложение - все равно виснет
Author
Owner

@gegemon2012 commented on GitHub (Jan 29, 2025):

import json
with open("./ipsum.lst") as input_file:
with open("./ipsum_lst.json", "w") as output_file:
json.dump(
[{"hostname": line.strip()} for line in input_file.readlines()],
output_file,
indent=2,
)
На длинных списках клиент виснет
allyouneed_lst.json ip_lst.json ipresolve_lst.json ipsum_lst.json subnet_lst.json

Вам нужен только 1 список allyouneed

Так даже только на нем виснет...

А как боролись с зависанием? У меня после импорта большого файла виснет намертво - пробовал чистить кеш, руками удалять из AppData/Local, переустанавливал приложение - все равно виснет

Никак... Вопрос может решиться только на уровне разработчиков, а я не разработчик.

<!-- gh-comment-id:2621403270 --> @gegemon2012 commented on GitHub (Jan 29, 2025): > > > > import json > > > > with open("./ipsum.lst") as input_file: > > > > with open("./ipsum_lst.json", "w") as output_file: > > > > json.dump( > > > > [{"hostname": line.strip()} for line in input_file.readlines()], > > > > output_file, > > > > indent=2, > > > > ) > > > > На длинных списках клиент виснет > > > > [allyouneed_lst.json](https://github.com/user-attachments/files/16892917/allyouneed_lst.json) [ip_lst.json](https://github.com/user-attachments/files/16892918/ip_lst.json) [ipresolve_lst.json](https://github.com/user-attachments/files/16892919/ipresolve_lst.json) [ipsum_lst.json](https://github.com/user-attachments/files/16892921/ipsum_lst.json) [subnet_lst.json](https://github.com/user-attachments/files/16892922/subnet_lst.json) > > > > > > > > > Вам нужен только 1 список allyouneed > > > > > > Так даже только на нем виснет... > > А как боролись с зависанием? У меня после импорта большого файла виснет намертво - пробовал чистить кеш, руками удалять из AppData/Local, переустанавливал приложение - все равно виснет Никак... Вопрос может решиться только на уровне разработчиков, а я не разработчик.
Author
Owner

@RebeSPB commented on GitHub (Jun 14, 2025):

Никак... Вопрос может решиться только на уровне разработчиков, а я не разработчик.

Сидишь и ноешь. Не разработчик? Код в открытом доступе, добавь. Разраб посмотрит и внесёт, если правки годные.
json - элементарный текстовый с некоторыми базовыми правилами записи.
Твоя задача - раздельное туннелирование адресов - давно разобратая на хабре. Кратко: нужно два vps, один будет в России, через него идёт весь траффик, а так же на нём обрабатывается весь траффик и происходит перенаправление в сеть либо на второй vps. На второй vps идёт лишь траффик, который блокируется в России, поэтому его и требуется направлять через иное государство.
Загугли, да будет тебе счастье.
Нытики кругом.

<!-- gh-comment-id:2972890690 --> @RebeSPB commented on GitHub (Jun 14, 2025): > > Никак... Вопрос может решиться только на уровне разработчиков, а я не разработчик. Сидишь и ноешь. Не разработчик? Код в открытом доступе, добавь. Разраб посмотрит и внесёт, если правки годные. json - элементарный текстовый с некоторыми базовыми правилами записи. Твоя задача - раздельное туннелирование адресов - давно разобратая на хабре. Кратко: нужно два vps, один будет в России, через него идёт весь траффик, а так же на нём обрабатывается весь траффик и происходит перенаправление в сеть либо на второй vps. На второй vps идёт лишь траффик, который блокируется в России, поэтому его и требуется направлять через иное государство. Загугли, да будет тебе счастье. Нытики кругом.
Author
Owner

@DenisLopatin commented on GitHub (Oct 12, 2026):

14. > Никак... Вопрос может решиться только на уровне разработчиков, а я не разработчик.

 Сидишь и ноешь. Не разработчик? Код в открытом доступе, добавь. Разраб посмотрит и внесёт, если правки годные.
 json - элементарный текстовый с некоторыми базовыми правилами записи.
 Твоя задача - раздельное туннелирование адресов - давно разобратая на хабре. Кратко: нужно два vps, один будет в России, через него идёт весь траффик, а так же на нём обрабатывается весь траффик и происходит перенаправление в сеть либо на второй vps. На второй vps идёт лишь траффик, который блокируется в России, поэтому его и требуется направлять через иное государство.
 Загугли, да будет тебе счастье.
 Нытики кругом.

ничего больше им не реализовать? им бабки платят за это

<!-- gh-comment-id:6129892735 --> @DenisLopatin commented on GitHub (Oct 12, 2026): > 14\. > Никак... Вопрос может решиться только на уровне разработчиков, а я не разработчик. > > > Сидишь и ноешь. Не разработчик? Код в открытом доступе, добавь. Разраб посмотрит и внесёт, если правки годные. > json - элементарный текстовый с некоторыми базовыми правилами записи. > Твоя задача - раздельное туннелирование адресов - давно разобратая на хабре. Кратко: нужно два vps, один будет в России, через него идёт весь траффик, а так же на нём обрабатывается весь траффик и происходит перенаправление в сеть либо на второй vps. На второй vps идёт лишь траффик, который блокируется в России, поэтому его и требуется направлять через иное государство. > Загугли, да будет тебе счастье. > Нытики кругом. ничего больше им не реализовать? им бабки платят за это
Author
Owner

@DenisLopatin commented on GitHub (Oct 12, 2026):

если еще кому будет актуально, то вот как заполнить формат json, код из deepseek, добавите свои домены и запустите в консоли, например, python3 example.py, где example.py:

import socket
import json

domains = [
    "gosuslugi.ru",
    "nalog.gov.ru",
    "mos.ru",
    "sfr.gov.ru",
    "online.sberbank.ru",
    "sberbank.ru",
    "tbank.ru"
]

result = []
for domain in domains:
    try:
        ip = socket.gethostbyname(domain)
    except Exception:
        ip = ""
    result.append({"hostname": domain, "ip": ip})

print(json.dumps(result, indent=2, ensure_ascii=False))

потом импортируете полученный файл

<!-- gh-comment-id:6129921907 --> @DenisLopatin commented on GitHub (Oct 12, 2026): если еще кому будет актуально, то вот как заполнить формат json, код из deepseek, добавите свои домены и запустите в консоли, например, `python3 example.py`, где `example.py`: ```bash import socket import json domains = [ "gosuslugi.ru", "nalog.gov.ru", "mos.ru", "sfr.gov.ru", "online.sberbank.ru", "sberbank.ru", "tbank.ru" ] result = [] for domain in domains: try: ip = socket.gethostbyname(domain) except Exception: ip = "" result.append({"hostname": domain, "ip": ip}) print(json.dumps(result, indent=2, ensure_ascii=False)) ``` потом импортируете полученный файл
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
amnezia-vpn/amnezia-client#345
No description provided.