├── LICENSE ├── README.md ├── bin ├── WinDivert.dll ├── WinDivert64.sys ├── cygwin1.dll ├── quic_initial_www_google_com.bin ├── tls_clienthello_www_google_com.bin └── winws.exe ├── config ├── base_config.cfg ├── config_1.cfg ├── config_2.cfg ├── config_3.cfg ├── config_4.cfg ├── config_5.cfg ├── config_6.cfg └── config_7.cfg ├── core ├── func.py └── update.py ├── fonts ├── Dot-Matrix.ttf └── NType82-Regular.otf ├── icon.ico ├── icon.png ├── images ├── 1.png └── 2.png ├── main.py ├── modules ├── autostart_checkbox.py ├── autoupdate_checkbox.py ├── clickable_link.py ├── config_file_selector.py ├── connect_button.py ├── line_label.py └── window_controls.py ├── requirements.txt └── scr ├── config.cfg ├── ipset-discord.txt └── list-general.txt /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 BLOOM 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Line 2 | line - bypass dpi, multifunctional GUI for zapret 3 | 4 | ## Описание 5 | 6 | Line — это удобный и простой в использовании инструмент, который поможет вам обойти DPI и улучшить доступ к YouTube. Программа предоставляет графический интерфейс для [zapret](https://github.com/bol-van/zapret), разработанной [bol-van](https://github.com/bol-van), и добавляет новые функции, такие как автозапуск, автообновление и уникальная система конфигов. 7 | 8 | ![401000914-332924580b](https://github.com/user-attachments/assets/1aa4c9fc-2eae-4467-b38a-ce8ba9e63cb0) 9 | 10 | ## Основные Функции 11 | 12 | - **Автозапуск**: Line автоматически запускается вместе с Windows, так что вам не нужно каждый раз запускать программу вручную. 13 | - **Автообновление**: Line сама проверяет обновления и устанавливает их, так что у вас всегда будет последняя версия. 14 | - **Уникальная система конфигов**: Вы можете легко настроить параметры запуска winws.exe, основной части zapret, под свои нужды. 15 | - **Графический интерфейс**: Красивый и интуитивно понятный интерфейс, написанный на PySide6. 16 | 17 | ## Установка 18 | 19 | ### Требования 20 | - Python 3.10.6 21 | - Библиотеки: PySide6, psutil, requests, pywin32 22 | 23 | ### Установка из исходников 24 | 25 | 1. Скачайте исходный код с [GitHub репозитория](#). 26 | 2. Установите необходимые библиотеки: 27 | ```bash 28 | pip install -r requirements.txt 29 | ``` 30 | 3. Запустите программу: 31 | ```bash 32 | python main.py 33 | ``` 34 | 35 | ### Установка exe файла 36 | 1. Скачайте архив с последнего релиза [GitHub репозитория](https://github.com/Read1dno/Line/releases/tag/v1.0.2). 37 | 2. Разархивируйте папку line в любое место на ПК 38 | 3. Запустите exe файл в папке line. 39 | 40 | ## Безопасность 41 | PyInstaller: Антивирусы могут жаловаться на exe файл, так как PyInstaller имеет сигнатуры, которые не нравятся антивирусам. 42 | Виндрайвер: Моя программа использует виндрайвер, необходимый для работы zapret, который может быть определен как вирус, хотя он безопасен. 43 | 44 | ## Конфиги 45 | Если у вас не работает youtube/discord при включенной программе, вы уверенны что все установили правильно и в браузере поставили нужные флаги Kyber и QUIC в default (chrome://flags/), то попробуйте загрузить поочередно [конфиги](https://github.com/Read1dno/Line/tree/main/config). 46 | 47 | ### Порядок действий: 48 | 1. Выключите работу обхода: `connected -> connect` 49 | 2. Загрузите новый конфиг 50 | 3. Желательно перезапустите программу 51 | 52 | ## Ссылки 53 | Буду рад если зайдете в мои: 54 | 55 | [Discord](https://discord.gg/n89PDURbTg) 56 | [Telegram](https://t.me/bloomofficialyt) 57 | 58 | ## Лицензия 59 | Эта программа распространяется под лицензией MIT. Подробнее смотрите в файле LICENSE. 60 | -------------------------------------------------------------------------------- /bin/WinDivert.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Read1dno/Line/e2227cfba7453999fdc123628ffbdd7bfd612b34/bin/WinDivert.dll -------------------------------------------------------------------------------- /bin/WinDivert64.sys: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Read1dno/Line/e2227cfba7453999fdc123628ffbdd7bfd612b34/bin/WinDivert64.sys -------------------------------------------------------------------------------- /bin/cygwin1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Read1dno/Line/e2227cfba7453999fdc123628ffbdd7bfd612b34/bin/cygwin1.dll -------------------------------------------------------------------------------- /bin/quic_initial_www_google_com.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Read1dno/Line/e2227cfba7453999fdc123628ffbdd7bfd612b34/bin/quic_initial_www_google_com.bin -------------------------------------------------------------------------------- /bin/tls_clienthello_www_google_com.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Read1dno/Line/e2227cfba7453999fdc123628ffbdd7bfd612b34/bin/tls_clienthello_www_google_com.bin -------------------------------------------------------------------------------- /bin/winws.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Read1dno/Line/e2227cfba7453999fdc123628ffbdd7bfd612b34/bin/winws.exe -------------------------------------------------------------------------------- /config/base_config.cfg: -------------------------------------------------------------------------------- 1 | [Winws] 2 | command = %BIN%winws.exe --wf-tcp=80,443 --wf-udp=443,50000-50100 --filter-udp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-fake-quic=%BIN%quic_initial_www_google_com.bin --new --filter-udp=50000-50100 --ipset=%SCR%ipset-discord.txt --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-cutoff=d3 --dpi-desync-repeats=6 --new --filter-tcp=80 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --new --filter-tcp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split --dpi-desync-autottl=2 --dpi-desync-repeats=6 --dpi-desync-fooling=badseq --dpi-desync-fake-tls=%BIN%tls_clienthello_www_google_com.bin 3 | 4 | [Autostart] 5 | enabled = 0 6 | 7 | [Autoupdate] 8 | enabled = 0 9 | -------------------------------------------------------------------------------- /config/config_1.cfg: -------------------------------------------------------------------------------- 1 | [Winws] 2 | command = %BIN%winws.exe --wf-tcp=80,443 --wf-udp=443,50000-50100 --filter-udp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-fake-quic=%BIN%quic_initial_www_google_com.bin --new --filter-udp=50000-50100 --ipset=%SCR%ipset-discord.txt --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-cutoff=d3 --dpi-desync-repeats=6 --new --filter-tcp=80 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --new --filter-tcp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split --dpi-desync-autottl=5 --dpi-desync-repeats=6 --dpi-desync-fooling=badseq --dpi-desync-fake-tls=%BIN%tls_clienthello_www_google_com.bin 3 | 4 | [Autostart] 5 | enabled = 0 6 | 7 | [Autoupdate] 8 | enabled = 0 -------------------------------------------------------------------------------- /config/config_2.cfg: -------------------------------------------------------------------------------- 1 | [Winws] 2 | command = %BIN%winws.exe --wf-tcp=80,443 --wf-udp=443,50000-50100 --filter-udp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-fake-quic=%BIN%quic_initial_www_google_com.bin --new --filter-udp=50000-50100 --ipset=%SCR%ipset-discord.txt --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-cutoff=d3 --dpi-desync-repeats=6 --new --filter-tcp=80 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --new --filter-tcp=443 --hostlist=%SCR%list-general.txt --dpi-desync=split2 --dpi-desync-split-seqovl=652 --dpi-desync-split-pos=2 --dpi-desync-split-seqovl-pattern=%BIN%tls_clienthello_www_google_com.bin 3 | 4 | [Autostart] 5 | enabled = 0 6 | 7 | [Autoupdate] 8 | enabled = 0 9 | -------------------------------------------------------------------------------- /config/config_3.cfg: -------------------------------------------------------------------------------- 1 | [Winws] 2 | command = %BIN%winws.exe --wf-tcp=80,443 --wf-udp=443,50000-50100 --filter-udp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-fake-quic=%BIN%quic_initial_www_google_com.bin --new --filter-udp=50000-50100 --ipset=%SCR%ipset-discord.txt --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-cutoff=d3 --dpi-desync-repeats=6 --new --filter-tcp=80 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --new --filter-tcp=443 --hostlist=%SCR%list-general.txt --dpi-desync=split --dpi-desync-split-pos=1 --dpi-desync-autottl --dpi-desync-fooling=badseq --dpi-desync-repeats=8 3 | 4 | [Autostart] 5 | enabled = 0 6 | 7 | [Autoupdate] 8 | enabled = 0 9 | -------------------------------------------------------------------------------- /config/config_4.cfg: -------------------------------------------------------------------------------- 1 | [Winws] 2 | command = %BIN%winws.exe --wf-tcp=80,443 --wf-udp=443,50000-50100 --filter-udp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-fake-quic=%BIN%quic_initial_www_google_com.bin --new --filter-udp=50000-50100 --ipset=%SCR%ipset-discord.txt --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-cutoff=d3 --dpi-desync-repeats=8 --new --filter-tcp=80 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --new --filter-tcp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split2 --dpi-desync-repeats=6 --dpi-desync-fooling=md5sig --dpi-desync-fake-tls=%BIN%tls_clienthello_www_google_com.bin 3 | 4 | [Autostart] 5 | enabled = 0 6 | 7 | [Autoupdate] 8 | enabled = 0 9 | -------------------------------------------------------------------------------- /config/config_5.cfg: -------------------------------------------------------------------------------- 1 | [Winws] 2 | command = %BIN%winws.exe --wf-tcp=80,443 --wf-udp=443,50000-50100 --filter-udp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-fake-quic=%BIN%quic_initial_www_google_com.bin --new --filter-udp=50000-50100 --ipset=%SCR%ipset-discord.txt --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-cutoff=d3 --dpi-desync-repeats=6 --new --filter-tcp=80 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --new --filter-l3=ipv4 --filter-tcp=443 --dpi-desync=syndata 3 | 4 | [Autostart] 5 | enabled = 0 6 | 7 | [Autoupdate] 8 | enabled = 0 9 | -------------------------------------------------------------------------------- /config/config_6.cfg: -------------------------------------------------------------------------------- 1 | [Winws] 2 | command = %BIN%winws.exe --wf-tcp=80,443 --wf-udp=443,50000-50100 --filter-udp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-fake-quic=%BIN%quic_initial_www_google_com.bin --new --filter-udp=50000-50100 --ipset=%SCR%ipset-discord.txt --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-cutoff=d3 --dpi-desync-repeats=6 --new --filter-tcp=80 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --new --filter-tcp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake --dpi-desync-autottl=2 --dpi-desync-repeats=6 --dpi-desync-fooling=badseq --dpi-desync-fake-tls=%BIN%tls_clienthello_www_google_com.bin 3 | 4 | [Autostart] 5 | enabled = 0 6 | 7 | [Autoupdate] 8 | enabled = 0 9 | -------------------------------------------------------------------------------- /config/config_7.cfg: -------------------------------------------------------------------------------- 1 | [Winws] 2 | command = %BIN%winws.exe --wf-tcp=80,443 --wf-udp=443,50000-50100 --filter-udp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-fake-quic=%BIN%quic_initial_www_google_com.bin --new --filter-udp=50000-50100 --ipset=%SCR%ipset-discord.txt --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-cutoff=d3 --dpi-desync-repeats=6 --new --filter-tcp=80 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --new --filter-tcp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-fooling=md5sig --dpi-desync-fake-tls=%BIN%tls_clienthello_www_google_com.bin 3 | 4 | [Autostart] 5 | enabled = 0 6 | 7 | [Autoupdate] 8 | enabled = 0 9 | -------------------------------------------------------------------------------- /core/func.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import configparser 3 | import subprocess 4 | import shutil 5 | import psutil 6 | from win32com.client import Dispatch 7 | import os 8 | 9 | def toggle_connection(state): 10 | for proc in psutil.process_iter(['pid', 'name']): 11 | if proc.info['name'] == 'winws.exe': 12 | if not state: 13 | proc.terminate() 14 | return 15 | elif state: 16 | proc.terminate() 17 | break 18 | else: 19 | if state: 20 | start_winws() 21 | 22 | def stop_windivert_service(): 23 | try: 24 | process = subprocess.Popen('sc stop windivert', shell=True, creationflags=subprocess.CREATE_NO_WINDOW) 25 | process.wait() 26 | except Exception as e: 27 | pass 28 | 29 | def start_winws(): 30 | os.environ['BIN'] = 'bin' 31 | os.environ['SCR'] = 'scr' 32 | config = configparser.RawConfigParser() 33 | config.read('scr/config.cfg') 34 | 35 | command_template = config.get("Winws", "command") 36 | command = command_template.replace("%BIN%", 'bin' + os.sep) 37 | command = command.replace("%SCR%", 'scr' + os.sep) 38 | command = command.split() 39 | 40 | subprocess.Popen(command, creationflags=subprocess.CREATE_NO_WINDOW) 41 | 42 | def create_shortcut(target, shortcut_path): 43 | shell = Dispatch('WScript.Shell') 44 | shortcut = shell.CreateShortCut(shortcut_path) 45 | shortcut.Targetpath = target 46 | shortcut.WorkingDirectory = os.path.dirname(target) 47 | shortcut.save() 48 | 49 | def set_autostart(state): 50 | script_path = os.path.abspath(sys.executable) 51 | shortcut_path = os.path.join(os.path.expanduser("~"), "AppData", "Roaming", "Microsoft", "Windows", "Start Menu", "Programs", "Startup", "Line - bypass dpi.lnk") 52 | 53 | if state: 54 | create_shortcut(script_path, shortcut_path) 55 | else: 56 | if os.path.exists(shortcut_path): 57 | os.remove(shortcut_path) 58 | 59 | def select_config(file_path): 60 | file_name = os.path.basename(file_path) 61 | 62 | if file_name.endswith('.cfg'): 63 | config_path = 'scr/config.cfg' 64 | if os.path.exists(config_path): 65 | os.remove(config_path) 66 | shutil.copy(file_path, config_path) 67 | elif file_name.startswith('ipset-') and file_name.endswith('.txt'): 68 | ipset_path = 'scr/ipset-discord.txt' 69 | if os.path.exists(ipset_path): 70 | os.remove(ipset_path) 71 | shutil.copy(file_path, ipset_path) 72 | elif file_name.startswith('list-') and file_name.endswith('.txt'): 73 | list_path = 'scr/list-general.txt' 74 | if os.path.exists(list_path): 75 | os.remove(list_path) 76 | shutil.copy(file_path, list_path) 77 | else: 78 | pass 79 | -------------------------------------------------------------------------------- /core/update.py: -------------------------------------------------------------------------------- 1 | import os 2 | import requests 3 | 4 | def download_file(url, dest_path): 5 | response = requests.get(url) 6 | with open(dest_path, 'wb') as f: 7 | f.write(response.content) 8 | 9 | def check_and_update(): 10 | base_url = "https://raw.githubusercontent.com/bol-van/zapret-win-bundle/refs/heads/master/zapret-winws/" 11 | 12 | files_to_check = [ 13 | "cygwin1.dll", 14 | "quic_initial_www_google_com.bin", 15 | "tls_clienthello_www_google_com.bin", 16 | "WinDivert.dll", 17 | "WinDivert64.sys", 18 | "winws.exe" 19 | ] 20 | 21 | bin_path = 'bin' 22 | os.makedirs(bin_path, exist_ok=True) 23 | 24 | for file in files_to_check: 25 | file_path = os.path.join(bin_path, file) 26 | download_file(base_url + file, file_path) -------------------------------------------------------------------------------- /fonts/Dot-Matrix.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Read1dno/Line/e2227cfba7453999fdc123628ffbdd7bfd612b34/fonts/Dot-Matrix.ttf -------------------------------------------------------------------------------- /fonts/NType82-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Read1dno/Line/e2227cfba7453999fdc123628ffbdd7bfd612b34/fonts/NType82-Regular.otf -------------------------------------------------------------------------------- /icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Read1dno/Line/e2227cfba7453999fdc123628ffbdd7bfd612b34/icon.ico -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Read1dno/Line/e2227cfba7453999fdc123628ffbdd7bfd612b34/icon.png -------------------------------------------------------------------------------- /images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Read1dno/Line/e2227cfba7453999fdc123628ffbdd7bfd612b34/images/1.png -------------------------------------------------------------------------------- /images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Read1dno/Line/e2227cfba7453999fdc123628ffbdd7bfd612b34/images/2.png -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QSystemTrayIcon, QMenu, QMessageBox 3 | from PySide6.QtCore import Qt, QPoint 4 | from PySide6.QtGui import QCursor, QIcon, QAction 5 | from modules.line_label import LineLabel 6 | from modules.connect_button import ConnectButton 7 | from modules.autostart_checkbox import AutostartWidget 8 | from modules.autoupdate_checkbox import AutoupdateWidget 9 | from modules.window_controls import WindowControls 10 | from modules.config_file_selector import ConfigFileSelector 11 | from modules.clickable_link import ClickableLink 12 | import ctypes 13 | import core.func 14 | import core.update 15 | import configparser 16 | 17 | class MainWindow(QMainWindow): 18 | def __init__(self): 19 | super().__init__() 20 | self.setFixedSize(355, 510) 21 | self.setStyleSheet(""" 22 | MainWindow { 23 | background-color: rgb(40, 40, 40); 24 | border-radius: 17px; 25 | } 26 | """) 27 | self.setWindowFlags(Qt.FramelessWindowHint) 28 | self.setAttribute(Qt.WA_TranslucentBackground) 29 | self.central_widget = QWidget(self) 30 | self.central_widget.setStyleSheet("background-color: rgb(40, 40, 40); border-radius: 17px;") 31 | self.setCentralWidget(self.central_widget) 32 | self.dragPosition = QPoint() 33 | 34 | self.line_label = LineLabel(self.central_widget) 35 | self.connect_button = ConnectButton(self.central_widget) 36 | self.autostart_checkbox = AutostartWidget(self.central_widget) 37 | self.autoupdate_checkbox = AutoupdateWidget(self.central_widget) 38 | self.config_file_selector = ConfigFileSelector(self.central_widget) 39 | self.clickable_link = ClickableLink(self.central_widget) 40 | self.window_controls = WindowControls(self) 41 | self.window_controls.setGeometry(self.width() - 65, 2, 60, 30) 42 | 43 | self.connect_button.setCursor(QCursor(Qt.PointingHandCursor)) 44 | self.autostart_checkbox.setCursor(QCursor(Qt.PointingHandCursor)) 45 | self.autoupdate_checkbox.setCursor(QCursor(Qt.PointingHandCursor)) 46 | self.config_file_selector.setCursor(QCursor(Qt.PointingHandCursor)) 47 | self.window_controls.setCursor(QCursor(Qt.PointingHandCursor)) 48 | self.clickable_link.setCursor(QCursor(Qt.PointingHandCursor)) 49 | 50 | self.background_process = None 51 | 52 | self.tray_icon = QSystemTrayIcon(self) 53 | self.tray_icon.setIcon(QIcon('icon.png')) 54 | self.tray_icon.setToolTip('Line') 55 | self.tray_icon.setVisible(True) 56 | self.tray_menu = QMenu() 57 | self.show_action = QAction("Развернуть", self) 58 | self.quit_action = QAction("Закрыть", self) 59 | self.show_action.triggered.connect(self.show) 60 | self.quit_action.triggered.connect(self.quit_application) 61 | self.tray_menu.addAction(self.show_action) 62 | self.tray_menu.addAction(self.quit_action) 63 | self.tray_icon.setContextMenu(self.tray_menu) 64 | 65 | self.closing_from_tray = False 66 | 67 | def mousePressEvent(self, event): 68 | if event.button() == Qt.LeftButton: 69 | self.dragPosition = event.globalPosition().toPoint() - self.frameGeometry().topLeft() 70 | event.accept() 71 | 72 | def mouseMoveEvent(self, event): 73 | if event.buttons() == Qt.LeftButton: 74 | self.move(event.globalPosition().toPoint() - self.dragPosition) 75 | event.accept() 76 | 77 | def closeEvent(self, event): 78 | if not self.closing_from_tray and self.isVisible(): 79 | self.hide() 80 | self.tray_icon.showMessage( 81 | "Line", 82 | "The application continues to run in the background.", 83 | QSystemTrayIcon.Information, 84 | 2000 85 | ) 86 | event.ignore() 87 | else: 88 | event.accept() 89 | 90 | def quit_application(self): 91 | self.closing_from_tray = True 92 | core.func.toggle_connection(False) 93 | QApplication.instance().quit() 94 | 95 | def is_admin(): 96 | try: 97 | return ctypes.windll.shell32.IsUserAnAdmin() 98 | except: 99 | return False 100 | 101 | def run_as_admin(): 102 | ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1) 103 | 104 | def check_system_bitness(): 105 | return sys.maxsize > 2**32 106 | 107 | if __name__ == "__main__": 108 | if not is_admin(): 109 | run_as_admin() 110 | sys.exit() 111 | 112 | app = QApplication(sys.argv) 113 | window = MainWindow() 114 | 115 | if not check_system_bitness(): 116 | window.tray_icon.showMessage( 117 | "Warning", 118 | "Your system is 32-bit. The application may not work correctly.", 119 | QSystemTrayIcon.Warning, 120 | 5000 121 | ) 122 | 123 | core.func.stop_windivert_service() 124 | config_file_path = 'scr/config.cfg' 125 | config = configparser.ConfigParser() 126 | config.read(config_file_path) 127 | if int(config['Autoupdate']['enabled']) == 1: 128 | core.update.check_and_update() 129 | 130 | window.show() 131 | sys.exit(app.exec()) 132 | -------------------------------------------------------------------------------- /modules/autostart_checkbox.py: -------------------------------------------------------------------------------- 1 | import configparser 2 | import os 3 | import core.func 4 | from PySide6.QtWidgets import QCheckBox, QHBoxLayout, QWidget, QLabel, QApplication 5 | from PySide6.QtGui import QFont, QFontDatabase, Qt 6 | from PySide6.QtCore import Qt 7 | 8 | class AutostartWidget(QWidget): 9 | def __init__(self, parent=None): 10 | super().__init__(parent) 11 | 12 | font_path = 'fonts/Dot-Matrix.ttf' 13 | font_id = QFontDatabase.addApplicationFont(font_path) 14 | font_family = QFontDatabase.applicationFontFamilies(font_id)[0] 15 | font = QFont(font_family, 24) 16 | 17 | self.label = QLabel("Auto start", self) 18 | self.label.setFont(font) 19 | self.label.setStyleSheet("color: white;") 20 | 21 | self.checkbox = QCheckBox(self) 22 | images_dir = os.path.join(os.getcwd(), 'images') 23 | image_1_path = os.path.join(images_dir, "1.png").replace("\\", "/") 24 | image_2_path = os.path.join(images_dir, "2.png").replace("\\", "/") 25 | 26 | self.checkbox.setStyleSheet(f""" 27 | QCheckBox {{ 28 | color: white; 29 | spacing: 5px; 30 | }} 31 | QCheckBox::indicator {{ 32 | width: 24px; 33 | height: 24px; 34 | }} 35 | QCheckBox::indicator:unchecked {{ 36 | image: url({image_1_path}); 37 | }} 38 | QCheckBox::indicator:checked {{ 39 | image: url({image_2_path}); 40 | }} 41 | """) 42 | 43 | layout = QHBoxLayout() 44 | layout.addWidget(self.checkbox) 45 | layout.addWidget(self.label) 46 | layout.setAlignment(Qt.AlignCenter) 47 | self.setLayout(layout) 48 | self.setGeometry(45, 250, 260, 100) 49 | 50 | self.label.mousePressEvent = self.on_label_clicked 51 | 52 | self.checkbox.stateChanged.connect(self.update_checkbox_state) 53 | 54 | self.config_path = 'scr/config.cfg' 55 | self.load_config() 56 | 57 | def on_label_clicked(self, event): 58 | if event.button() == Qt.LeftButton: 59 | self.checkbox.setChecked(not self.checkbox.isChecked()) 60 | event.accept() 61 | 62 | def update_checkbox_state(self, state): 63 | is_checked = self.checkbox.isChecked() 64 | core.func.set_autostart(is_checked) 65 | self.save_config(is_checked) 66 | 67 | def load_config(self): 68 | config = configparser.ConfigParser() 69 | config.read(self.config_path) 70 | if 'Autostart' in config and 'enabled' in config['Autostart']: 71 | enabled = config['Autostart'].getboolean('enabled') 72 | self.checkbox.setChecked(enabled) 73 | 74 | def save_config(self, enabled): 75 | config = configparser.ConfigParser() 76 | config.read(self.config_path) 77 | if 'Autostart' not in config: 78 | config.add_section('Autostart') 79 | config['Autostart']['enabled'] = '1' if enabled else '0' 80 | with open(self.config_path, 'w') as configfile: 81 | config.write(configfile) -------------------------------------------------------------------------------- /modules/autoupdate_checkbox.py: -------------------------------------------------------------------------------- 1 | import configparser 2 | from PySide6.QtWidgets import QCheckBox, QHBoxLayout, QWidget, QLabel, QApplication 3 | from PySide6.QtGui import QFont, QFontDatabase, Qt 4 | from PySide6.QtCore import Qt 5 | 6 | class AutoupdateWidget(QWidget): 7 | def __init__(self, parent=None): 8 | super().__init__(parent) 9 | font_path = 'fonts/Dot-Matrix.ttf' 10 | font_id = QFontDatabase.addApplicationFont(font_path) 11 | font_family = QFontDatabase.applicationFontFamilies(font_id)[0] 12 | font = QFont(font_family, 24) 13 | 14 | self.label = QLabel("Auto update", self) 15 | self.label.setFont(font) 16 | self.label.setStyleSheet("color: white;") 17 | 18 | self.checkbox = QCheckBox(self) 19 | image_1_path = "images/1.png" 20 | image_2_path = "images/2.png" 21 | 22 | self.checkbox.setStyleSheet(f""" 23 | QCheckBox {{ 24 | color: white; 25 | spacing: 5px; 26 | }} 27 | QCheckBox::indicator {{ 28 | width: 24px; 29 | height: 24px; 30 | }} 31 | QCheckBox::indicator:unchecked {{ 32 | image: url({image_1_path}); 33 | }} 34 | QCheckBox::indicator:checked {{ 35 | image: url({image_2_path}); 36 | }} 37 | """) 38 | 39 | layout = QHBoxLayout() 40 | layout.addWidget(self.checkbox) 41 | layout.addWidget(self.label) 42 | layout.setAlignment(Qt.AlignCenter) 43 | self.setLayout(layout) 44 | self.setGeometry(38, 310, 280, 100) 45 | 46 | self.label.mousePressEvent = self.on_label_clicked 47 | 48 | self.checkbox.stateChanged.connect(self.update_checkbox_state) 49 | 50 | self.config_path = 'scr/config.cfg' 51 | self.load_config() 52 | 53 | def on_label_clicked(self, event): 54 | if event.button() == Qt.LeftButton: 55 | self.checkbox.setChecked(not self.checkbox.isChecked()) 56 | event.accept() 57 | 58 | def update_checkbox_state(self, state): 59 | is_checked = self.checkbox.isChecked() 60 | self.save_config(is_checked) 61 | 62 | def load_config(self): 63 | config = configparser.ConfigParser() 64 | config.read(self.config_path) 65 | if 'Autoupdate' in config and 'enabled' in config['Autoupdate']: 66 | enabled = config['Autoupdate'].getboolean('enabled') 67 | self.checkbox.setChecked(enabled) 68 | 69 | def save_config(self, enabled): 70 | config = configparser.ConfigParser() 71 | config.read(self.config_path) 72 | if 'Autoupdate' not in config: 73 | config.add_section('Autoupdate') 74 | config['Autoupdate']['enabled'] = '1' if enabled else '0' 75 | with open(self.config_path, 'w') as configfile: 76 | config.write(configfile) -------------------------------------------------------------------------------- /modules/clickable_link.py: -------------------------------------------------------------------------------- 1 | from PySide6.QtWidgets import QLabel 2 | from PySide6.QtGui import QFont, QFontDatabase 3 | from PySide6.QtCore import Qt 4 | 5 | class ClickableLink(QLabel): 6 | def __init__(self, parent=None): 7 | super().__init__(parent) 8 | font_path = 'fonts/NType82-Regular.otf' 9 | font_id = QFontDatabase.addApplicationFont(font_path) 10 | font_family = QFontDatabase.applicationFontFamilies(font_id)[0] 11 | font = QFont(font_family, 16) 12 | self.setFont(font) 13 | self.setStyleSheet("color: rgba(255, 255, 255, 32);") 14 | self.setOpenExternalLinks(True) 15 | self.setAlignment(Qt.AlignCenter) 16 | self.setText('t.me/bloomofficialyt') 17 | self.setGeometry(85, 120, 180, 60) -------------------------------------------------------------------------------- /modules/config_file_selector.py: -------------------------------------------------------------------------------- 1 | from PySide6.QtWidgets import QWidget, QLabel, QVBoxLayout, QFileDialog 2 | from PySide6.QtCore import Qt, QMimeData 3 | from PySide6.QtGui import QFontDatabase, QFont 4 | import core.func 5 | 6 | class ConfigFileSelector(QWidget): 7 | def __init__(self, parent=None): 8 | super().__init__(parent) 9 | self.initUI() 10 | 11 | def initUI(self): 12 | self.setAcceptDrops(True) 13 | self.layout = QVBoxLayout() 14 | self.label = QLabel("Choose config file", self) 15 | font_path = 'fonts/Dot-Matrix.ttf' 16 | font_id = QFontDatabase.addApplicationFont(font_path) 17 | font_family = QFontDatabase.applicationFontFamilies(font_id)[0] 18 | font = QFont(font_family, 20) 19 | 20 | self.label.setFont(font) 21 | self.label.setAlignment(Qt.AlignCenter) 22 | self.label.setStyleSheet(""" 23 | QLabel { 24 | background-color: rgb(75, 75, 75); 25 | color: white; 26 | border: 2px dashed white; 27 | border-radius: 10px; 28 | padding: 10px; 29 | } 30 | """) 31 | 32 | self.layout.addWidget(self.label) 33 | self.setLayout(self.layout) 34 | self.setGeometry(10, 400, 335, 100) 35 | 36 | def dragEnterEvent(self, event): 37 | if event.mimeData().hasUrls(): 38 | event.acceptProposedAction() 39 | 40 | def dropEvent(self, event): 41 | for url in event.mimeData().urls(): 42 | file_path = url.toLocalFile() 43 | if file_path.endswith(('.cfg', '.txt')): 44 | self.label.setText("Success") 45 | event.acceptProposedAction() 46 | self.display_file_path(file_path) 47 | 48 | def mousePressEvent(self, event): 49 | if event.button() == Qt.LeftButton: 50 | file_path, _ = QFileDialog.getOpenFileName(self, "Choose config file", "", "Config Files (*.cfg *.txt)") 51 | if file_path: 52 | self.label.setText("Success") 53 | self.display_file_path(file_path) 54 | 55 | def display_file_path(self, file_path): 56 | core.func.select_config(file_path) -------------------------------------------------------------------------------- /modules/connect_button.py: -------------------------------------------------------------------------------- 1 | from PySide6.QtWidgets import QPushButton, QApplication 2 | from PySide6.QtGui import QFont, QFontDatabase 3 | import core.func 4 | 5 | class ConnectButton(QPushButton): 6 | def __init__(self, parent=None): 7 | super().__init__("connect", parent) 8 | font_path = 'fonts/Dot-Matrix.ttf' 9 | font_id = QFontDatabase.addApplicationFont(font_path) 10 | font_family = QFontDatabase.applicationFontFamilies(font_id)[0] 11 | font = QFont(font_family, 32) 12 | self.setFont(font) 13 | self.setStyleSheet(""" 14 | QPushButton { 15 | background-color: rgb(75, 75, 75); 16 | color: white; 17 | border-radius: 15px; 18 | padding: 10px; 19 | } 20 | """) 21 | 22 | self.setGeometry(35, 180, 280, 60) 23 | 24 | self.clicked.connect(self.on_click) 25 | self.connected = False 26 | 27 | def on_click(self): 28 | if not self.connected: 29 | self.setText("connected") 30 | self.connected = True 31 | core.func.toggle_connection(self.connected) 32 | else: 33 | self.setText("connect") 34 | self.connected = False 35 | core.func.toggle_connection(self.connected) -------------------------------------------------------------------------------- /modules/line_label.py: -------------------------------------------------------------------------------- 1 | from PySide6.QtWidgets import QLabel 2 | from PySide6.QtGui import QFont, QFontDatabase 3 | from PySide6.QtCore import Qt 4 | 5 | class LineLabel(QLabel): 6 | def __init__(self, parent=None): 7 | super().__init__("line", parent) 8 | font_path = 'fonts/NType82-Regular.otf' 9 | font_id = QFontDatabase.addApplicationFont(font_path) 10 | font_family = QFontDatabase.applicationFontFamilies(font_id)[0] 11 | font = QFont(font_family, 50) 12 | self.setFont(font) 13 | self.setStyleSheet("color: white;") 14 | self.setAlignment(Qt.AlignCenter) 15 | self.setGeometry(100, 20, 150, 150) 16 | -------------------------------------------------------------------------------- /modules/window_controls.py: -------------------------------------------------------------------------------- 1 | from PySide6.QtWidgets import QPushButton, QHBoxLayout, QWidget 2 | from PySide6.QtCore import Qt 3 | 4 | class WindowControls(QWidget): 5 | def __init__(self, parent=None): 6 | super().__init__(parent) 7 | self.initUI() 8 | 9 | def initUI(self): 10 | layout = QHBoxLayout() 11 | layout.setContentsMargins(0, 0, 0, 0) 12 | layout.setSpacing(5) 13 | self.minimize_button = QPushButton("—", self) 14 | self.minimize_button.setFixedSize(20, 20) 15 | self.minimize_button.setStyleSheet("background-color: transparent; border: none; color: white; font-size: 16px;") 16 | self.minimize_button.clicked.connect(self.parent().showMinimized) 17 | self.close_button = QPushButton("⨉", self) 18 | self.close_button.setFixedSize(20, 20) 19 | self.close_button.setStyleSheet("background-color: transparent; border: none; color: white; font-size: 16px;") 20 | self.close_button.clicked.connect(self.parent().close) 21 | 22 | layout.addWidget(self.minimize_button) 23 | layout.addWidget(self.close_button) 24 | 25 | self.setLayout(layout) 26 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | PySide6 2 | psutil 3 | requests 4 | pywin32 5 | -------------------------------------------------------------------------------- /scr/config.cfg: -------------------------------------------------------------------------------- 1 | [Winws] 2 | command = %BIN%winws.exe --wf-tcp=80,443 --wf-udp=443,50000-50100 --filter-udp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-fake-quic=%BIN%quic_initial_www_google_com.bin --new --filter-udp=50000-50100 --ipset=%SCR%ipset-discord.txt --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-cutoff=d3 --dpi-desync-repeats=6 --new --filter-tcp=80 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --new --filter-tcp=443 --hostlist=%SCR%list-general.txt --dpi-desync=fake,split --dpi-desync-autottl=2 --dpi-desync-repeats=6 --dpi-desync-fooling=badseq --dpi-desync-fake-tls=%BIN%tls_clienthello_www_google_com.bin 3 | 4 | [Autostart] 5 | enabled = 0 6 | 7 | [Autoupdate] 8 | enabled = 0 -------------------------------------------------------------------------------- /scr/ipset-discord.txt: -------------------------------------------------------------------------------- 1 | 5.200.14.249 2 | 18.165.140.0/25 3 | 23.227.38.74 4 | 34.0.48.0/24 5 | 34.0.49.64/26 6 | 34.0.50.0/25 7 | 34.0.51.0/24 8 | 34.0.52.0/22 9 | 34.0.56.0/23 10 | 34.0.59.0/24 11 | 34.0.60.0/24 12 | 34.0.62.128/25 13 | 34.0.63.228 14 | 34.0.64.0/23 15 | 34.0.66.130 16 | 34.0.82.140 17 | 34.0.129.128/25 18 | 34.0.130.0/24 19 | 34.0.131.130 20 | 34.0.132.139 21 | 34.0.133.75 22 | 34.0.134.0/24 23 | 34.0.135.251 24 | 34.0.136.51 25 | 34.0.137.0/24 26 | 34.0.139.0/24 27 | 34.0.140.0/23 28 | 34.0.142.0/25 29 | 34.0.144.0/23 30 | 34.0.146.0/24 31 | 34.0.148.25 32 | 34.0.149.101 33 | 34.0.151.0/25 34 | 34.0.153.0/24 35 | 34.0.155.0/24 36 | 34.0.156.101 37 | 34.0.157.0/25 38 | 34.0.158.247 39 | 34.0.159.188 40 | 34.0.192.0/25 41 | 34.0.193.0/24 42 | 34.0.194.0/24 43 | 34.0.195.172 44 | 34.0.196.200/29 45 | 34.0.197.81 46 | 34.0.198.25 47 | 34.0.199.0/24 48 | 34.0.200.0/24 49 | 34.0.201.81 50 | 34.0.202.34 51 | 34.0.203.0/24 52 | 34.0.204.0/23 53 | 34.0.206.0/25 54 | 34.0.207.0/25 55 | 34.0.208.195 56 | 34.0.209.0/24 57 | 34.0.210.20 58 | 34.0.211.0/26 59 | 34.0.212.0/24 60 | 34.0.213.64/26 61 | 34.0.215.128/25 62 | 34.0.216.238 63 | 34.0.217.0/24 64 | 34.0.218.83 65 | 34.0.220.103 66 | 34.0.221.0/24 67 | 34.0.222.193 68 | 34.0.223.68 69 | 34.0.227.0/24 70 | 34.0.240.0/21 71 | 34.0.248.0/23 72 | 34.0.250.0/24 73 | 34.0.251.0/25 74 | 34.1.216.0/24 75 | 34.1.221.166 76 | 35.207.64.0/23 77 | 35.207.67.116 78 | 35.207.71.0/24 79 | 35.207.72.32 80 | 35.207.73.0/24 81 | 35.207.74.0/24 82 | 35.207.75.128/25 83 | 35.207.76.128/26 84 | 35.207.77.0/24 85 | 35.207.78.129 86 | 35.207.79.0/24 87 | 35.207.80.76 88 | 35.207.81.248/30 89 | 35.207.82.0/23 90 | 35.207.84.0/24 91 | 35.207.85.160 92 | 35.207.86.41 93 | 35.207.87.184 94 | 35.207.89.188 95 | 35.207.91.146 96 | 35.207.92.230 97 | 35.207.95.0/24 98 | 35.207.97.174 99 | 35.207.99.134 100 | 35.207.100.64/26 101 | 35.207.101.130 102 | 35.207.103.64/26 103 | 35.207.104.0/24 104 | 35.207.106.128/26 105 | 35.207.107.19 106 | 35.207.108.192/27 107 | 35.207.109.185 108 | 35.207.110.0/24 109 | 35.207.111.174 110 | 35.207.114.16 111 | 35.207.115.163 112 | 35.207.116.51 113 | 35.207.117.0/24 114 | 35.207.121.204 115 | 35.207.122.0/25 116 | 35.207.124.145 117 | 35.207.125.116 118 | 35.207.126.30 119 | 35.207.129.0/24 120 | 35.207.131.128/27 121 | 35.207.132.247 122 | 35.207.135.147 123 | 35.207.136.69 124 | 35.207.137.0/24 125 | 35.207.139.0/24 126 | 35.207.140.241 127 | 35.207.141.119 128 | 35.207.142.0/24 129 | 35.207.143.96/27 130 | 35.207.144.0/25 131 | 35.207.145.0/24 132 | 35.207.146.89 133 | 35.207.147.0/24 134 | 35.207.149.0/24 135 | 35.207.150.0/24 136 | 35.207.151.61 137 | 35.207.153.117 138 | 35.207.154.0/24 139 | 35.207.155.128/25 140 | 35.207.156.254 141 | 35.207.157.7 142 | 35.207.158.192 143 | 35.207.160.160 144 | 35.207.162.239 145 | 35.207.163.0/24 146 | 35.207.164.0/25 147 | 35.207.165.147 148 | 35.207.166.0/25 149 | 35.207.167.0/24 150 | 35.207.168.116 151 | 35.207.170.0/23 152 | 35.207.172.0/24 153 | 35.207.174.55 154 | 35.207.176.128/25 155 | 35.207.178.0/24 156 | 35.207.180.152 157 | 35.207.181.76 158 | 35.207.182.125 159 | 35.207.184.101 160 | 35.207.185.192 161 | 35.207.186.128/25 162 | 35.207.187.228 163 | 35.207.188.0/24 164 | 35.207.189.0/25 165 | 35.207.190.194 166 | 35.207.191.64/26 167 | 35.207.193.165 168 | 35.207.195.75 169 | 35.207.196.0/24 170 | 35.207.198.0/23 171 | 35.207.201.186 172 | 35.207.202.169 173 | 35.207.205.211 174 | 35.207.207.4 175 | 35.207.209.0/25 176 | 35.207.210.191 177 | 35.207.211.253 178 | 35.207.213.97 179 | 35.207.214.0/24 180 | 35.207.220.147 181 | 35.207.221.58 182 | 35.207.222.105 183 | 35.207.224.151 184 | 35.207.225.210 185 | 35.207.227.0/24 186 | 35.207.229.212 187 | 35.207.232.26 188 | 35.207.234.182 189 | 35.207.238.0/24 190 | 35.207.240.0/24 191 | 35.207.245.0/24 192 | 35.207.249.0/24 193 | 35.207.250.212 194 | 35.207.251.0/27 195 | 35.212.4.134 196 | 35.212.12.148 197 | 35.212.88.11 198 | 35.212.102.50 199 | 35.212.111.0/26 200 | 35.212.117.247 201 | 35.212.120.122 202 | 35.213.0.0/24 203 | 35.213.2.8 204 | 35.213.4.185 205 | 35.213.6.118 206 | 35.213.7.128/25 207 | 35.213.8.168 208 | 35.213.10.0/24 209 | 35.213.11.21 210 | 35.213.12.224/27 211 | 35.213.13.19 212 | 35.213.14.217 213 | 35.213.16.67 214 | 35.213.17.235 215 | 35.213.23.166 216 | 35.213.25.164 217 | 35.213.26.62 218 | 35.213.27.252 219 | 35.213.32.0/24 220 | 35.213.33.74 221 | 35.213.34.204 222 | 35.213.37.81 223 | 35.213.38.186 224 | 35.213.39.253 225 | 35.213.42.0/24 226 | 35.213.43.79 227 | 35.213.45.0/24 228 | 35.213.46.136 229 | 35.213.49.17 230 | 35.213.50.0/24 231 | 35.213.51.213 232 | 35.213.52.0/25 233 | 35.213.53.0/24 234 | 35.213.54.0/24 235 | 35.213.56.0/25 236 | 35.213.59.0/24 237 | 35.213.61.58 238 | 35.213.65.0/24 239 | 35.213.67.0/24 240 | 35.213.68.192/26 241 | 35.213.70.151 242 | 35.213.72.128/25 243 | 35.213.73.245 244 | 35.213.74.131 245 | 35.213.78.0/24 246 | 35.213.79.137 247 | 35.213.80.0/25 248 | 35.213.83.128/25 249 | 35.213.84.245 250 | 35.213.85.0/24 251 | 35.213.88.145 252 | 35.213.89.80/28 253 | 35.213.90.0/24 254 | 35.213.91.195 255 | 35.213.92.0/24 256 | 35.213.93.254 257 | 35.213.94.78 258 | 35.213.95.145 259 | 35.213.96.87 260 | 35.213.98.0/24 261 | 35.213.99.126 262 | 35.213.101.214 263 | 35.213.102.0/24 264 | 35.213.105.0/24 265 | 35.213.106.128/25 266 | 35.213.107.158 267 | 35.213.109.0/24 268 | 35.213.110.40 269 | 35.213.111.0/25 270 | 35.213.115.0/25 271 | 35.213.120.0/24 272 | 35.213.122.0/24 273 | 35.213.124.89 274 | 35.213.125.40 275 | 35.213.126.185 276 | 35.213.127.0/24 277 | 35.213.128.0/22 278 | 35.213.132.0/23 279 | 35.213.134.140 280 | 35.213.135.0/24 281 | 35.213.136.0/23 282 | 35.213.138.128/25 283 | 35.213.139.0/24 284 | 35.213.140.0/25 285 | 35.213.141.164 286 | 35.213.142.128/25 287 | 35.213.143.0/24 288 | 35.213.144.0/22 289 | 35.213.148.0/23 290 | 35.213.150.0/24 291 | 35.213.152.0/23 292 | 35.213.154.137 293 | 35.213.155.134 294 | 35.213.156.144 295 | 35.213.157.0/24 296 | 35.213.158.64/26 297 | 35.213.160.90 298 | 35.213.161.253 299 | 35.213.162.0/25 300 | 35.213.163.0/24 301 | 35.213.164.0/23 302 | 35.213.166.106 303 | 35.213.167.160/27 304 | 35.213.168.0/24 305 | 35.213.169.179 306 | 35.213.170.0/24 307 | 35.213.171.201 308 | 35.213.172.159 309 | 35.213.173.0/24 310 | 35.213.174.128/25 311 | 35.213.175.128/26 312 | 35.213.176.0/24 313 | 35.213.177.0/25 314 | 35.213.179.139 315 | 35.213.180.0/24 316 | 35.213.181.0/25 317 | 35.213.182.0/23 318 | 35.213.184.0/23 319 | 35.213.186.70 320 | 35.213.187.0/24 321 | 35.213.188.128/25 322 | 35.213.190.158 323 | 35.213.191.0/24 324 | 35.213.192.240/31 325 | 35.213.193.74 326 | 35.213.194.0/25 327 | 35.213.195.178 328 | 35.213.196.38 329 | 35.213.197.68 330 | 35.213.198.0/23 331 | 35.213.200.0/23 332 | 35.213.202.0/25 333 | 35.213.203.195 334 | 35.213.204.32/27 335 | 35.213.205.170 336 | 35.213.207.128/25 337 | 35.213.208.85 338 | 35.213.210.0/24 339 | 35.213.211.176/29 340 | 35.213.212.0/24 341 | 35.213.213.225 342 | 35.213.214.0/25 343 | 35.213.215.255 344 | 35.213.217.0/24 345 | 35.213.218.248 346 | 35.213.219.0/25 347 | 35.213.220.211 348 | 35.213.221.0/24 349 | 35.213.222.215 350 | 35.213.223.0/24 351 | 35.213.225.0/24 352 | 35.213.227.227 353 | 35.213.229.17 354 | 35.213.230.89 355 | 35.213.231.0/24 356 | 35.213.233.0/24 357 | 35.213.234.134 358 | 35.213.236.0/24 359 | 35.213.237.212 360 | 35.213.238.0/24 361 | 35.213.240.212 362 | 35.213.241.0/24 363 | 35.213.242.10 364 | 35.213.243.219 365 | 35.213.244.146 366 | 35.213.245.119 367 | 35.213.246.0/23 368 | 35.213.249.79 369 | 35.213.250.0/24 370 | 35.213.251.74 371 | 35.213.252.0/24 372 | 35.213.253.155 373 | 35.213.254.89 374 | 35.214.128.248 375 | 35.214.129.220 376 | 35.214.130.217 377 | 35.214.131.144 378 | 35.214.132.189 379 | 35.214.133.0/24 380 | 35.214.134.163 381 | 35.214.137.0/24 382 | 35.214.138.0/25 383 | 35.214.140.0/24 384 | 35.214.142.0/24 385 | 35.214.143.41 386 | 35.214.144.26 387 | 35.214.145.200 388 | 35.214.146.9 389 | 35.214.147.135 390 | 35.214.148.89 391 | 35.214.149.110 392 | 35.214.151.128/25 393 | 35.214.152.0/24 394 | 35.214.156.115 395 | 35.214.158.181 396 | 35.214.159.128/25 397 | 35.214.160.128/25 398 | 35.214.161.217 399 | 35.214.162.0/24 400 | 35.214.163.28 401 | 35.214.165.102 402 | 35.214.167.77 403 | 35.214.169.0/24 404 | 35.214.170.2 405 | 35.214.171.0/25 406 | 35.214.172.128/25 407 | 35.214.173.0/24 408 | 35.214.175.0/24 409 | 35.214.177.183 410 | 35.214.179.46 411 | 35.214.180.0/23 412 | 35.214.184.179 413 | 35.214.185.28 414 | 35.214.186.3 415 | 35.214.187.0/24 416 | 35.214.191.0/24 417 | 35.214.192.128/25 418 | 35.214.193.0/24 419 | 35.214.194.128/25 420 | 35.214.195.0/25 421 | 35.214.196.64/26 422 | 35.214.197.0/24 423 | 35.214.198.7 424 | 35.214.199.224 425 | 35.214.201.0/25 426 | 35.214.203.155 427 | 35.214.204.0/23 428 | 35.214.207.0/24 429 | 35.214.208.128/25 430 | 35.214.209.64 431 | 35.214.210.0/24 432 | 35.214.211.3 433 | 35.214.212.64/26 434 | 35.214.213.0/25 435 | 35.214.214.0/24 436 | 35.214.215.64/26 437 | 35.214.216.0/23 438 | 35.214.218.140 439 | 35.214.219.0/24 440 | 35.214.220.149 441 | 35.214.221.0/24 442 | 35.214.222.149 443 | 35.214.223.0/24 444 | 35.214.224.71 445 | 35.214.225.0/24 446 | 35.214.226.0/23 447 | 35.214.228.0/23 448 | 35.214.231.187 449 | 35.214.233.8 450 | 35.214.235.38 451 | 35.214.237.0/24 452 | 35.214.238.0/25 453 | 35.214.239.0/24 454 | 35.214.240.87 455 | 35.214.241.0/24 456 | 35.214.243.21 457 | 35.214.244.0/24 458 | 35.214.245.16/28 459 | 35.214.246.106 460 | 35.214.248.119 461 | 35.214.249.154 462 | 35.214.250.0/24 463 | 35.214.251.128/25 464 | 35.214.252.187 465 | 35.214.253.0/24 466 | 35.214.255.154 467 | 35.215.72.85 468 | 35.215.73.65 469 | 35.215.83.0 470 | 35.215.108.111 471 | 35.215.115.120 472 | 35.215.126.35 473 | 35.215.127.34 474 | 35.215.128.0/21 475 | 35.215.136.0/26 476 | 35.215.137.0/24 477 | 35.215.138.0/23 478 | 35.215.140.0/24 479 | 35.215.141.64/27 480 | 35.215.142.0/24 481 | 35.215.143.83 482 | 35.215.144.128/25 483 | 35.215.145.0/24 484 | 35.215.146.0/24 485 | 35.215.147.86 486 | 35.215.148.0/23 487 | 35.215.150.0/26 488 | 35.215.151.0/24 489 | 35.215.152.0/24 490 | 35.215.153.128/25 491 | 35.215.154.240/28 492 | 35.215.155.20 493 | 35.215.156.0/24 494 | 35.215.158.0/23 495 | 35.215.160.192/26 496 | 35.215.161.0/24 497 | 35.215.163.0/24 498 | 35.215.164.0/24 499 | 35.215.165.236 500 | 35.215.166.128/25 501 | 35.215.167.128/25 502 | 35.215.168.0/24 503 | 35.215.169.12 504 | 35.215.170.0/23 505 | 35.215.172.0/22 506 | 35.215.176.0/24 507 | 35.215.177.72 508 | 35.215.178.0/24 509 | 35.215.179.161 510 | 35.215.180.0/22 511 | 35.215.184.253 512 | 35.215.185.64/26 513 | 35.215.186.0/25 514 | 35.215.187.0/24 515 | 35.215.188.0/23 516 | 35.215.190.0/24 517 | 35.215.191.61 518 | 35.215.192.0/23 519 | 35.215.194.192/28 520 | 35.215.195.0/24 521 | 35.215.196.0/25 522 | 35.215.197.0/25 523 | 35.215.198.230 524 | 35.215.199.204 525 | 35.215.200.0/23 526 | 35.215.202.0/24 527 | 35.215.203.0/25 528 | 35.215.204.128/25 529 | 35.215.205.0/25 530 | 35.215.206.0/23 531 | 35.215.208.0/24 532 | 35.215.209.0/25 533 | 35.215.210.0/23 534 | 35.215.212.0/22 535 | 35.215.216.0/22 536 | 35.215.221.0/24 537 | 35.215.222.128/25 538 | 35.215.223.126 539 | 35.215.224.0/23 540 | 35.215.226.0/24 541 | 35.215.227.0/25 542 | 35.215.228.0/24 543 | 35.215.229.64 544 | 35.215.230.89 545 | 35.215.231.0/24 546 | 35.215.232.0/24 547 | 35.215.233.0/25 548 | 35.215.234.37 549 | 35.215.235.0/24 550 | 35.215.238.0/25 551 | 35.215.239.119 552 | 35.215.240.0/24 553 | 35.215.241.128/25 554 | 35.215.242.0/25 555 | 35.215.243.0/24 556 | 35.215.244.0/23 557 | 35.215.246.222 558 | 35.215.247.0/24 559 | 35.215.248.0/22 560 | 35.215.252.0/24 561 | 35.215.253.118 562 | 35.215.254.0/23 563 | 35.217.0.0/24 564 | 35.217.1.64/26 565 | 35.217.2.5 566 | 35.217.3.0/24 567 | 35.217.4.72 568 | 35.217.5.0/25 569 | 35.217.6.0/24 570 | 35.217.8.0/25 571 | 35.217.9.0/24 572 | 35.217.11.186 573 | 35.217.12.0/24 574 | 35.217.14.192/26 575 | 35.217.15.65 576 | 35.217.16.75 577 | 35.217.17.128/25 578 | 35.217.18.0/24 579 | 35.217.19.183 580 | 35.217.20.0/24 581 | 35.217.21.128/25 582 | 35.217.22.128/25 583 | 35.217.23.128/25 584 | 35.217.24.0/24 585 | 35.217.25.81 586 | 35.217.26.0/24 587 | 35.217.27.128/25 588 | 35.217.28.128/25 589 | 35.217.29.0/24 590 | 35.217.30.0/25 591 | 35.217.31.0/25 592 | 35.217.32.128/25 593 | 35.217.33.0/24 594 | 35.217.35.128/25 595 | 35.217.36.0/23 596 | 35.217.38.179 597 | 35.217.39.186 598 | 35.217.40.176 599 | 35.217.41.204 600 | 35.217.43.0/24 601 | 35.217.45.248 602 | 35.217.46.0/24 603 | 35.217.47.128/25 604 | 35.217.48.195 605 | 35.217.49.160/27 606 | 35.217.50.0/25 607 | 35.217.51.0/24 608 | 35.217.52.117 609 | 35.217.53.128/25 610 | 35.217.54.0/25 611 | 35.217.55.96/27 612 | 35.217.56.6 613 | 35.217.57.184 614 | 35.217.58.0/24 615 | 35.217.59.64/26 616 | 35.217.60.0/24 617 | 35.217.61.128/25 618 | 35.217.62.0/24 619 | 35.217.63.128/25 620 | 35.219.225.149 621 | 35.219.226.57 622 | 35.219.227.0/24 623 | 35.219.228.37 624 | 35.219.229.128/25 625 | 35.219.230.0/23 626 | 35.219.235.0/24 627 | 35.219.236.198 628 | 35.219.238.115 629 | 35.219.239.0/24 630 | 35.219.241.0/24 631 | 35.219.242.221 632 | 35.219.243.191 633 | 35.219.244.1 634 | 35.219.245.0/24 635 | 35.219.246.159 636 | 35.219.247.0/26 637 | 35.219.248.0/24 638 | 35.219.249.126 639 | 35.219.251.186 640 | 35.219.252.0/23 641 | 35.219.254.0/24 642 | 64.233.161.207 643 | 64.233.162.207 644 | 64.233.163.207 645 | 64.233.164.207 646 | 64.233.165.207 647 | 66.22.196.0/26 648 | 66.22.197.0/24 649 | 66.22.198.0/26 650 | 66.22.199.0/24 651 | 66.22.200.0/26 652 | 66.22.202.0/26 653 | 66.22.204.0/24 654 | 66.22.206.0/24 655 | 66.22.208.0/25 656 | 66.22.210.0/26 657 | 66.22.212.0/24 658 | 66.22.214.0/24 659 | 66.22.216.0/23 660 | 66.22.220.0/25 661 | 66.22.221.0/24 662 | 66.22.222.0/23 663 | 66.22.224.0/25 664 | 66.22.225.0/26 665 | 66.22.226.0/25 666 | 66.22.227.0/25 667 | 66.22.228.0/22 668 | 66.22.233.0/24 669 | 66.22.234.0/24 670 | 66.22.236.0/23 671 | 66.22.238.0/24 672 | 66.22.240.0/22 673 | 66.22.244.0/23 674 | 66.22.248.0/24 675 | 74.125.131.207 676 | 74.125.205.207 677 | 104.17.51.93 678 | 104.17.117.93 679 | 104.18.4.161 680 | 104.18.5.161 681 | 104.18.8.105 682 | 104.18.9.105 683 | 104.18.30.128 684 | 104.18.31.128 685 | 104.21.2.204 686 | 104.21.25.51 687 | 104.21.40.151 688 | 104.21.59.128 689 | 104.21.72.221 690 | 104.21.82.160 691 | 108.177.14.207 692 | 138.128.140.240/28 693 | 142.250.150.207 694 | 142.251.1.207 695 | 162.159.128.232/30 696 | 162.159.129.232/30 697 | 162.159.130.232/30 698 | 162.159.133.232/30 699 | 162.159.134.232/30 700 | 162.159.135.232/30 701 | 162.159.136.232/30 702 | 162.159.137.232/30 703 | 162.159.138.232/30 704 | 172.65.202.19 705 | 172.66.41.34 706 | 172.66.42.222 707 | 172.67.152.224/28 708 | 172.67.155.163 709 | 172.67.159.89 710 | 172.67.177.131 711 | 172.67.222.182 712 | 173.194.73.207 713 | 173.194.220.207 714 | 173.194.221.207 715 | 173.194.222.207 716 | 188.114.96.2 717 | 188.114.97.2 718 | 188.114.98.224 719 | 188.114.99.224 720 | 204.11.56.48 721 | 209.85.233.207 722 | -------------------------------------------------------------------------------- /scr/list-general.txt: -------------------------------------------------------------------------------- 1 | googlevideo.com 2 | youtu.be 3 | youtube.com 4 | youtubei.googleapis.com 5 | youtubeembeddedplayer.googleapis.com 6 | ytimg.l.google.com 7 | ytimg.com 8 | jnn-pa.googleapis.com 9 | youtube-nocookie.com 10 | youtube-ui.l.google.com 11 | yt-video-upload.l.google.com 12 | wide-youtube.l.google.com 13 | youtubekids.com 14 | ggpht.com 15 | discord.com 16 | gateway.discord.gg 17 | cdn.discordapp.com 18 | discordapp.net 19 | discordapp.com 20 | discord.gg 21 | media.discordapp.net 22 | images-ext-1.discordapp.net 23 | discord.app 24 | discord.media 25 | discordcdn.com 26 | discord.dev 27 | discord.new 28 | discord.gift 29 | discordstatus.com 30 | dis.gd 31 | discord.co 32 | discord-attachments-uploads-prd.storage.googleapis.com 33 | 7tv.app 34 | 7tv.io 35 | 10tv.app 36 | cloudflare-ech.com --------------------------------------------------------------------------------