Super Simple Antifilter
Настало время модернизировать инструмент для генерации списков обхода блокировок. Давно планировал переписать его на Go, и наконец-то нашёл возможность воплотить эту идею в жизнь. В этом посте я расскажу о SSAntifilter — удобном и функциональном веб-приложении для автоматического скачивания, конвертации и обслуживания списков прокси из источников Antifilter и пользовательских списков.
SSAntifilter представляет собой мощный веб-инструмент, который автоматически загружает, конвертирует и предоставляет списки прокси в различных форматах, включая Clash, Shadowrocket и базы данных v2ray GeoIP/GeoSite.

Особенности
- 🔄 Автоматическое обновление: скачивает свежие списки с Antifilter каждые 12 часов
- 📝 Веб-редактор: редактирование списков прокси, доменов и IP через удобный веб-интерфейс
- 🌓 Тёмная/светлая тема: автоматическое переключение темы в зависимости от системных настроек
- 📊 Логи в реальном времени: мониторинг всех операций с живыми логами активности
- 🔒 Безопасность: доступ по паролю с шифрованием bcrypt
- 📱 Адаптивный интерфейс: удобен для мобильных устройств
- 🚀 Поддержка множества форматов:
- Текстовые списки Clash/Shadowrocket
- Конфигурации Clash YAML
- Базы данных v2ray GeoIP/GeoSite (.dat файлы)
Поддерживаемые источники
Списки IP Antifilter: allyouneed.lst
, community.lst
Списки доменов Antifilter: domains.lst
Пользовательские списки: прокси/прямые домены и IP-адреса
Быстрый старт
Использование Docker (рекомендуется)
Настройка HTTP
# Создание директории для данных
mkdir -p /data/ssantifilter/rawdata
chown -R 1000:1000 /data/ssantifilter
# Запуск контейнера
docker run -d \
--name ssantifilter \
--restart=unless-stopped \
-e PORT=8080 \
-e SESSION_SECRET_KEY=your-secret-key-here \
-v /data/ssantifilter/rawdata:/app/rawdata \
-p 8080:8080 \
zerolabnet/ssantifilter:latest
Настройка HTTPS с Let's Encrypt
Генерация SSL-сертификата:
# Укажите Lets Encrypt в качестве центра сертификации ACME
docker run --rm -it -v /data/acme:/acme.sh neilpang/acme.sh --set-default-ca --server letsencrypt
docker run --rm -it \
-v /data/acme:/acme.sh \
-p 80:80 \
neilpang/acme.sh \
--issue --standalone -d ssa.example.com --email [email protected] -k 2048
Установка разрешений:
mkdir -p /data/ssantifilter/rawdata
chown -R 1000:1000 /data/ssantifilter
chown -R 1000:1000 /data/acme/ssa.example.com
Запуск с HTTPS:
docker run -d \
--name ssantifilter \
--restart=unless-stopped \
-e PORT=443 \
-e USE_HTTPS=1 \
-e HTTPS_CERT_FILE=/acme/fullchain.cer \
-e HTTPS_KEY_FILE=/acme/ssa.example.com.key \
-e SESSION_SECRET_KEY=your-secret-key-here \
-v /data/acme/ssa.example.com:/acme:ro \
-v /data/ssantifilter/rawdata:/app/rawdata \
-p 443:443 \
zerolabnet/ssantifilter:latest
Сборка из исходного кода
# Клонирование репозитория
git clone https://github.com/zerolabnet/ssantifilter.git
cd ssantifilter
# Сборка Docker-образа
docker build --no-cache -t zerolabnet/ssantifilter:latest .
# Запуск контейнера
docker run -d \
--name ssantifilter \
--restart=unless-stopped \
-e PORT=8080 \
-e SESSION_SECRET_KEY=your-secret-key-here \
-v /data/ssantifilter/rawdata:/app/rawdata \
-p 8080:8080 \
zerolabnet/ssantifilter:latest
Переменные окружения
Переменная | Описание | По умолчанию | Обязательная |
---|---|---|---|
PORT |
Порт сервера | 8080 |
Нет |
SESSION_SECRET_KEY |
Ключ шифрования сессии | Автогенерация | Рекомендуется |
USE_HTTPS |
Включить HTTPS (установить 1 ) |
0 |
Нет |
HTTPS_CERT_FILE |
Путь к SSL-сертификату | - | При включённом HTTPS |
HTTPS_KEY_FILE |
Путь к приватному ключу SSL | - | При включённом HTTPS |
Использование
Доступ к веб-интерфейсу: откройте http://localhost:8080
(или ваш домен)
Вход в систему: используйте пароль, показанный в логах контейнера при первом запуске
Редактирование списков: используйте веб-редактор для изменения прокси/прямых доменов и IP
Скачивание списков: получайте сгенерированные списки через веб-интерфейс и вставляйте ссылки в конфигурацию программы для обхода блокировок
Доступные эндпоинты
Текстовые списки Clash/Shadowrocket
/antifilter-ip.list
- IP-адреса, заблокированные в России от сервиса Antifilter/antifilter-community-ip.list
- IP-адреса, поддерживаемые сообществом Antifilter/antifilter-community-domain.list
- Поддерживаемые сообществом Antifilter заблокированные домены/proxy-domain.list
- Пользовательские прокси-домены/direct-domain.list
- Пользовательские прямые домены/proxy-ip.list
- Пользовательские прокси-IP/direct-ip.list
- Пользовательские прямые IP
Конфигурации Clash YAML
/antifilter-ip.yaml
- IP-адреса, заблокированные в России от сервиса Antifilter/antifilter-community-ip.yaml
- IP-адреса, поддерживаемые сообществом Antifilter/antifilter-community-domain.yaml
- Поддерживаемые сообществом Antifilter заблокированные домены/proxy-domain.yaml
- Пользовательские прокси-домены/direct-domain.yaml
- Пользовательские прямые домены/proxy-ip.yaml
- Пользовательские прокси-IP/direct-ip.yaml
- Пользовательские прямые IP
Базы данных v2ray
/geoip.dat
- База данных GeoIP/geosite.dat
- База данных GeoSite
Категории списков v2ray v2rayGeoIPDat
Списки IP-адресов (geoip.dat)
antifilter-ip
- IP-адреса, заблокированные в России от сервиса Antifilterantifilter-community-ip
- IP-адреса, поддерживаемые сообществом Antifilterproxy-ip
- Пользовательские прокси-IPdirect-ip
- Пользовательские прямые IP
Списки доменов (geosite.dat)
antifilter-community-domain
- Поддерживаемые сообществом Antifilter заблокированные доменыproxy-domain
- Пользовательские прокси-доменыdirect-domain
- Пользовательские прямые домены
Примеры форматов файлов
Списки доменов
# Стандартные домены (будет использоваться сопоставление суффикса домена)
example.com
# С префиксами для расширенного сопоставления
domain:example.com # Сопоставление суффикса домена (может быть опущено, см. выше)
keyword:google # Сопоставление по ключевому слову
full:www.example.com # Полное сопоставление домена
Списки IP
# Отдельные IP
192.168.1.1
10.0.0.1
# CIDR-диапазоны
192.168.0.0/24
10.0.0.0/8
Сохранение данных
Приложение хранит данные в /app/rawdata
внутри контейнера. Подключите эту директорию для сохранения ваших пользовательских списков:
-v /data/ssantifilter/rawdata:/app/rawdata
Безопасность
- Все пароли хешируются с помощью bcrypt
- Сессионные куки только HTTP и безопасные
- Доступ к файлам ограничен назначенными директориями
- Поддержка HTTPS с пользовательскими сертификатами
Горячие клавиши
Ctrl+S
- Сохранить текущий файлCtrl+U
- Обновить списки Antifilter
Устранение неполадок
Контейнер не запускается
- Проверьте доступность порта:
netstat -tlnp | grep :8080
- Проверьте разрешения директории:
ls -la /data/ssantifilter
Проблемы с SSL-сертификатом
- Убедитесь, что файлы сертификата читаемы пользователем контейнера (UID 1000)
- Проверьте действительность сертификата:
openssl x509 -in cert.pem -text -noout
Списки не обновляются
- Проверьте интернет-соединение из контейнера
- Убедитесь в наличии достаточного дискового пространства