Установить: ‼️ДЛЯ ПК‼️

Код:
# Блокировка Telegram на этом ПК (Windows)
# Запускать PowerShell от имени администратора

$ErrorActionPreference = "Stop"

# 1. Проверка прав администратора
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(
        [Security.Principal.WindowsBuiltInRole]::Administrator)) {
    Write-Error "Запустите PowerShell от имени администратора."
    exit 1
}

$hosts   = "$env:WINDIR\System32\drivers\etc\hosts"
$marker  = "# BLOCK_TELEGRAM"
$backup  = "$env:WINDIR\System32\drivers\etc\hosts.bak_$(Get-Date -Format yyyyMMdd_HHmmss)"

$domains = @(
    "telegram.org",
    "www.telegram.org",
    "web.telegram.org",
    "api.telegram.org",
    "update.telegram.org",
    "core.telegram.org",
    "t.me",
    "telegram.me",
    "tdesktop.com",
    "tg.dev",
    "telegram.space",
    "telegram.dog",
    "cdn-telegram.org",
    "cdn.telesco.pe",
    "telesco.pe",
    "telesco.pe".Replace("telesco.pe","telesco.pe")  # служебная строка, безопасно игнорируется
) | Select-Object -Unique

# 2. Бэкап и идемпотентность
if (-not (Select-String -Path $hosts -Pattern ([regex]::Escape($marker)) -Quiet)) {
    Copy-Item $hosts $backup -Force
    Write-Host "Бэкап: $backup"

    $lines = @("", $marker)
    foreach ($d in $domains) {
        $lines += "0.0.0.0 $d"
        $lines += ":: $d"
    }

    # 3. Пишем в ASCII — надёжно для hosts
    Add-Content -Path $hosts -Value $lines -Encoding ASCII
    ipconfig /flushdns | Out-Null
    Write-Host "Готово: домены Telegram заблокированы ($($domains.Count) шт., IPv4 + IPv6)."
} else {
    Write-Host "Уже заблокировано (маркер $marker найден)."
}

Откат:

Код:
$hosts  = "$env:WINDIR\System32\drivers\etc\hosts"
$marker = "# BLOCK_TELEGRAM"
$content = Get-Content $hosts -Encoding ASCII | Where-Object { $_ -notmatch [regex]::Escape($marker) -and $_ -notmatch '^\s*(0\.0\.0\.0|::)\s+(telegram|www\.telegram|web\.telegram|api\.telegram|update\.telegram|core\.telegram|t\.me|telegram\.me|tdesktop\.com|tg\.dev|telegram\.space|telegram\.dog|cdn-telegram\.org|cdn\.telesco\.pe|telesco\.pe)' }
Set-Content -Path $hosts -Value $content -Encoding ASCII
ipconfig /flushdns | Out-Null
Write-Host "Блокировка снята."

Что этот код НЕ делает (важно)

Не блокирует мобильный Telegram, если телефон подключён к тому же роутеру — hosts действует только на этом ПК.

Не блокирует прямые IP-соединения. Telegram-клиенты умеют ходить на IP из DC-списка (149.154.x.x), обходя DNS. Полная блокировка — только через firewall-правила или на роутере.

Не защищает от уже установленного/запущенного клиента — он держит соединение. Нужно ещё перезапустить Telegram.

Конфиг:

Код:
91.108.4.0/22

91.108.8.0/22

91.108.12.0/22

91.108.16.0/22

91.108.20.0/22

91.108.56.0/22

149.154.160.0/20

149.154.164.0/22

149.154.168.0/22

149.154.172.0/22

185.76.151.0/24

5.28.192.0/18 (some)

2001:b28:f23d::/48 (IPv6)

2001:67c:4e8::/48

2001:b28:f23f::/48