homepage/templates/home.tmpl
loop-uh 6d8aefc21b Homepage: "Где сайт открывается" section — the git and wiki addresses with charts and a check from your own device
Replaces the status bar that was pinned to the top of every page. The section shows:
- how many addresses open from Russia right now and the working address;
- per address, a 24-hour column chart of availability from Russia, with tooltips and a table view;
- a "Проверить с моего устройства" button: the browser tries every address itself, and a packet
  runs along each address's line to it or gets dropped. The result is not sent anywhere.
The widget is the shared module /_sites/mirrors-widget.js (sites.js loads it when the page has
a [data-zapret-mirrors] slot); the data is /_sites/mirrors.json from zapret-mirror-manager. The
wiki main page has the same widget. Colors and fonts are passed in through --zm-*.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 18:03:10 -04:00

667 lines
100 KiB
Go Template
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{template "base/head" .}}
<link rel="preload" href="{{AppSubUrl}}/assets/zapret-moe/fonts/unbounded-cyrillic.woff2" as="font" type="font/woff2" crossorigin>
<link rel="stylesheet" href="{{AppSubUrl}}/assets/zapret-moe/home.css?v=@ASSETS_VER@">
<link rel="stylesheet" href="{{AppSubUrl}}/assets/zapret-moe/intro.css?v=@ASSETS_VER@">
<script>
/* Заставка показывается один раз. Решение принимается до отрисовки, чтобы не мигала. */
(function () {
var seen = false;
try { seen = localStorage.getItem('zpm-intro') === '1' } catch (e) {}
var calm = window.matchMedia && matchMedia('(prefers-reduced-motion: reduce)').matches;
if (!seen && !calm) document.documentElement.classList.add('zpm-intro-on');
})();
</script>
<div role="main" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}" class="page-content home zpm-home">
<!-- ── Заставка-история: три акта (разметка слайдов — intro.css, движок — intro.js) ── -->
<div class="zx" id="zpm-intro" aria-hidden="true">
<div class="zx-bg"><div class="zi-dust2"><i></i><i></i></div></div>
<div class="zx-rigs">
<div class="zx-rig zx-rig-rkn"><div class="zrig zr-rkn" role="img" aria-label="РКН-тян замахивается когтями и бьёт к зрителю, глаза горят красным"><div class="zr-in"><img class="zr-l zr-rim" src="{{AppSubUrl}}/assets/zapret-moe/chars/rkn2-rim.webp" style="--x:0;--y:0;--w:1600;--h:900" alt="" loading="lazy" decoding="async"><img class="zr-l zr-base" src="{{AppSubUrl}}/assets/zapret-moe/chars/rkn2-base.webp" style="--x:0;--y:0;--w:1600;--h:900" alt="" loading="lazy" decoding="async"><img class="zr-l zr-arm zr-arm-l" src="{{AppSubUrl}}/assets/zapret-moe/chars/rkn2-arm-l.webp" style="--x:0;--y:169;--w:670;--h:714;--o:97.0% 32.4%" alt="" loading="lazy" decoding="async"><img class="zr-l zr-arm zr-arm-r" src="{{AppSubUrl}}/assets/zapret-moe/chars/rkn2-arm-r.webp" style="--x:974;--y:0;--w:626;--h:728;--o:2.6% 45.3%" alt="" loading="lazy" decoding="async"><img class="zr-l zr-gl zr-gl-a" src="{{AppSubUrl}}/assets/zapret-moe/chars/rkn2-flat.webp" style="--x:0;--y:0;--w:1600;--h:900" alt="" loading="lazy" decoding="async"><img class="zr-l zr-gl zr-gl-b" src="{{AppSubUrl}}/assets/zapret-moe/chars/rkn2-flat.webp" style="--x:0;--y:0;--w:1600;--h:900" alt="" loading="lazy" decoding="async"><span class="zr-fx zr-embers"><i style="--ex2:703;--d:5.69s;--s:0.96;--dur:4.1s"></i><i style="--ex2:1137;--d:0.56s;--s:1.12;--dur:6.7s"></i><i style="--ex2:479;--d:0.22s;--s:0.99;--dur:4.2s"></i><i style="--ex2:225;--d:3.31s;--s:0.65;--dur:5.7s"></i><i style="--ex2:497;--d:3.78s;--s:1.12;--dur:4.2s"></i><i style="--ex2:1239;--d:2.38s;--s:1.48;--dur:4.1s"></i><i style="--ex2:312;--d:1.74s;--s:0.73;--dur:4.4s"></i><i style="--ex2:671;--d:3.36s;--s:1.21;--dur:4.3s"></i><i style="--ex2:1209;--d:3.83s;--s:0.94;--dur:5.6s"></i><i style="--ex2:168;--d:3.39s;--s:1.16;--dur:5.5s"></i><i style="--ex2:1128;--d:2.57s;--s:0.88;--dur:5.8s"></i><i style="--ex2:968;--d:2.17s;--s:0.82;--dur:4.5s"></i><i style="--ex2:539;--d:0.49s;--s:0.87;--dur:5.5s"></i><i style="--ex2:743;--d:4.38s;--s:0.86;--dur:6.9s"></i></span><i class="zr-eye zr-eye-0" style="--ex:744;--ey:361;--ec:#ff2b4f"></i><i class="zr-eye zr-eye-1" style="--ex:901;--ey:332;--ec:#ff2b4f"></i></div></div></div>
<div class="zx-rig zx-rig-zt"><div class="zrig zr-zt" role="img" aria-label="Запрет-тян показывает «викторию» обеими руками и смеётся"><div class="zr-in"><img class="zr-l zr-rim" src="{{AppSubUrl}}/assets/zapret-moe/chars/zt-rim.webp" style="--x:0;--y:0;--w:1600;--h:707" alt="" loading="lazy" decoding="async"><img class="zr-l zr-base" src="{{AppSubUrl}}/assets/zapret-moe/chars/zt-base.webp" style="--x:0;--y:0;--w:1600;--h:900" alt="" loading="lazy" decoding="async"><img class="zr-l zr-hair zr-hair-r" src="{{AppSubUrl}}/assets/zapret-moe/chars/zt-hair-r.webp" style="--x:1037;--y:0;--w:563;--h:611;--o:4.1% 19.6%" alt="" loading="lazy" decoding="async"><img class="zr-l zr-hair zr-hair-t" src="{{AppSubUrl}}/assets/zapret-moe/chars/zt-hair-t.webp" style="--x:941;--y:0;--w:310;--h:211;--o:48.1% 42.7%" alt="" loading="lazy" decoding="async"><img class="zr-l zr-hair zr-hair-l" src="{{AppSubUrl}}/assets/zapret-moe/chars/zt-hair-l.webp" style="--x:0;--y:445;--w:611;--h:421;--o:91.7% 27.3%" alt="" loading="lazy" decoding="async"><img class="zr-l zr-hand zr-hand-l" src="{{AppSubUrl}}/assets/zapret-moe/chars/zt-hand-l.webp" style="--x:11;--y:55;--w:627;--h:350;--o:42.4% 73.1%" alt="" loading="lazy" decoding="async"><img class="zr-l zr-hand zr-hand-r" src="{{AppSubUrl}}/assets/zapret-moe/chars/zt-hand-r.webp" style="--x:1078;--y:276;--w:522;--h:493;--o:64.0% 74.4%" alt="" loading="lazy" decoding="async"><span class="zr-fx zr-sparks"><i style="--ex:544;--ey:48;--d:0.00s"></i><i style="--ex:632;--ey:232;--d:0.37s"></i><i style="--ex:1232;--ey:296;--d:0.74s"></i><i style="--ex:1280;--ey:432;--d:1.11s"></i><i style="--ex:590;--ey:130;--d:1.48s"></i><i style="--ex:1256;--ey:364;--d:1.85s"></i></span><i class="zr-eye zr-eye-0" style="--ex:746;--ey:344;--ec:#35ff8a"></i><i class="zr-eye zr-eye-1" style="--ex:926;--ey:310;--ec:#3fb8ff"></i></div></div></div>
<div class="zx-rig zx-rig-duel"><div class="zx-duelstage"><div class="zf zf-rkn" style="left:49.88%;top:9.86%;width:57.31%;height:94.1%" aria-hidden="true"><div class="zf-in"><img class="zf-l zf-hair" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-rkn-hair.webp" style="left:64.05%;top:5.84%;width:31.53%;height:59.4%;transform-origin:0.24% 40%" alt="" loading="lazy" decoding="async"><img class="zf-l zf-base" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-rkn-base.webp" style="left:4.81%;top:0%;width:90.69%;height:94.47%" alt="" loading="lazy" decoding="async"><img class="zf-l zf-arm0" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-rkn-arm0.webp" style="left:2.37%;top:19.02%;width:23.97%;height:16.58%;transform-origin:98.41% 23.08%" alt="" loading="lazy" decoding="async"><img class="zf-l zf-arm1" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-rkn-arm1.webp" style="left:40.53%;top:19.66%;width:32.29%;height:20.62%;transform-origin:2.13% 15.46%" alt="" loading="lazy" decoding="async"></div></div><div class="zf zf-zt" style="left:2.38%;top:6.43%;width:48.56%;height:94.1%" aria-hidden="true"><div class="zf-in"><img class="zf-l zf-hair" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-zt-hair.webp" style="left:3.06%;top:2.66%;width:34.05%;height:88.2%;transform-origin:99.47% 40%" alt="" loading="lazy" decoding="async"><img class="zf-l zf-base" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-zt-base.webp" style="left:14.86%;top:0%;width:83.33%;height:98.09%" alt="" loading="lazy" decoding="async"><img class="zf-l zf-arm0" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-zt-arm0.webp" style="left:35.86%;top:21.04%;width:18.29%;height:24.12%;transform-origin:65.02% 44.93%" alt="" loading="lazy" decoding="async"><img class="zf-l zf-arm1" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-zt-arm1.webp" style="left:65.95%;top:25.19%;width:29.64%;height:18.92%;transform-origin:5.47% 29.78%" alt="" loading="lazy" decoding="async"></div></div></div></div>
<div class="zx-rig zx-art-rig zx-rig-stamp"><div class="zx-art-in"><img src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-stamp.webp" alt="" loading="lazy"><img class="zr-l zr-hair zr-hair-l" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-stamp-hair-l.webp" style="--x:371;--y:31;--w:338;--h:618;--o:100% 8%" alt="" loading="lazy" decoding="async"><img class="zr-l zr-hair zr-hair-r" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-stamp-hair-r.webp" style="--x:896;--y:42;--w:363;--h:567;--o:0% 8%" alt="" loading="lazy" decoding="async"><img class="zr-l zx-arm zx-a-stamp" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-stamp-arm-a.webp" style="--x:331;--y:0;--w:282;--h:440;--o:90.1% 95.5%" alt="" loading="lazy" decoding="async"><img class="zr-l zx-arm zx-a-tap" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-stamp-arm-b.webp" style="--x:806;--y:380;--w:310;--h:404;--o:54.5% 3.7%" alt="" loading="lazy" decoding="async"><span class="zx-redflash"></span><span class="zx-papers"><i style="--x:-420;--y:-260;--r:-40deg;--d:0.00s"></i><i style="--x:380;--y:-300;--r:35deg;--d:0.05s"></i><i style="--x:-520;--y:60;--r:-70deg;--d:0.10s"></i><i style="--x:560;--y:-40;--r:60deg;--d:0.02s"></i><i style="--x:-300;--y:-380;--r:20deg;--d:0.08s"></i><i style="--x:250;--y:-360;--r:-25deg;--d:0.12s"></i></span><i class="zr-eye zr-eye-0" style="--ex:778;--ey:262;--ec:#ff2b4f"></i><i class="zr-eye zr-eye-1" style="--ex:855;--ey:287;--ec:#ff2b4f"></i></div></div>
<div class="zx-rig zx-art-rig zx-rig-claw"><div class="zx-art-in"><img class="zr-l zc-hair zc-hair-l" src="{{AppSubUrl}}/assets/zapret-moe/chars/claw-hair-l.webp" style="--x:0;--y:42;--w:402;--h:559;--o:100% 40%" alt="" loading="lazy" decoding="async"><img class="zr-l zc-hair zc-hair-r" src="{{AppSubUrl}}/assets/zapret-moe/chars/claw-hair-r.webp" style="--x:1199;--y:125;--w:389;--h:478;--o:0% 40%" alt="" loading="lazy" decoding="async"><img class="zr-l zc-base" src="{{AppSubUrl}}/assets/zapret-moe/chars/claw-base.webp" style="--x:398;--y:0;--w:805;--h:603" alt="" loading="lazy" decoding="async"><svg class="zc-wire" viewBox="0 0 1600 900" aria-hidden="true"><path class="zc-line-glow" d="M-3000 780 H4600"/><path class="zc-line" d="M-3000 780 H4600"/><g class="zc-p zc-pa zc-bad"><rect x="-58" y="-24" width="116" height="48" rx="12"/><text y="7">youtube.com</text></g><g class="zc-p zc-pb zc-bad"><rect x="-58" y="-24" width="116" height="48" rx="12"/><text y="7">discord.gg</text></g><g class="zc-p zc-pc"><rect x="-58" y="-24" width="116" height="48" rx="12"/><text y="7">tls</text></g><g class="zc-p zc-pd"><rect x="-58" y="-24" width="116" height="48" rx="12"/><text y="7">https</text></g><g class="zc-p zc-pe"><rect x="-58" y="-24" width="116" height="48" rx="12"/><text y="7">wss</text></g><circle class="zc-hit zc-hit-a" cx="338" cy="640" r="60"/><circle class="zc-hit zc-hit-b" cx="1278" cy="640" r="60"/></svg><img class="zr-l zc-arm zc-arm-l zc-open" src="{{AppSubUrl}}/assets/zapret-moe/chars/claw-arm-l-open.webp" style="--x:62;--y:195;--w:565;--h:467;--o:95.2% 11.8%" alt="" loading="lazy" decoding="async"><img class="zr-l zc-arm zc-arm-l zc-fist" src="{{AppSubUrl}}/assets/zapret-moe/chars/claw-arm-l-fist.webp" style="--x:139;--y:205;--w:484;--h:380;--o:95.2% 11.8%" alt="" loading="lazy" decoding="async"><img class="zr-l zc-arm zc-arm-r zc-open" src="{{AppSubUrl}}/assets/zapret-moe/chars/claw-arm-r-open.webp" style="--x:973;--y:157;--w:594;--h:525;--o:4.5% 15.8%" alt="" loading="lazy" decoding="async"><img class="zr-l zc-arm zc-arm-r zc-fist" src="{{AppSubUrl}}/assets/zapret-moe/chars/claw-arm-r-fist.webp" style="--x:994;--y:170;--w:515;--h:412;--o:1.2% 17.0%" alt="" loading="lazy" decoding="async"></div></div>
<div class="zx-rig zx-art-rig zx-rig-roof"><div class="zx-art-in"><img src="{{AppSubUrl}}/assets/zapret-moe/chars/roof-city.webp" alt="" loading="lazy"><img class="zr-l zo-lights zo-lights-0" src="{{AppSubUrl}}/assets/zapret-moe/chars/roof-lights-0.webp" style="--x:0;--y:0;--w:1600;--h:900" alt="" loading="lazy" decoding="async"><img class="zr-l zo-lights zo-lights-1" src="{{AppSubUrl}}/assets/zapret-moe/chars/roof-lights-1.webp" style="--x:0;--y:0;--w:1600;--h:900" alt="" loading="lazy" decoding="async"><img class="zr-l zo-lights zo-lights-2" src="{{AppSubUrl}}/assets/zapret-moe/chars/roof-lights-2.webp" style="--x:0;--y:0;--w:1600;--h:900" alt="" loading="lazy" decoding="async"><span class="zo-moon"></span><span class="zo-stars"><i style="--sx:180;--sy:60;--sd:0s"></i><i style="--sx:420;--sy:120;--sd:1.3s"></i><i style="--sx:700;--sy:40;--sd:0.6s"></i><i style="--sx:980;--sy:90;--sd:2.1s"></i><i style="--sx:1210;--sy:30;--sd:1.7s"></i><i style="--sx:1520;--sy:170;--sd:0.9s"></i><i style="--sx:300;--sy:190;--sd:2.6s"></i><i style="--sx:860;--sy:150;--sd:3.1s"></i></span><span class="zo-meteor"></span><div class="zo-girl zo-zt"><img class="zr-l zo-hair zo-hair-zt" src="{{AppSubUrl}}/assets/zapret-moe/chars/roof-zt-hair.webp" style="--x:346;--y:233;--w:216;--h:503;--o:99.1% 20%" alt="" loading="lazy" decoding="async"><img class="zr-l zo-body" src="{{AppSubUrl}}/assets/zapret-moe/chars/roof-zt.webp" style="--x:558;--y:193;--w:240;--h:552" alt="" loading="lazy" decoding="async"></div><div class="zo-girl zo-rkn"><img class="zr-l zo-hair zo-hair-rkn" src="{{AppSubUrl}}/assets/zapret-moe/chars/roof-rkn-hair.webp" style="--x:1018;--y:364;--w:263;--h:366;--o:0.4% 15%" alt="" loading="lazy" decoding="async"><img class="zr-l zo-body" src="{{AppSubUrl}}/assets/zapret-moe/chars/roof-rkn.webp" style="--x:794;--y:251;--w:228;--h:499" alt="" loading="lazy" decoding="async"></div></div></div>
<div class="zx-rig zx-art-rig zx-rig-splice zr-zt"><div class="zx-art-in"><img src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-splice.webp" alt="" loading="lazy"><img class="zr-l zr-hair zr-hair-l" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-splice-hair-l.webp" style="--x:314;--y:111;--w:395;--h:758;--o:100% 10%" alt="" loading="lazy" decoding="async"><img class="zr-l zr-hair zr-hair-r" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-splice-hair-r.webp" style="--x:851;--y:51;--w:504;--h:718;--o:0% 10%" alt="" loading="lazy" decoding="async"><img class="zr-l zx-arm zx-a-join-l" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-splice-arm-a.webp" style="--x:29;--y:441;--w:708;--h:459;--o:70.8% 6.3%" alt="" loading="lazy" decoding="async"><img class="zr-l zx-arm zx-a-join-r" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-splice-arm-b.webp" style="--x:856;--y:458;--w:663;--h:442;--o:32.3% 5.0%" alt="" loading="lazy" decoding="async"><span class="zx-joinglow"></span><span class="zx-bits"><i style="--x:-120;--y:-80;--d:0.00s"></i><i style="--x:90;--y:-120;--d:0.30s"></i><i style="--x:160;--y:-30;--d:0.60s"></i><i style="--x:-160;--y:20;--d:0.90s"></i><i style="--x:40;--y:-160;--d:1.20s"></i><i style="--x:-60;--y:-150;--d:1.50s"></i><i style="--x:130;--y:60;--d:1.80s"></i><i style="--x:-110;--y:90;--d:2.10s"></i></span><i class="zr-eye zr-eye-0" style="--ex:700;--ey:342;--ec:#35ff8a"></i><i class="zr-eye zr-eye-1" style="--ex:827;--ey:311;--ec:#3fb8ff"></i></div></div>
<div class="zx-rig zx-art-rig zx-rig-defeat"><div class="zx-art-in"><img src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-defeat.webp" alt="" loading="lazy"><img class="zr-l zr-hair zr-hair-l" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-defeat-hair-l.webp" style="--x:321;--y:0;--w:668;--h:729;--o:100% 20%" alt="" loading="lazy" decoding="async"><img class="zr-l zr-hair zr-hair-r" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-defeat-hair-r.webp" style="--x:1241;--y:3;--w:359;--h:785;--o:0% 10%" alt="" loading="lazy" decoding="async"><img class="zr-l zx-arm zx-a-flinch" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-defeat-arm-a.webp" style="--x:574;--y:146;--w:510;--h:159;--o:3.1% 65.4%" alt="" loading="lazy" decoding="async"><img class="zr-l zx-arm zx-a-swipe" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-defeat-arm-b.webp" style="--x:1142;--y:545;--w:435;--h:221;--o:4.1% 13.6%" alt="" loading="lazy" decoding="async"><img class="zx-gl zx-gl-a" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-defeat-flat.webp" alt="" loading="lazy"><img class="zx-gl zx-gl-b" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-defeat-flat.webp" alt="" loading="lazy"><span class="zx-beam"></span><i class="zr-eye zr-eye-0" style="--ex:1021;--ey:241;--ec:#ff2b4f"></i><i class="zr-eye zr-eye-1" style="--ex:1117;--ey:260;--ec:#ff2b4f"></i></div></div>
<div class="zx-rig zx-art-rig zx-rig-victory zr-zt"><div class="zx-art-in"><img src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-victory.webp" alt="" loading="lazy"><img class="zr-l zr-hair zr-hair-l" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-victory-hair-l.webp" style="--x:243;--y:124;--w:356;--h:776;--o:100% 10%" alt="" loading="lazy" decoding="async"><img class="zr-l zr-hair zr-hair-r" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-victory-hair-r.webp" style="--x:851;--y:81;--w:537;--h:688;--o:0% 5%" alt="" loading="lazy" decoding="async"><img class="zr-l zx-arm zx-a-pump" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-victory-arm-a-move.webp" style="--x:310;--y:0;--w:252;--h:300;--o:63.5% 95.0%" alt="" loading="lazy" decoding="async"><img class="zr-l" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-victory-arm-a-fix.webp" style="--x:418;--y:271;--w:280;--h:560" alt="" loading="lazy" decoding="async"><img class="zr-l zx-arm zx-a-cube" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-victory-arm-b-move.webp" style="--x:979;--y:484;--w:194;--h:181;--o:57.2% 97.2%" alt="" loading="lazy" decoding="async"><img class="zr-l" src="{{AppSubUrl}}/assets/zapret-moe/chars/art2-victory-arm-b-fix.webp" style="--x:1018;--y:649;--w:238;--h:234" alt="" loading="lazy" decoding="async"><span class="zx-cubeglow"></span><i class="zr-eye zr-eye-0" style="--ex:692;--ey:347;--ec:#35ff8a"></i><i class="zr-eye zr-eye-1" style="--ex:797;--ey:305;--ec:#3fb8ff"></i></div></div>
</div>
<div class="zx-stage">
<section class="zx-s zx-net" data-s="net">
<svg class="zx-svg" viewBox="0 0 1600 900"><defs><linearGradient id="zx-ig" x1="0" y1="1" x2="1" y2="0"><stop offset="0" stop-color="#feda75"/><stop offset=".4" stop-color="#d62976"/><stop offset="1" stop-color="#4f5bd5"/></linearGradient></defs><path class="zx-edge" d="M430 560 L620 250"/><path class="zx-edge" d="M430 560 L1010 210"/><path class="zx-edge" d="M430 560 L1220 420"/><path class="zx-edge" d="M430 560 L820 120"/><path class="zx-edge" d="M430 560 L1170 660"/><path class="zx-edge" d="M430 560 L820 700"/><path class="zx-edge" d="M620 250 L820 120"/><path class="zx-edge" d="M820 120 L1010 210"/><path class="zx-edge" d="M1010 210 L1220 420"/><path class="zx-edge" d="M1220 420 L1170 660"/><path class="zx-edge" d="M1170 660 L820 700"/><g class="zx-node" transform="translate(430 560)"><circle class="zx-halo" r="58"/><rect x="-38" y="-26" width="76" height="48" rx="6" fill="#0e1633" stroke="#4fd1ff" stroke-width="3"/><rect x="-48" y="22" width="96" height="8" rx="4" fill="#4fd1ff"/><circle cx="0" cy="-2" r="9" fill="#4fd1ff"/></g><g class="zx-node" transform="translate(620 250)"><circle class="zx-halo" r="58"/><rect x="-34" y="-24" width="68" height="48" rx="14" fill="#ff2d2d"/><path d="M-9 -12 14 0 -9 12Z" fill="#fff"/></g><g class="zx-node" transform="translate(1010 210)"><circle class="zx-halo" r="58"/><circle r="34" fill="#2aa3e0"/><path d="M-18 -1 17 -15 11 16 1 8 -6 14 -5 5 12 -9 -9 3Z" fill="#fff"/></g><g class="zx-node" transform="translate(1220 420)"><circle class="zx-halo" r="58"/><circle r="34" fill="#5865f2"/><path d="M-15 -10q15-7 30 0l5 18q-8 6-13 7l-3-5q-7 2-14 0l-3 5q-5-1-13-7z" fill="#fff"/><circle cx="-6" cy="3" r="3.2" fill="#5865f2"/><circle cx="6" cy="3" r="3.2" fill="#5865f2"/></g><g class="zx-node" transform="translate(820 120)"><circle class="zx-halo" r="58"/><circle r="34" fill="#f4f4f4"/><text y="13" text-anchor="middle" font-family="Georgia,serif" font-size="38" fill="#111">W</text></g><g class="zx-node" transform="translate(1170 660)"><circle class="zx-halo" r="58"/><rect x="-32" y="-32" width="64" height="64" rx="18" fill="url(#zx-ig)"/><rect x="-18" y="-18" width="36" height="36" rx="11" fill="none" stroke="#fff" stroke-width="5"/><circle r="8" fill="none" stroke="#fff" stroke-width="5"/></g><g class="zx-node" transform="translate(820 700)"><circle class="zx-halo" r="58"/><circle r="34" fill="#e8ecff"/><path d="M0-20a20 20 0 0 0-6 39c1 0 1-1 1-2v-6c-6 1-7-3-7-3-1-3-3-3-3-3-2-1 0-1 0-1 2 0 3 2 3 2 2 3 5 2 6 2 0-1 1-2 2-3-5-1-10-2-10-10 0-2 1-4 2-5 0-1-1-3 0-6 0 0 2 0 5 2a18 18 0 0 1 10 0c3-2 5-2 5-2 1 3 0 5 0 6 1 1 2 3 2 5 0 8-5 9-10 10 1 1 2 2 2 4v7c0 1 0 2 1 2A20 20 0 0 0 0-20z" fill="#111"/></g></svg>
<div class="zx-pks"><i class="zx-pk" style="offset-path:path('M430 560 L620 250');--d:-0.00s;--t:1.6s"></i><i class="zx-pk" style="offset-path:path('M620 250 L430 560');--d:-0.90s;--t:1.6s"></i><i class="zx-pk" style="offset-path:path('M430 560 L1010 210');--d:-0.37s;--t:1.9s"></i><i class="zx-pk" style="offset-path:path('M1010 210 L430 560');--d:-1.27s;--t:1.9s"></i><i class="zx-pk" style="offset-path:path('M430 560 L1220 420');--d:-0.74s;--t:2.2s"></i><i class="zx-pk" style="offset-path:path('M1220 420 L430 560');--d:-1.64s;--t:2.2s"></i><i class="zx-pk" style="offset-path:path('M430 560 L820 120');--d:-1.11s;--t:1.6s"></i><i class="zx-pk" style="offset-path:path('M820 120 L430 560');--d:-2.01s;--t:1.6s"></i><i class="zx-pk" style="offset-path:path('M430 560 L1170 660');--d:-1.48s;--t:1.9s"></i><i class="zx-pk" style="offset-path:path('M1170 660 L430 560');--d:-2.38s;--t:1.9s"></i><i class="zx-pk" style="offset-path:path('M430 560 L820 700');--d:-1.85s;--t:2.2s"></i><i class="zx-pk" style="offset-path:path('M820 700 L430 560');--d:-2.75s;--t:2.2s"></i></div>
<span class="zx-tag" style="left:430px;top:640px">это вы</span>
</section>
<section class="zx-s zx-env" data-s="env">
<div class="zx-envl">
<div class="zx-env-back"></div>
<div class="zx-env-flap2"></div>
<div class="zx-env-letter"><b class="zx-lock">🔒 зашифровано</b><code>7f3a·c19e·04bd·e2a8·91fc·5d07</code><code>b6e1·0a4f·d98c·3e27·c150·8a9d</code><code>44c2·f7a0·1b93·e6d5·20ce·7b18</code></div>
<div class="zx-env-front"><span class="zx-env-to">Кому:</span><strong>youtube.com</strong><em>SNI · адрес сервера</em></div>
<div class="zx-env-flap"></div>
</div>
<div class="zx-note zx-note-red" style="left:150px;top:440px"><b>адрес виден</b><span>его может прочитать любой, кто держит провод</span></div>
<div class="zx-note zx-note-cy" style="left:1150px;top:90px"><b>содержимое закрыто</b><span>что вы смотрите и пишете — не прочитать</span></div>
</section>
<section class="zx-s zx-rkn zx-rigslide" data-s="rkn">
</section>
<section class="zx-s zx-stamp zx-rigslide" data-s="stamp"></section>
<section class="zx-s zx-reg" data-s="reg">
<div class="zx-doc"><div class="zx-doc-head"><b>ЕДИНЫЙ РЕЕСТР</b><span>запрещённых ресурсов</span><strong class="zx-count"></strong></div><ul class="zx-doc-list"><li><span>#69294</span>youtube.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#83370</span>instagram.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#71033</span>discord.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#69222</span>facebook.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#76563</span>x.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#86989</span>linkedin.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#34890</span>rutracker.org<em>ЗАБЛОКИРОВАНО</em></li><li><span>#34203</span>medium.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#77096</span>soundcloud.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#72359</span>signal.org<em>ЗАБЛОКИРОВАНО</em></li><li><span>#92559</span>viber.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#90472</span>patreon.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#34402</span>twitch.tv<em>ЗАБЛОКИРОВАНО</em></li><li><span>#22336</span>imdb.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#68535</span>spotify.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#49767</span>chatgpt.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#28585</span>proton.me<em>ЗАБЛОКИРОВАНО</em></li><li><span>#21884</span>tor.org<em>ЗАБЛОКИРОВАНО</em></li><li><span>#80607</span>archive.org<em>ЗАБЛОКИРОВАНО</em></li><li><span>#93158</span>bbc.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#15489</span>dw.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#88045</span>meduza.io<em>ЗАБЛОКИРОВАНО</em></li><li><span>#61925</span>reddit.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#69374</span>quora.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#95710</span>deviantart.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#90683</span>flickr.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#95206</span>vimeo.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#30643</span>tiktok.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#69294</span>youtube.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#83370</span>instagram.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#71033</span>discord.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#69222</span>facebook.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#76563</span>x.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#86989</span>linkedin.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#34890</span>rutracker.org<em>ЗАБЛОКИРОВАНО</em></li><li><span>#34203</span>medium.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#77096</span>soundcloud.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#72359</span>signal.org<em>ЗАБЛОКИРОВАНО</em></li><li><span>#92559</span>viber.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#90472</span>patreon.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#34402</span>twitch.tv<em>ЗАБЛОКИРОВАНО</em></li><li><span>#22336</span>imdb.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#68535</span>spotify.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#49767</span>chatgpt.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#28585</span>proton.me<em>ЗАБЛОКИРОВАНО</em></li><li><span>#21884</span>tor.org<em>ЗАБЛОКИРОВАНО</em></li><li><span>#80607</span>archive.org<em>ЗАБЛОКИРОВАНО</em></li><li><span>#93158</span>bbc.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#15489</span>dw.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#88045</span>meduza.io<em>ЗАБЛОКИРОВАНО</em></li><li><span>#61925</span>reddit.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#69374</span>quora.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#95710</span>deviantart.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#90683</span>flickr.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#95206</span>vimeo.com<em>ЗАБЛОКИРОВАНО</em></li><li><span>#30643</span>tiktok.com<em>ЗАБЛОКИРОВАНО</em></li></ul></div>
</section>
<section class="zx-s zx-map" data-s="map">
<svg class="zx-svg" viewBox="0 0 1600 900"><path class="zx-wire2" d="M361 671 L295 659"/><path class="zx-wire2" d="M671 472 L663 439"/><path class="zx-wire2" d="M289 632 L361 671"/><path class="zx-wire2" d="M336 561 L291 503"/><path class="zx-wire2" d="M845 491 L924 497"/><path class="zx-wire2" d="M663 439 L582 439"/><path class="zx-wire2" d="M671 472 L681 410"/><path class="zx-wire2" d="M924 497 L1062 304"/><path class="zx-wire2" d="M845 491 L873 501"/><path class="zx-wire2" d="M473 404 L434 445"/><path class="zx-wire2" d="M1469 252 L1308 478"/><path class="zx-wire2" d="M1080 669 L1172 593"/><path class="zx-wire2" d="M435 381 L389 310"/><path class="zx-wire2" d="M131 445 L215 344"/><path class="zx-wire2" d="M375 424 L331 414"/><path class="zx-wire2" d="M1241 350 L1308 478"/><path class="zx-wire2" d="M277 424 L215 344"/><path class="zx-wire2" d="M473 404 L480 435"/><path class="zx-wire2" d="M873 501 L924 497"/><path class="zx-wire2" d="M336 561 L295 590"/><path class="zx-wire2" d="M239 171 L215 344"/><path class="zx-wire2" d="M1107 564 L1172 593"/><path class="zx-wire2" d="M1308 478 L1172 593"/><path class="zx-wire2" d="M375 424 L383 474"/><path class="zx-wire2" d="M289 632 L295 590"/><path class="zx-wire2" d="M708 163 L681 410"/><path class="zx-wire2" d="M291 503 L349 507"/><path class="zx-wire2" d="M473 404 L515 398"/><path class="zx-wire2" d="M708 163 L582 317"/><path class="zx-wire2" d="M1469 252 L1241 350"/><path class="zx-wire2" d="M426 501 L383 474"/><path class="zx-wire2" d="M473 404 L435 381"/><path class="zx-wire2" d="M748 420 L663 439"/><path class="zx-wire2" d="M1241 350 L1062 304"/><path class="zx-wire2" d="M426 501 L434 445"/><path class="zx-wire2" d="M582 439 L582 317"/><path class="zx-wire2" d="M277 424 L331 414"/><path class="zx-wire2" d="M302 256 L215 344"/><path class="zx-wire2" d="M435 381 L434 445"/><path class="zx-wire2" d="M434 445 L480 435"/><path class="zx-wire2" d="M383 474 L349 507"/><path class="zx-wire2" d="M582 439 L515 398"/><path class="zx-wire2" d="M1080 669 L1107 564"/><path class="zx-wire2" d="M131 445 L277 424"/><path class="zx-wire2" d="M289 632 L295 659"/><path class="zx-wire2" d="M582 317 L515 398"/><path class="zx-wire2" d="M748 420 L681 410"/><path class="zx-wire2" d="M515 398 L480 435"/><path class="zx-wire2" d="M336 561 L349 507"/><path class="zx-wire2" d="M663 439 L681 410"/><path class="zx-wire2" d="M291 503 L277 424"/><path class="zx-wire2" d="M302 256 L389 310"/><path class="zx-wire2" d="M302 256 L239 171"/><g class="zx-city" transform="translate(131 445)" style="--i:0"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city big" transform="translate(215 344)" style="--i:1"><circle class="zx-dot" r="5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/><text y="-16">Санкт-Петербург</text></g><g class="zx-city" transform="translate(239 171)" style="--i:2"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city big" transform="translate(277 424)" style="--i:3"><circle class="zx-dot" r="5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/><text y="-16">Москва</text></g><g class="zx-city" transform="translate(289 632)" style="--i:4"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(291 503)" style="--i:5"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(295 590)" style="--i:6"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(295 659)" style="--i:7"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(302 256)" style="--i:8"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(331 414)" style="--i:9"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(336 561)" style="--i:10"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(349 507)" style="--i:11"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(361 671)" style="--i:12"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(375 424)" style="--i:13"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(383 474)" style="--i:14"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(389 310)" style="--i:15"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(426 501)" style="--i:16"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(434 445)" style="--i:17"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(435 381)" style="--i:18"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city big" transform="translate(473 404)" style="--i:19"><circle class="zx-dot" r="5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/><text y="-16">Екатеринбург</text></g><g class="zx-city" transform="translate(480 435)" style="--i:20"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(515 398)" style="--i:21"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(582 317)" style="--i:22"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(582 439)" style="--i:23"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city big" transform="translate(663 439)" style="--i:24"><circle class="zx-dot" r="5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/><text y="-16">Новосибирск</text></g><g class="zx-city" transform="translate(671 472)" style="--i:25"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(681 410)" style="--i:26"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(708 163)" style="--i:27"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(748 420)" style="--i:28"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(845 491)" style="--i:29"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(873 501)" style="--i:30"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(924 497)" style="--i:31"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(1062 304)" style="--i:32"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city big" transform="translate(1080 669)" style="--i:33"><circle class="zx-dot" r="5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/><text y="-16">Владивосток</text></g><g class="zx-city" transform="translate(1107 564)" style="--i:34"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(1172 593)" style="--i:35"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(1241 350)" style="--i:36"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(1308 478)" style="--i:37"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g><g class="zx-city" transform="translate(1469 252)" style="--i:38"><circle class="zx-dot" r="3.5"/><rect class="zx-box" x="-9" y="-9" width="18" height="18" rx="3"/></g></svg>
<div class="zx-mapcount"><strong class="zx-count"></strong><span>городов с ТСПУ на схеме</span></div>
</section>
<section class="zx-s zx-xray" data-s="xray">
<svg class="zx-svg" viewBox="0 0 1600 900"><path class="zx-rail" d="M300 450 H1300"/><g transform="translate(250 450)"><rect x="-38" y="-26" width="76" height="48" rx="6" fill="#0e1633" stroke="#4fd1ff" stroke-width="3"/><rect x="-48" y="22" width="96" height="8" rx="4" fill="#4fd1ff"/><circle cx="0" cy="-2" r="9" fill="#4fd1ff"/></g><text class="zx-lbl" x="250" y="530">вы</text><g transform="translate(1350 450)"><rect x="-34" y="-24" width="68" height="48" rx="14" fill="#ff2d2d"/><path d="M-9 -12 14 0 -9 12Z" fill="#fff"/></g><text class="zx-lbl" x="1350" y="530">youtube.com</text><g class="zx-gate"><rect x="720" y="380" width="160" height="140" rx="16"/><text x="800" y="438">ТСПУ</text><rect class="zx-scan" x="728" y="446" width="144" height="4" rx="2"/><circle class="zx-led" cx="746" cy="500" r="5"/><circle class="zx-led" cx="764" cy="500" r="5"/><circle class="zx-led" cx="782" cy="500" r="5"/></g></svg><div class="zx-mini zx-m-ok"><b>sber.ru</b></div><div class="zx-mini zx-m-bad"><b>youtube.com</b></div><div class="zx-lens"><span class="zx-lens-a">sber.ru<b class="ok">✓ не в реестре</b></span><span class="zx-lens-b">youtube.com<b class="bad">✗ в реестре</b></span></div><div class="zx-cut">✂</div>
</section>
<section class="zx-s zx-claw zx-rigslide" data-s="claw"></section>
<section class="zx-s zx-slow" data-s="slow">
<div class="zx-player">
<div class="zx-pl-top"><svg viewBox="-34 -24 68 48"><rect x="-34" y="-24" width="68" height="48" rx="14" fill="#ff2d2d"/><path d="M-9 -12 14 0 -9 12Z" fill="#fff"/></svg><span>Как обойти блокировку — 12:47</span></div>
<div class="zx-pl-video"><i class="zx-spin"></i><span>Буферизация…</span></div>
<div class="zx-pl-bar"><i class="zx-pl-buf"></i><i class="zx-pl-play"></i></div>
<div class="zx-pl-bot"><span>▶ 0:03 / 12:47</span><b>144p</b></div>
</div>
<div class="zx-speed"><span>скорость</span><strong><i>12 Мбит/с</i><i>2 Мбит/с</i><i>480 кбит/с</i><i>128 кбит/с</i></strong></div>
</section>
<section class="zx-s zx-loss" data-s="loss">
<div class="zx-apps"><p>Приложения VPN в магазине</p><div class="zx-appgrid"><div class="zx-app" style="--i:0"><svg viewBox="0 0 40 40"><path d="M20 4 33 9v10c0 8-5.5 14-13 17C12.5 33 7 27 7 19V9z"/><path d="M14 20l4 4 8-9"/></svg><em>удалено</em></div><div class="zx-app" style="--i:1"><svg viewBox="0 0 40 40"><path d="M20 4 33 9v10c0 8-5.5 14-13 17C12.5 33 7 27 7 19V9z"/><path d="M14 20l4 4 8-9"/></svg><em>удалено</em></div><div class="zx-app" style="--i:2"><svg viewBox="0 0 40 40"><path d="M20 4 33 9v10c0 8-5.5 14-13 17C12.5 33 7 27 7 19V9z"/><path d="M14 20l4 4 8-9"/></svg><em>удалено</em></div><div class="zx-app" style="--i:3"><svg viewBox="0 0 40 40"><path d="M20 4 33 9v10c0 8-5.5 14-13 17C12.5 33 7 27 7 19V9z"/><path d="M14 20l4 4 8-9"/></svg><em>удалено</em></div><div class="zx-app" style="--i:4"><svg viewBox="0 0 40 40"><path d="M20 4 33 9v10c0 8-5.5 14-13 17C12.5 33 7 27 7 19V9z"/><path d="M14 20l4 4 8-9"/></svg><em>удалено</em></div><div class="zx-app" style="--i:5"><svg viewBox="0 0 40 40"><path d="M20 4 33 9v10c0 8-5.5 14-13 17C12.5 33 7 27 7 19V9z"/><path d="M14 20l4 4 8-9"/></svg><em>удалено</em></div><div class="zx-app" style="--i:6"><svg viewBox="0 0 40 40"><path d="M20 4 33 9v10c0 8-5.5 14-13 17C12.5 33 7 27 7 19V9z"/><path d="M14 20l4 4 8-9"/></svg><em>удалено</em></div><div class="zx-app" style="--i:7"><svg viewBox="0 0 40 40"><path d="M20 4 33 9v10c0 8-5.5 14-13 17C12.5 33 7 27 7 19V9z"/><path d="M14 20l4 4 8-9"/></svg><em>удалено</em></div></div></div>
<div class="zx-people"><p>Люди без доступа</p><div class="zx-crowd"><i style="--i:0"></i><i style="--i:1"></i><i style="--i:2"></i><i style="--i:3"></i><i style="--i:4"></i><i style="--i:5"></i><i style="--i:6"></i><i style="--i:7"></i><i style="--i:8"></i><i style="--i:9"></i><i style="--i:10"></i><i style="--i:11"></i><i style="--i:12"></i><i style="--i:13"></i></div></div>
</section>
<section class="zx-s zx-fake zx-trick" data-s="fake">
<svg class="zx-svg" viewBox="0 0 1600 900"><path class="zx-rail" d="M300 450 H1300"/><g transform="translate(250 450)"><rect x="-38" y="-26" width="76" height="48" rx="6" fill="#0e1633" stroke="#4fd1ff" stroke-width="3"/><rect x="-48" y="22" width="96" height="8" rx="4" fill="#4fd1ff"/><circle cx="0" cy="-2" r="9" fill="#4fd1ff"/></g><text class="zx-lbl" x="250" y="530">вы</text><g transform="translate(1350 450)"><rect x="-34" y="-24" width="68" height="48" rx="14" fill="#ff2d2d"/><path d="M-9 -12 14 0 -9 12Z" fill="#fff"/></g><text class="zx-lbl" x="1350" y="530">youtube.com</text><g class="zx-gate"><rect x="720" y="380" width="160" height="140" rx="16"/><text x="800" y="438">ТСПУ</text><rect class="zx-scan" x="728" y="446" width="144" height="4" rx="2"/><circle class="zx-led" cx="746" cy="500" r="5"/><circle class="zx-led" cx="764" cy="500" r="5"/><circle class="zx-led" cx="782" cy="500" r="5"/></g></svg><div class="zx-mini zx-m-fake" data-ttl="TTL 2"><b>google.com</b></div><div class="zx-mini zx-m-real"><b>youtube.com</b></div><div class="zx-think"><span class="a">google.com — ок, запомнила</span><span class="b">это соединение уже проверено</span></div><div class="zx-poof">TTL кончился — до сервера не дошёл</div><div class="zx-used">приём <b>fake</b> · в Zapret 2 GUI и Magisk Zapret 2</div>
</section>
<section class="zx-s zx-split zx-trick" data-s="split">
<svg class="zx-svg" viewBox="0 0 1600 900"><path class="zx-rail" d="M300 450 H1300"/><g transform="translate(250 450)"><rect x="-38" y="-26" width="76" height="48" rx="6" fill="#0e1633" stroke="#4fd1ff" stroke-width="3"/><rect x="-48" y="22" width="96" height="8" rx="4" fill="#4fd1ff"/><circle cx="0" cy="-2" r="9" fill="#4fd1ff"/></g><text class="zx-lbl" x="250" y="530">вы</text><g transform="translate(1350 450)"><rect x="-34" y="-24" width="68" height="48" rx="14" fill="#ff2d2d"/><path d="M-9 -12 14 0 -9 12Z" fill="#fff"/></g><text class="zx-lbl" x="1350" y="530">youtube.com</text><g class="zx-gate"><rect x="720" y="380" width="160" height="140" rx="16"/><text x="800" y="438">ТСПУ</text><rect class="zx-scan" x="728" y="446" width="144" height="4" rx="2"/><circle class="zx-led" cx="746" cy="500" r="5"/><circle class="zx-led" cx="764" cy="500" r="5"/><circle class="zx-led" cx="782" cy="500" r="5"/></g></svg><div class="zx-mini zx-m-whole"><b>youtube.com</b></div><div class="zx-mini zx-m-p1"><b>you</b></div><div class="zx-mini zx-m-p2"><b>tube.com</b></div><div class="zx-think"><span class="a">«you»? «tube.com»? не узнаю</span></div><div class="zx-join">youtube.com ✓</div><div class="zx-used">приём <b>split</b> · адрес режется на части</div>
</section>
<section class="zx-s zx-disorder zx-trick" data-s="disorder">
<svg class="zx-svg" viewBox="0 0 1600 900"><path class="zx-rail" d="M300 450 H1300"/><g transform="translate(250 450)"><rect x="-38" y="-26" width="76" height="48" rx="6" fill="#0e1633" stroke="#4fd1ff" stroke-width="3"/><rect x="-48" y="22" width="96" height="8" rx="4" fill="#4fd1ff"/><circle cx="0" cy="-2" r="9" fill="#4fd1ff"/></g><text class="zx-lbl" x="250" y="530">вы</text><g transform="translate(1350 450)"><rect x="-34" y="-24" width="68" height="48" rx="14" fill="#ff2d2d"/><path d="M-9 -12 14 0 -9 12Z" fill="#fff"/></g><text class="zx-lbl" x="1350" y="530">youtube.com</text><g class="zx-gate"><rect x="720" y="380" width="160" height="140" rx="16"/><text x="800" y="438">ТСПУ</text><rect class="zx-scan" x="728" y="446" width="144" height="4" rx="2"/><circle class="zx-led" cx="746" cy="500" r="5"/><circle class="zx-led" cx="764" cy="500" r="5"/><circle class="zx-led" cx="782" cy="500" r="5"/></g></svg><div class="zx-mini zx-m-p2 first"><b>2 · tube.com</b></div><div class="zx-mini zx-m-p1 second"><b>1 · you</b></div><div class="zx-think"><span class="a">сначала конец, потом начало?</span></div><div class="zx-join">1 + 2 → youtube.com ✓</div><div class="zx-used">приём <b>disorder</b> · части приходят не по порядку</div>
</section>
<section class="zx-s zx-tunnel zx-trick" data-s="tunnel">
<svg class="zx-svg" viewBox="0 0 1600 900"><path class="zx-rail" d="M300 450 H1300"/><g transform="translate(250 450)"><rect x="-38" y="-26" width="76" height="48" rx="6" fill="#0e1633" stroke="#4fd1ff" stroke-width="3"/><rect x="-48" y="22" width="96" height="8" rx="4" fill="#4fd1ff"/><circle cx="0" cy="-2" r="9" fill="#4fd1ff"/></g><text class="zx-lbl" x="250" y="530">вы</text><g transform="translate(1350 450)"><rect x="-34" y="-24" width="68" height="48" rx="14" fill="#ff2d2d"/><path d="M-9 -12 14 0 -9 12Z" fill="#fff"/></g><text class="zx-lbl" x="1350" y="530">youtube.com</text><g class="zx-gate"><rect x="720" y="380" width="160" height="140" rx="16"/><text x="800" y="438">ТСПУ</text><rect class="zx-scan" x="728" y="446" width="144" height="4" rx="2"/><circle class="zx-led" cx="746" cy="500" r="5"/><circle class="zx-led" cx="764" cy="500" r="5"/><circle class="zx-led" cx="782" cy="500" r="5"/></g></svg><div class="zx-mini zx-m-cap"><b>cdn.cloud · HTTPS</b><i>youtube.com</i></div><div class="zx-think"><span class="a">cdn.cloud — обычный сайт, пропускаю</span></div><div class="zx-used">приём <b>туннель</b> · VLESS и WSS в Zapret KVN и ZaStoGram</div>
</section>
<section class="zx-s zx-zt zx-rigslide" data-s="zt">
<div class="zx-flash"></div><div class="zx-speedlines"></div>
</section>
<section class="zx-s zx-p-gui zx-proj" data-s="p-gui">
<figure class="zx-pcard zx-shot-gui"><img src="{{AppSubUrl}}/assets/zapret-moe/shot-gui.webp" alt="" loading="lazy"></figure>
<div class="zx-ptext"><p class="zx-pchips"><span>windows</span></p><h3>Zapret 2 GUI</h3><ul><li style="--i:0">Готовые профили обхода для YouTube, Discord и заблокированных сайтов</li><li style="--i:1">Поставил, выбрал профиль — работает</li><li style="--i:2">Сборки из открытого кода в Forgejo Actions</li></ul></div>
</section>
<section class="zx-s zx-p-kvn zx-proj" data-s="p-kvn">
<figure class="zx-pcard "><img src="{{AppSubUrl}}/zapretkvn/ZapretKVN-android/media/branch/main/docs/assets/zapret-kvn-android-overview.webp" alt="" loading="lazy"></figure>
<div class="zx-ptext"><p class="zx-pchips"><span>android</span><span>windows</span></p><h3>Zapret KVN</h3><ul><li style="--i:0">Выборочная маршрутизация: вы решаете, что идёт в туннель</li><li style="--i:1">Android — на sing-box-extended, без root</li><li style="--i:2">Windows — Xray, sing-box и Zapret под одним капотом</li></ul></div>
</section>
<section class="zx-s zx-p-zsg zx-proj" data-s="p-zsg">
<figure class="zx-pcard "><img src="{{AppSubUrl}}/zastogram/ZaStoGram_desktop/media/branch/dev/docs/assets/zastogram-overview.webp" alt="" loading="lazy"></figure>
<div class="zx-ptext"><p class="zx-pchips"><span>android</span><span>desktop</span></p><h3>ZaStoGram</h3><ul><li style="--i:0">Telegram, который работает в сетях с DPI</li><li style="--i:1">MTProxy FakeTLS и WSS-транспорт</li><li style="--i:2">Защита приватности и обновления через F-Droid</li></ul></div>
</section>
<section class="zx-s zx-p-mag zx-proj" data-s="p-mag">
<figure class="zx-pcard "><img src="{{AppSubUrl}}/zapretdiscordyoutube/magisk-zapret2/media/branch/main/docs/assets/zapret2-control-ui.webp" alt="" loading="lazy"></figure>
<div class="zx-ptext"><p class="zx-pchips"><span>android</span><span>root</span></p><h3>Magisk Zapret 2</h3><ul><li style="--i:0">zapret2 работает на уровне системы — для всех приложений</li><li style="--i:1">Панель управления стратегиями прямо с телефона</li><li style="--i:2">Модуль Magisk: поставил и забыл</li></ul></div>
</section>
<section class="zx-s zx-infra" data-s="infra">
<svg class="zx-svg" viewBox="0 0 1600 900"><path class="zx-link" style="--i:1" d="M800 430 L420 230"/><path class="zx-link" style="--i:2" d="M800 430 L1180 230"/><path class="zx-link" style="--i:3" d="M800 430 L1260 520"/><path class="zx-link" style="--i:4" d="M800 430 L340 560"/><path class="zx-link" style="--i:5" d="M800 430 L800 730"/><path class="zx-link" style="--i:6" d="M800 430 L800 150"/></svg><div class="zx-inode c" style="left:800px;top:430px;--i:0"><b>git.zapret.moe</b><span>свой git-сервер</span></div><div class="zx-inode " style="left:420px;top:230px;--i:1"><b>Forgejo Actions</b><span>сборки из открытого кода</span></div><div class="zx-inode " style="left:1180px;top:230px;--i:2"><b>F-Droid</b><span>обновления приходят сами</span></div><div class="zx-inode " style="left:1260px;top:520px;--i:3"><b>зеркало на GitHub</b><span>копия всего кода</span></div><div class="zx-inode " style="left:340px;top:560px;--i:4"><b>wiki.zapret.moe</b><span>база знаний</span></div><div class="zx-inode " style="left:800px;top:730px;--i:5"><b>status.zapret.moe</b><span>статус серверов</span></div><div class="zx-inode " style="left:800px;top:150px;--i:6"><b>@zapretvpns_bot</b><span>VPN и поддержка</span></div>
</section>
<section class="zx-s zx-num" data-s="num">
<div class="zx-nums"><div><b data-z="commits_year">0</b><span>коммитов за год</span></div><div><b data-z="releases">0</b><span>релизов</span></div><div><b data-z="downloads">0</b><span>скачиваний сборок</span></div><div><b data-z="authors_year">0</b><span>авторов за год</span></div></div>
<svg class="zx-chart" viewBox="0 0 1200 240" preserveAspectRatio="none"><defs><linearGradient id="zx-cf" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#4fd1ff" stop-opacity=".45"/><stop offset="1" stop-color="#4fd1ff" stop-opacity="0"/></linearGradient></defs><path class="zx-ch-area"/><path class="zx-ch-line"/></svg>
</section>
<section class="zx-s zx-battle zx-rigslide" data-s="battle">
<canvas class="zx-bolt"></canvas><div class="zx-shock"></div>
</section>
<section class="zx-s zx-defeat zx-rigslide" data-s="defeat"></section>
<section class="zx-s zx-roof zx-rigslide" data-s="roof"></section>
<section class="zx-s zx-final" data-s="final">
<div class="zx-fin">
<p class="zx-final-k">zapret.moe</p>
<h2>Интернет должен быть <span>свободным</span></h2>
<p class="zx-final-s">Мы делаем инструменты обхода открыто и бесплатно. Присоединяйтесь.</p>
<div class="zx-final-btns"><button type="button" class="zb zb-main" data-go="#zpm-arsenal">скачать инструменты</button><a class="zb" href="https://t.me/zapretvpns_bot?start=site_hero" target="_blank" rel="noopener noreferrer">поддержать проект</a><button type="button" class="zb" data-go="">на сайт</button></div>
</div>
</section>
<section class="zx-s zx-fly" data-s="fly">
<svg class="zi-warp" viewBox="-800 -450 1600 900" preserveAspectRatio="xMidYMid slice" aria-hidden="true"></svg>
<div class="zx-flyhero"><img src="{{AppSubUrl}}/assets/zapret-moe/chars/zt-base.webp" alt="" loading="lazy"></div>
<div class="zx-flycards"><figure style="--x:-1;--i:0"><img src="{{AppSubUrl}}/assets/zapret-moe/shot-gui.webp" alt="" loading="lazy"><figcaption><b>Zapret 2 GUI</b></figcaption></figure><figure style="--x:1;--i:1"><img src="{{AppSubUrl}}/zapretkvn/ZapretKVN-android/media/branch/main/docs/assets/zapret-kvn-android-overview.webp" alt="" loading="lazy"><figcaption><b>Zapret KVN</b></figcaption></figure><figure style="--x:-1;--i:2"><img src="{{AppSubUrl}}/zastogram/ZaStoGram_desktop/media/branch/dev/docs/assets/zastogram-overview.webp" alt="" loading="lazy"><figcaption><b>ZaStoGram</b></figcaption></figure><figure style="--x:1;--i:3"><img src="{{AppSubUrl}}/zapretdiscordyoutube/magisk-zapret2/media/branch/main/docs/assets/zapret2-control-ui.webp" alt="" loading="lazy"><figcaption><b>Magisk Zapret 2</b></figcaption></figure></div>
</section>
</div>
<div class="zx-top">
<div class="zx-acts"></div>
<div class="zx-ctl">
<button class="zx-btn zx-sound" type="button" data-a="sound" tabindex="-1"><svg viewBox="0 0 20 20"><path d="M3 8h3l4-4v12l-4-4H3z"/><path class="zx-snd-w" d="M13 7c1.3 1.6 1.3 4.4 0 6M15.5 5c2.6 3 2.6 7 0 10"/><path class="zx-snd-x" d="M13 8l5 5m0-5-5 5"/></svg><span class="zx-lbl-t">звук</span></button>
<button class="zx-btn" type="button" data-a="pause" tabindex="-1"><svg viewBox="0 0 20 20"><path class="zx-pause-bars" d="M7 5v10M13 5v10"/><path class="zx-pause-play" d="M7 5l8 5-8 5z"/></svg><span class="zx-lbl-t">пауза</span><kbd>␣</kbd></button>
<button class="zx-btn" type="button" data-a="skip" tabindex="-1"><span>пропустить</span><kbd>esc</kbd></button>
</div>
</div>
<div class="zx-cap"><strong></strong><span></span></div>
<div class="zx-nav">
<button class="zx-btn" type="button" data-a="prev" tabindex="-1" aria-label="Назад"><svg viewBox="0 0 20 20"><path d="M12 4l-6 6 6 6"/></svg></button>
<span class="zx-hint"><span class="zx-hint-nav">← → листать · клик — дальше</span><span class="zx-hint-snd">коснитесь — включится звук</span></span>
<button class="zx-btn" type="button" data-a="next" tabindex="-1" aria-label="Дальше"><svg viewBox="0 0 20 20"><path d="M8 4l6 6-6 6"/></svg></button>
<button class="zx-btn" type="button" data-a="act" tabindex="-1"><span>следующая глава</span><svg viewBox="0 0 20 20"><path d="M5 4l6 6-6 6M11 4l6 6-6 6"/></svg></button>
</div>
</div>
<!-- ── Шапка ─────────────────────────────────────────────── -->
<section class="zh" aria-labelledby="zpm-title">
<div class="zs zh-grid">
<div class="zh-copy">
<p class="zh-kicker"><span class="zh-live" aria-hidden="true"></span>git-сервер сообщества Zapret.Moe</p>
<h1 id="zpm-title" aria-label="Интернет должен быть свободным"><span class="zh-w" aria-hidden="true"><span style="--i:0">Интернет</span></span> <span class="zh-w" aria-hidden="true"><span style="--i:1">должен</span></span> <span class="zh-w" aria-hidden="true"><span style="--i:2">быть</span></span> <span class="zh-free" aria-hidden="true"><span class="zh-l" style="--i:0">с</span><span class="zh-l" style="--i:1">в</span><span class="zh-l" style="--i:2">о</span><span class="zh-l" style="--i:3">б</span><span class="zh-l" style="--i:4">о</span><span class="zh-l" style="--i:5">д</span><span class="zh-l" style="--i:6">н</span><span class="zh-l" style="--i:7">ы</span><span class="zh-l" style="--i:8">м</span><svg class="zh-chain" viewBox="0 0 400 40" preserveAspectRatio="none"><g class="zh-chain-l"><path d="M0 20 H 196"/><path class="zh-chain-b" d="M0 20 H 196"/></g><g class="zh-chain-r"><path d="M204 20 H 400"/><path class="zh-chain-b" d="M204 20 H 400"/></g></svg><span class="zh-lock"><svg viewBox="0 0 40 50"><path class="zh-shackle" d="M11 23 V15 a9 9 0 0 1 18 0 V23"/><rect x="5" y="21" width="30" height="25" rx="6"/><path class="zh-key" d="M20 29 v8 M17 31 a3 3 0 1 1 6 0"/></svg></span><span class="zh-bits"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></span><svg class="zh-under" viewBox="0 0 400 24" preserveAspectRatio="none"><path d="M4 16 C 80 4, 150 22, 220 12 S 350 6, 396 14"/></svg></span></h1>
<p class="zh-lead">РКН-тян режет провода, а мы их сращиваем. Здесь живут открытые инструменты обхода блокировок: исходники, сборки и обсуждения. Держим сервер сами, чтобы код нельзя было убрать одной жалобой на платформу.</p>
<p class="zh-ticker">Помогаем открыть <span class="zh-flip"><span>YouTube</span><span>Discord</span><span>Telegram</span><span>WhatsApp</span><span>Signal</span><span>всё остальное</span></span></p>
<p class="zh-stats" id="zh-stats" hidden><span><b data-hs="commits_year">0</b> коммитов за год</span><span><b data-hs="downloads">0</b> скачиваний</span><span><b data-hs="repos_public">0</b> открытых репозиториев</span></p>
<div class="zh-actions">
<a class="zb zb-main" href="#zpm-arsenal">к инструментам<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M4 10h11m-4-5 5 5-5 5"/></svg></a>
<a class="zb" href="{{AppSubUrl}}/explore/repos">все репозитории</a>
{{if .IsSigned}}<a class="zb" href="{{AppSubUrl}}/">моя лента</a>{{else}}<a class="zb" href="{{AppSubUrl}}/user/sign_up">аккаунт без почты</a>{{end}}
</div>
<p class="zh-replay" id="zpm-replay" hidden><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M4 2.5v11l9-5.5z"/></svg>история zapret.moe: <button type="button" data-mode="full">целиком · 2 мин</button> <button type="button" data-mode="short">коротко</button></p>
</div>
<figure class="zh-art">
<div class="zh-art-frame">
<img src="{{AppSubUrl}}/zapretdiscordyoutube.png" width="640" height="640" alt="РКН-тян болгаркой режет кабель «интернет», над ней нависает цифровой надзор с красными глазами" fetchpriority="high">
<svg class="zh-art-fx" viewBox="0 0 640 640" aria-hidden="true">
<g class="zh-eyes"><ellipse cx="302" cy="62" rx="16" ry="7"/><ellipse cx="342" cy="62" rx="16" ry="7"/></g>
<g class="zh-sparks" transform="translate(338 500)">
<path d="M0 0 L -46 22"/><path d="M0 0 L -60 -6"/><path d="M0 0 L -38 40"/><path d="M0 0 L -22 52"/><path d="M0 0 L -70 12"/><path d="M0 0 L -52 34"/>
</g>
<path class="zh-scan" d="M0 0 H 640"/>
</svg>
</div>
<figcaption>РКН-тян за работой</figcaption>
</figure>
</div>
<!-- мини-игра: спаси пакеты от когтей РКН-тян -->
<div class="zs">
<div class="zg" id="zg-packets">
<div class="zg-top">
<div class="zg-title"><span class="zg-badge">мини-игра</span><strong>Спасите пакеты от РКН-тян</strong><span>Кликайте по пакетам, пока их не схватили когти: щит Запрет-тян их защитит.</span></div>
<div class="zg-score"><span>спасено <b data-g="saved">0</b></span><span>схвачено <b data-g="lost">0</b></span><span>рекорд <b data-g="best">0</b></span></div>
</div>
<canvas class="zg-canvas" aria-label="Мини-игра: провод с пакетами"></canvas>
<div class="zg-toast" hidden><b></b><span>Помогите Запрет-тян спасать пакеты и дальше —</span><a href="https://t.me/zapretvpns_bot?start=site_story" target="_blank" rel="noopener noreferrer">поддержать проект</a></div>
</div>
</div>
<!-- дуэль: Запрет-тян против РКН-тян -->
<div class="zd" id="zpm-duel">
<div class="zd-vs" aria-hidden="true">
<svg viewBox="0 0 120 400" preserveAspectRatio="none"><path class="zd-glow" d="M60 0 L 46 60 L 70 92 L 38 170 L 74 214 L 44 290 L 68 330 L 52 400"/><path class="zd-bolt zd-bolt-a" d="M60 0 L 46 60 L 70 92 L 38 170 L 74 214 L 44 290 L 68 330 L 52 400"/><path class="zd-bolt zd-bolt-b" d="M62 0 L 78 54 L 52 104 L 82 180 L 48 226 L 78 300 L 56 344 L 66 400"/><path class="zd-branch zd-br-1" d="M70 92 L 100 118 L 112 150"/><path class="zd-branch zd-br-2" d="M38 170 L 14 196 L 6 236"/><path class="zd-branch zd-br-3" d="M44 290 L 20 318 L 16 352"/><path class="zd-branch zd-br-4" d="M74 214 L 104 240"/></svg>
<canvas class="zd-canvas"></canvas>
<span>VS</span>
</div>
<div class="zd-stage">
<div class="zf zf-rkn" style="left:49.88%;top:9.86%;width:57.31%;height:94.1%" role="img" aria-label="РКН-тян в полный рост бросается на Запрет-тян, выставив когти"><div class="zf-in"><img class="zf-l zf-hair" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-rkn-hair.webp" style="left:64.05%;top:5.84%;width:31.53%;height:59.4%;transform-origin:0.24% 40%" alt="" loading="lazy" decoding="async"><img class="zf-l zf-base" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-rkn-base.webp" style="left:4.81%;top:0%;width:90.69%;height:94.47%" alt="" loading="lazy" decoding="async"><img class="zf-l zf-arm0" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-rkn-arm0.webp" style="left:2.37%;top:19.02%;width:23.97%;height:16.58%;transform-origin:98.41% 23.08%" alt="" loading="lazy" decoding="async"><img class="zf-l zf-arm1" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-rkn-arm1.webp" style="left:40.53%;top:19.66%;width:32.29%;height:20.62%;transform-origin:2.13% 15.46%" alt="" loading="lazy" decoding="async"></div></div>
<div class="zf zf-zt" style="left:2.38%;top:6.43%;width:48.56%;height:94.1%" role="img" aria-label="Запрет-тян в боевой стойке бьёт кулаком"><div class="zf-in"><img class="zf-l zf-hair" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-zt-hair.webp" style="left:3.06%;top:2.66%;width:34.05%;height:88.2%;transform-origin:99.47% 40%" alt="" loading="lazy" decoding="async"><img class="zf-l zf-base" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-zt-base.webp" style="left:14.86%;top:0%;width:83.33%;height:98.09%" alt="" loading="lazy" decoding="async"><img class="zf-l zf-arm0" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-zt-arm0.webp" style="left:35.86%;top:21.04%;width:18.29%;height:24.12%;transform-origin:65.02% 44.93%" alt="" loading="lazy" decoding="async"><img class="zf-l zf-arm1" src="{{AppSubUrl}}/assets/zapret-moe/chars/duel-zt-arm1.webp" style="left:65.95%;top:25.19%;width:29.64%;height:18.92%;transform-origin:5.47% 29.78%" alt="" loading="lazy" decoding="async"></div></div>
</div>
<p class="zd-card zd-card-zt"><b>Запрет-тян</b><span>за открытый интернет: обход DPI, свои сервера, открытый код</span></p>
<p class="zd-card zd-card-rkn"><b>РКН-тян</b><span>за реестр: ТСПУ, замедления, блокировки и когти</span></p>
</div>
</section>
<!-- ── Пульс ────────────────────────────────────────────── -->
<section class="zp" id="zpm-pulse" data-stats="{{AppSubUrl}}/assets/zapret-moe-stats/stats.json" data-heatmap="{{AppSubUrl}}/api/v1/users/loop-uh/heatmap" hidden aria-labelledby="zpm-pulse-title">
<div class="zs">
<div class="zsec-head">
<p class="zeb">пульс разработки</p>
<h2 id="zpm-pulse-title">Сопротивление не спит</h2>
<p class="zsec-note">Коммиты во всех наших репозиториях по неделям. Наведите на график или коснитесь его, выключайте проекты в легенде.</p>
</div>
<dl class="zp-kpis">
<div class="zp-kpi zp-kpi-main"><dt>коммитов за год</dt><dd data-k="commits_year">0</dd><p class="zp-kpi-sub"><b data-k="commits_7d">0</b> за последнюю неделю</p></div>
<div class="zp-kpi"><dt>скачиваний сборок</dt><dd data-k="downloads">0</dd></div>
<div class="zp-kpi"><dt>релизов</dt><dd data-k="releases">0</dd></div>
<div class="zp-kpi"><dt>дней с коммитами за год</dt><dd data-k="active_days_year">0</dd></div>
<div class="zp-kpi"><dt>открытых репозиториев</dt><dd data-k="repos_public">0</dd></div>
<div class="zp-kpi"><dt>авторов за год</dt><dd data-k="authors_year">0</dd></div>
</dl>
<div class="zp-panel">
<div class="zp-ctl">
<div class="zp-range" role="group" aria-label="Период">
<button type="button" data-w="13">3 месяца</button>
<button type="button" data-w="26">полгода</button>
<button type="button" data-w="52" aria-pressed="true">год</button>
</div>
<div class="zp-legend" id="zp-legend" role="group" aria-label="Проекты"></div>
</div>
<div class="zp-chart" id="zp-chart">
<svg aria-label="График коммитов по неделям" role="img"></svg>
<div class="zp-tip" hidden></div>
</div>
</div>
</div>
</section>
<!-- ── На связи ─────────────────────────────────────────── -->
<section class="zw" id="zpm-live" data-stats="{{AppSubUrl}}/api/zapret/stats.json" data-stats-kvn="{{AppSubUrl}}/api/zapret/kvn/stats.json" hidden aria-labelledby="zpm-live-title">
<div class="zs">
<div class="zsec-head">
<p class="zeb">автообновление</p>
<h2 id="zpm-live-title">Кто сейчас на связи</h2>
<p class="zsec-note">Каждая запущенная программа держит одно соединение с нашим сервером и ждёт сигнал о новой версии. Мы считаем эти соединения, а адреса не храним. <span data-k="scope">Пока в счёте только Zapret 2 GUI начиная с версии 21.1.7.121 — число растёт по мере обновления.</span></p>
<div class="zp-range zw-prod" role="group" aria-label="Программа">
<button type="button" data-p="gui" aria-pressed="true">Zapret 2 GUI</button>
<button type="button" data-p="kvn">Zapret KVN</button>
</div>
</div>
<p class="zw-empty" hidden>У Zapret KVN сигнал сервера о новой версии появляется со следующим выпуском. Как только первые программы обновятся, здесь будут те же числа и графики.</p>
<dl class="zp-kpis">
<div class="zp-kpi zp-kpi-main"><dt>программ на связи прямо сейчас</dt><dd data-k="online">0</dd><p class="zp-kpi-sub"><b data-k="users">0</b> <span data-k="users-word">пользователей</span> за сегодня</p></div>
<div class="zp-kpi"><dt>на последней версии</dt><dd data-k="share">—</dd></div>
<div class="zp-kpi" hidden><dt>последняя версия Dev</dt><dd data-k="latest-dev">—</dd></div>
<div class="zp-kpi" hidden><dt>последняя версия Stable</dt><dd data-k="latest-stable">—</dd></div>
<div class="zp-kpi" hidden><dt data-k="half-label">версия дошла до половины программ</dt><dd data-k="half">—</dd></div>
<div class="zp-kpi" hidden><dt data-k="queued-label">ждут очереди на скачивание</dt><dd data-k="queued">0</dd></div>
<div class="zp-kpi" hidden><dt data-k="peak-label">пик за сутки</dt><dd data-k="peak">0</dd></div>
<div class="zp-kpi" hidden><dt data-k="done-label">программ обновилось за сутки</dt><dd data-k="done">0</dd></div>
<div class="zp-kpi" hidden><dt>обычно от разрешения до запуска новой версии</dt><dd data-k="took">—</dd></div>
<div class="zp-kpi" hidden><dt>обновлений не удалось за сутки</dt><dd data-k="failed">0</dd></div>
</dl>
<div class="zw-scene" hidden>
<div class="zw-scene-main">
<p class="zw-cap">что происходит прямо сейчас · <span data-k="scene-scale">точка — одна программа</span></p>
<canvas class="zw-scene-cv" role="img" aria-label="Сценка: программы держат соединение с сервером и переспрашивают, нет ли новой версии"></canvas>
<ul class="zw-keys zw-scene-keys" aria-label="Обозначения">
<li><i class="zw-k-new"></i>на последней версии</li>
<li><i class="zw-k-old"></i>на прежней версии</li>
<li><i class="zw-k-tray"></i>в трее</li>
<li><i class="zw-k-busy"></i>заняты: игра, проверка сети</li>
<li><i class="zw-k-ask"></i>вопрос «есть новее?»</li>
<li><i class="zw-k-grant"></i>разрешение обновиться</li>
</ul>
</div>
<div class="zw-scene-side">
<dl class="zw-flow">
<div><dt>вопросов серверу за минуту</dt><dd data-k="rpm">0</dd></div>
<div><dt>соединений сервер держит открытыми</dt><dd data-k="held">0</dd></div>
<div hidden><dt>программ заняты и просят не обновлять</dt><dd data-k="busy">0</dd></div>
</dl>
<p class="zw-cap">что программа посылает и что слышит в ответ</p>
<ol class="zw-log" aria-live="off"></ol>
<p class="zw-scene-note">Сценка идёт по настоящим числам: столько программ, столько вопросов в минуту. Какая именно точка спросила — условность: адресов мы не храним.</p>
</div>
</div>
<div class="zw-stage" hidden>
<p class="zw-cap">раздача новой версии по ступеням: сначала малой доле программ, дальше — когда они обновились и снова вышли на связь</p>
<div class="zw-stage-rows"></div>
</div>
<div class="zw-wire" hidden>
<p class="zw-cap">версии на связи</p>
<div class="zw-bar" role="group" aria-label="Доли версий среди программ на связи"></div>
<div class="zp-tip" hidden></div>
<ul class="zw-list"></ul>
</div>
<div class="zw-wire zw-act" hidden>
<p class="zw-cap">чем заняты программы · <span data-k="act-note"></span></p>
<div class="zw-bar" role="group" aria-label="Чем заняты программы на связи"></div>
<ul class="zw-list"></ul>
</div>
<div class="zw-wire zw-act zw-tail" hidden>
<p class="zw-cap">кто ещё не на последней версии и почему · <span data-k="tail-note"></span></p>
<div class="zw-bar" role="group" aria-label="Почему программы на связи ещё не обновились"></div>
<ul class="zw-list"></ul>
</div>
<div class="zw-wire zw-why" hidden>
<p class="zw-cap">почему обновление не прошло · за сутки</p>
<div class="zw-why-cols">
<div class="zw-why-col" data-w="why"><p class="zw-why-head">не поставилось <span>— держит раздачу версии</span></p><ul class="zw-list"></ul></div>
<div class="zw-why-col" data-w="miss"><p class="zw-why-head">не скачалось <span>— раздачу не держит</span></p><ul class="zw-list"></ul></div>
</div>
</div>
<div class="zw-ctl" hidden>
<div class="zp-range" role="group" aria-label="Период">
<button type="button" data-r="24h" aria-pressed="true">сутки</button>
<button type="button" data-r="7d">неделя</button>
<button type="button" data-r="30d">месяц</button>
</div>
<div class="zp-legend zw-legend" role="group" aria-label="Каналы">
<button type="button" class="zp-lg" data-c="stable" aria-pressed="true"><i></i>Stable</button>
<button type="button" class="zp-lg" data-c="dev" aria-pressed="true"><i></i>Dev</button>
</div>
</div>
<div class="zw-day" hidden>
<p class="zw-cap">программ на связи</p>
<div class="zw-chart"><svg aria-label="График числа программ на связи" role="img"></svg><div class="zp-tip" hidden></div></div>
</div>
<div class="zw-upd" hidden>
<p class="zw-cap">обновления программ</p>
<ul class="zw-keys" aria-label="Обозначения">
<li><i class="zw-k-grant"></i>сервер разрешил обновиться</li>
<li><i class="zw-k-done"></i>обновились и вышли на связь</li>
<li><i class="zw-k-fail"></i>обновиться не удалось</li>
</ul>
<div class="zw-chart zw-chart-s"><svg aria-label="График обновлений программ" role="img"></svg><div class="zp-tip" hidden></div></div>
</div>
<div class="zw-days" hidden>
<p class="zw-cap">разных пользователей по дням</p>
<div class="zw-chart zw-chart-s"><svg aria-label="График числа пользователей по дням" role="img"></svg><div class="zp-tip" hidden></div></div>
<details class="zw-tbl"><summary>показать таблицей</summary><div class="zw-tbl-scroll"><table data-t="days"><thead><tr><th data-s="d">день</th><th data-s="total">всего</th><th data-s="stable">Stable</th><th data-s="dev">Dev</th></tr></thead><tbody></tbody></table></div></details>
</div>
<div class="zw-roll" hidden>
<div class="zw-roll-side">
<p class="zw-cap">как расходились версии</p>
<div class="zw-rels" role="group" aria-label="Выпуски"></div>
</div>
<div class="zw-roll-main">
<div class="zw-roll-head">
<p class="zw-cap zw-roll-cap">доля программ канала на новой версии</p>
<div class="zp-range zw-zoom" role="group" aria-label="Отрезок времени после выхода">
<button type="button" data-z="600">10 минут</button>
<button type="button" data-z="3600">час</button>
<button type="button" data-z="0">всё время</button>
</div>
</div>
<div class="zw-chart zw-chart-s zw-curve"><svg aria-label="График доли программ на новой версии после выпуска" role="img"></svg><div class="zp-tip" hidden></div></div>
<p class="zw-facts" hidden></p>
<div class="zw-took" hidden>
<p class="zw-cap">сколько занимало обновление: от разрешения сервера до запуска новой версии</p>
<div class="zw-chart zw-chart-xs"><svg aria-label="График времени обновления" role="img"></svg><div class="zp-tip" hidden></div></div>
</div>
</div>
</div>
<details class="zw-tbl zw-hist" hidden><summary>история выпусков таблицей</summary><div class="zw-tbl-scroll"><table data-t="rolls"><thead><tr><th data-s="version">версия</th><th data-s="released_at">вышла</th><th data-s="half_sec">до половины</th><th data-s="ninety_sec">до 90%</th><th data-s="full_sec">открыта всем</th><th data-s="granted">получили</th><th data-s="confirmed">обновились</th><th data-s="failed">не вышло</th><th data-s="took_median">обычно за</th></tr></thead><tbody></tbody></table></div></details>
</div>
</section>
<!-- ── Адреса ───────────────────────────────────────────── -->
<!-- Сам виджет — общий модуль /_sites/mirrors-widget.js (его подгружает sites.js), данные —
/_sites/mirrors.json от zapret-mirror-manager; тот же виджет стоит на главной вики. -->
<section class="zm-sec" id="zpm-mirrors" aria-labelledby="zpm-mirrors-title">
<div class="zs">
<div class="zsec-head">
<p class="zeb">адреса сайта</p>
<h2 id="zpm-mirrors-title">Где сайт открывается</h2>
<p class="zsec-note">git.zapret.moe в России блокируют по имени, поэтому у сайта есть другие адреса — это тот же сервер, вход и настройки на них общие. Каждые 20 минут мы проверяем все адреса из домашних сетей в России, а кнопкой ниже их можно проверить со своего устройства.</p>
</div>
<div data-zapret-mirrors data-zapret-mirrors-first="git"></div>
</div>
</section>
<!-- ── Арсенал──────────────────────────────────────────── -->
<section class="za" id="zpm-arsenal" aria-labelledby="zpm-arsenal-title">
<div class="zs">
<div class="zsec-head">
<p class="zeb">арсенал Запрет-тян</p>
<h2 id="zpm-arsenal-title">Чем мы режем ниточки</h2>
</div>
<div class="za-grid">
<article class="zc zc-gui">
<div class="zc-body">
<p class="zc-tags"><span>windows</span><span>флагман</span></p>
<h3>Zapret 2 GUI</h3>
<p>Лаунчер и профили обхода DPI: YouTube, Discord и заблокированные сайты. Поставил, выбрал профиль — работает.</p>
<div class="zc-links">
<a class="zb zb-main zb-sm" href="{{AppSubUrl}}/zapretdiscordyoutube/zapretgui/releases">скачать</a>
<a class="zb zb-sm" href="{{AppSubUrl}}/zapretdiscordyoutube/zapretgui">исходники</a>
</div>
</div>
<a class="zc-win" href="{{AppSubUrl}}/zapretdiscordyoutube/zapretgui" aria-label="Открыть репозиторий Zapret 2 GUI">
<img src="{{AppSubUrl}}/assets/zapret-moe/shot-gui.webp" width="1200" height="804" alt="Окно Zapret 2 GUI: статус обхода, пресеты и настройки программы" loading="lazy">
</a>
</article>
<article class="zc zc-art">
<img class="zc-cover" src="{{AppSubUrl}}/zapretkvn/ZapretKVN-android/media/branch/main/docs/assets/zapret-kvn-android-overview.webp" width="2000" height="850" alt="Обложка Zapret KVN" loading="lazy">
<div class="zc-body">
<p class="zc-tags"><span>android</span><span>windows</span></p>
<h3>Zapret KVN</h3>
<p>VPN-клиент с выборочной маршрутизацией: сами решаете, какие приложения и сайты идут через туннель.</p>
<ul class="zc-vers">
<li><a href="{{AppSubUrl}}/zapretkvn/ZapretKVN-android"><b>android</b>на sing-box-extended, без root</a><a class="zc-dl" href="{{AppSubUrl}}/zapretkvn/ZapretKVN-android/releases" aria-label="Сборки Zapret KVN для Android">↓</a></li>
<li><a href="{{AppSubUrl}}/zapretkvn/zapret-kvn"><b>windows</b>Xray, sing-box и Zapret вместе</a><a class="zc-dl" href="{{AppSubUrl}}/zapretkvn/zapret-kvn/releases" aria-label="Сборки Zapret KVN для Windows">↓</a></li>
</ul>
</div>
</article>
<article class="zc zc-art">
<img class="zc-cover" src="{{AppSubUrl}}/zastogram/ZaStoGram_desktop/media/branch/dev/docs/assets/zastogram-overview.webp" width="2000" height="850" alt="Обложка ZaStoGram" loading="lazy">
<div class="zc-body">
<p class="zc-tags"><span>android</span><span>desktop</span></p>
<h3>ZaStoGram</h3>
<p>Форк Telegram для сетей с DPI: MTProxy FakeTLS, WSS-транспорт и защита приватности.</p>
<ul class="zc-vers">
<li><a href="{{AppSubUrl}}/zastogram/ZaStoGram"><b>android</b>FakeTLS, WSS, приватность</a><a class="zc-dl" href="{{AppSubUrl}}/zastogram/ZaStoGram/releases" aria-label="Сборки ZaStoGram для Android">↓</a></li>
<li><a href="{{AppSubUrl}}/zastogram/ZaStoGram_desktop"><b>desktop</b>форк Telegram Desktop</a><a class="zc-dl" href="{{AppSubUrl}}/zastogram/ZaStoGram_desktop/releases" aria-label="Сборки ZaStoGram Desktop">↓</a></li>
</ul>
</div>
</article>
<article class="zc zc-art zc-wide">
<img class="zc-cover" src="{{AppSubUrl}}/zapretdiscordyoutube/magisk-zapret2/media/branch/main/docs/assets/zapret2-control-ui.webp" width="2000" height="850" alt="Обложка Magisk Zapret 2" loading="lazy">
<div class="zc-body">
<p class="zc-tags"><span>android</span><span>root</span></p>
<h3>Magisk Zapret 2</h3>
<p>Модуль Magisk: zapret2 работает на уровне системы, а панель управления настраивает стратегии прямо с телефона.</p>
<div class="zc-links">
<a class="zb zb-main zb-sm" href="{{AppSubUrl}}/zapretdiscordyoutube/magisk-zapret2/releases">скачать</a>
<a class="zb zb-sm" href="{{AppSubUrl}}/zapretdiscordyoutube/magisk-zapret2">исходники</a>
</div>
</div>
</article>
</div>
</div>
</section>
<!-- ── Инвентарь ────────────────────────────────────────── -->
<section class="zt" aria-labelledby="zpm-tools-title">
<div class="zs zt-grid">
<div class="zsec-head zt-head">
<p class="zeb">по карманам</p>
<h2 id="zpm-tools-title">Мелкий инвентарь</h2>
<a class="zmore" href="{{AppSubUrl}}/zapretdiscordyoutube">вся организация →</a>
</div>
<ul class="zt-list">
<li><a href="https://yt.zapret.moe/" target="_blank" rel="noopener noreferrer">
<svg class="zt-ico zt-yt" viewBox="0 0 40 40" aria-hidden="true"><rect x="5" y="7" width="30" height="20" rx="6"/><path class="zt-fill" d="M17 12v10l8-5z"/><path class="zt-arrow" d="M20 29v6m-4-3 4 4 4-4"/></svg>
<span class="zt-t"><strong>yt.zapret.moe</strong><span>скачивание видео и аудио по ссылке прямо в браузере</span></span><em>web</em></a></li>
<li><a href="https://status.zapret.moe/" target="_blank" rel="noopener noreferrer">
<svg class="zt-ico zt-status" viewBox="0 0 40 40" aria-hidden="true"><path d="M20 5 32 9.5v9.3c0 7.6-5 13.3-12 15.7C13 32.1 8 26.4 8 18.8V9.5z"/><path class="zt-beat" d="M11 20h5l2.5-5 4 10 2.5-5h4"/></svg>
<span class="zt-t"><strong>status.zapret.moe</strong><span>статус серверов и услуг Zapret VPN в реальном времени</span></span><em>web</em></a></li>
<li><a href="https://dns.zapret.moe/" target="_blank" rel="noopener noreferrer">
<svg class="zt-ico zt-dns" viewBox="0 0 40 40" aria-hidden="true"><path d="M20 8 10 20m10-12 9 12-6 12m6-12 6 12"/><path class="zt-resolve" d="M20 8l9 12-6 12"/><circle class="zt-fill" cx="20" cy="8" r="3"/><circle cx="10" cy="20" r="2.5"/><circle cx="29" cy="20" r="2.5"/><circle cx="35" cy="32" r="2.5"/><circle class="zt-fill" cx="23" cy="32" r="2.5"/></svg>
<span class="zt-t"><strong>dns.zapret.moe</strong><span>свой DNS-сервер, открывает сервисы с гео-ограничением</span></span><em>dns</em></a></li>
<li><a href="{{AppSubUrl}}/zapretdiscordyoutube/zapret2-youtube-discord">
<svg class="zt-ico" viewBox="0 0 40 40" aria-hidden="true"><rect x="5" y="9" width="30" height="22" rx="7"/><path class="zt-fill" d="M17 15v10l9-5z"/></svg>
<span class="zt-t"><strong>Zapret для YouTube и Discord</strong><span>портативный zapret2 с готовыми BAT-профилями</span></span><em>windows</em></a></li>
<li><a href="{{AppSubUrl}}/zapretdiscordyoutube/roskomfree">
<svg class="zt-ico zt-onion" viewBox="0 0 40 40" aria-hidden="true"><circle cx="20" cy="22" r="13"/><circle cx="20" cy="22" r="8.5"/><circle class="zt-fill" cx="20" cy="22" r="4"/><path d="M20 9c0-3 2-5 5-5"/></svg>
<span class="zt-t"><strong>RoskomFree</strong><span>HTTP-прокси на Tor и WebTunnel-мостах</span></span><em>прокси</em></a></li>
<li><a href="{{AppSubUrl}}/zapretkvn/yourvpndead">
<svg class="zt-ico zt-eye" viewBox="0 0 40 40" aria-hidden="true"><path d="M4 20s6-10 16-10 16 10 16 10-6 10-16 10S4 20 4 20z"/><circle class="zt-fill zt-pupil" cx="20" cy="20" r="4.5"/></svg>
<span class="zt-t"><strong>YourVPNDead</strong><span>показывает, как приложения замечают ваш VPN</span></span><em>android</em></a></li>
<li><a href="{{AppSubUrl}}/zapretdiscordyoutube/youtube_59second">
<svg class="zt-ico zt-clock" viewBox="0 0 40 40" aria-hidden="true"><circle cx="20" cy="21" r="14"/><path class="zt-hand" d="M20 21V11"/><path d="M16 4h8"/></svg>
<span class="zt-t"><strong>YouTube 59second</strong><span>возвращает YouTube через альтернативный embed-плеер</span></span><em>userscript</em></a></li>
<li><a href="https://wiki2.zapret.moe/Zapret/home" target="_blank" rel="noopener noreferrer">
<svg class="zt-ico zt-book" viewBox="0 0 40 40" aria-hidden="true"><path d="M6 9c5-2 10-2 14 1v22c-4-3-9-3-14-1z"/><path d="M34 9c-5-2-10-2-14 1v22c4-3 9-3 14-1z"/></svg>
<span class="zt-t"><strong>База знаний</strong><span>статьи об обходе DPI, VPN и приватности</span></span><em>wiki</em></a></li>
</ul>
</div>
</section>
<!-- ── Сборки ───────────────────────────────────────────── -->
<section class="zr" aria-labelledby="zpm-rel-title">
<div class="zs">
<div class="zsec-head">
<p class="zeb">забрать сборку</p>
<h2 id="zpm-rel-title">Свежее — в Releases</h2>
<p class="zsec-note">APK и архивы лежат рядом с исходниками. Не доверяете сборке — соберите сами.</p>
</div>
<div class="zr-net" id="zr-net" data-api="{{AppSubUrl}}/api/v1/repos/">
<p class="zr-leg" aria-hidden="true"><span>что видит цензор</span><span class="zr-leg-gate">ТСПУ</span><span>что доехало до вас</span></p>
<a class="zrn" href="{{AppSubUrl}}/zapretdiscordyoutube/zapretgui/releases" data-repo="zapretdiscordyoutube/zapretgui" style="--i:1;--t:3.4s;--d:-0.4s">
<span class="zrn-in" aria-hidden="true"><span class="zrn-fake"><b>sni: vk.com</b><i data-hex>16 03 01 02 00 01 00 01 fc 03</i></span><i class="zrn-pk"></i></span>
<span class="zrn-ok" aria-hidden="true">pass</span>
<span class="zrn-line"><strong>Zapret 2 GUI</strong><span class="zrn-ver" data-f="ver"></span></span>
<span class="zrn-meta"><span class="zrn-os">windows</span><span data-f="age"></span><span data-f="dl"></span></span>
</a>
<a class="zrn" href="{{AppSubUrl}}/zapretkvn/ZapretKVN-android/releases" data-repo="zapretkvn/ZapretKVN-android" style="--i:2;--t:2.8s;--d:-1.7s">
<span class="zrn-in" aria-hidden="true"><span class="zrn-fake"><b>sni: ya.ru</b><i data-hex>03 9a 4f e1 7c 20 b8 55 0d c2</i></span><i class="zrn-pk"></i></span>
<span class="zrn-ok" aria-hidden="true">pass</span>
<span class="zrn-line"><strong>Zapret KVN</strong><span class="zrn-ver" data-f="ver"></span></span>
<span class="zrn-meta"><span class="zrn-os">android</span><span data-f="age"></span><span data-f="dl"></span></span>
</a>
<a class="zrn" href="{{AppSubUrl}}/zapretkvn/zapret-kvn/releases" data-repo="zapretkvn/zapret-kvn" style="--i:3;--t:3.9s;--d:-2.9s">
<span class="zrn-in" aria-hidden="true"><span class="zrn-fake"><b>sni: ok.ru</b><i data-hex>c0 2b c0 2f 00 9e cc a9 13 01</i></span><i class="zrn-pk"></i></span>
<span class="zrn-ok" aria-hidden="true">pass</span>
<span class="zrn-line"><strong>Zapret KVN</strong><span class="zrn-ver" data-f="ver"></span></span>
<span class="zrn-meta"><span class="zrn-os">windows</span><span data-f="age"></span><span data-f="dl"></span></span>
</a>
<a class="zrn" href="{{AppSubUrl}}/zastogram/ZaStoGram/releases" data-repo="zastogram/ZaStoGram" style="--i:4;--t:3.0s;--d:-0.9s">
<span class="zrn-in" aria-hidden="true"><span class="zrn-fake"><b>sni: gosuslugi.ru</b><i data-hex>00 17 ff 01 00 0b 00 02 01 00</i></span><i class="zrn-pk"></i></span>
<span class="zrn-ok" aria-hidden="true">pass</span>
<span class="zrn-line"><strong>ZaStoGram</strong><span class="zrn-ver" data-f="ver"></span></span>
<span class="zrn-meta"><span class="zrn-os">android</span><span data-f="age"></span><span data-f="dl"></span></span>
</a>
<a class="zrn" href="{{AppSubUrl}}/zastogram/ZaStoGram_desktop/releases" data-repo="zastogram/ZaStoGram_desktop" style="--i:5;--t:3.6s;--d:-2.2s">
<span class="zrn-in" aria-hidden="true"><span class="zrn-fake"><b>sni: mail.ru</b><i data-hex>7f 1c 2d 00 33 00 26 00 24 00</i></span><i class="zrn-pk"></i></span>
<span class="zrn-ok" aria-hidden="true">pass</span>
<span class="zrn-line"><strong>ZaStoGram</strong><span class="zrn-ver" data-f="ver"></span></span>
<span class="zrn-meta"><span class="zrn-os">desktop</span><span data-f="age"></span><span data-f="dl"></span></span>
</a>
<a class="zrn" href="{{AppSubUrl}}/zapretdiscordyoutube/magisk-zapret2/releases" data-repo="zapretdiscordyoutube/magisk-zapret2" style="--i:6;--t:3.2s;--d:-1.3s">
<span class="zrn-in" aria-hidden="true"><span class="zrn-fake"><b>sni: rutube.ru</b><i data-hex>1d 00 20 a4 e3 5b 91 6c f0 08</i></span><i class="zrn-pk"></i></span>
<span class="zrn-ok" aria-hidden="true">pass</span>
<span class="zrn-line"><strong>Magisk Zapret 2</strong><span class="zrn-ver" data-f="ver"></span></span>
<span class="zrn-meta"><span class="zrn-os">android · root</span><span data-f="age"></span><span data-f="dl"></span></span>
</a>
<span class="zr-gate" aria-hidden="true"></span>
</div>
<a class="zfd" href="/fdroid/repo/">
<span class="zfd-phone" aria-hidden="true">
<svg viewBox="0 0 96 160">
<rect class="zfd-body" x="6" y="4" width="84" height="152" rx="16"/>
<rect class="zfd-screen" x="12" y="16" width="72" height="128" rx="6"/>
<rect class="zfd-notch" x="38" y="8" width="20" height="4" rx="2"/>
<g class="zfd-apps"><rect x="20" y="28" width="16" height="16" rx="5"/><rect x="40" y="28" width="16" height="16" rx="5"/><rect x="60" y="28" width="16" height="16" rx="5"/></g>
<text class="zfd-label" x="48" y="72">обновление</text>
<rect class="zfd-track" x="20" y="80" width="56" height="6" rx="3"/>
<rect class="zfd-bar" x="20" y="80" width="56" height="6" rx="3"/>
<path class="zfd-ok" d="M38 108l7 7 14-15"/>
<circle class="zfd-pkt" cx="48" cy="-10" r="5"/>
</svg>
</span>
<span class="zfd-copy">
<span class="zfd-tag">android · обновления сами</span>
<strong>F-Droid-репозиторий</strong>
<span>Добавьте его в клиент F-Droid — ZaStoGram, Zapret KVN и Zapret2 Control будут обновляться без вашего участия.</span>
</span>
<b class="zfd-go" aria-hidden="true">→</b>
</a>
</div>
</section>
<!-- ── Доверие ──────────────────────────────────────────── -->
<section class="zci" aria-labelledby="zpm-ci-title">
<div class="zs">
<div class="zsec-head">
<p class="zeb">без сюрпризов</p>
<h2 id="zpm-ci-title">Сборке можно доверять</h2>
<p class="zsec-note">Релизы собирает Forgejo Actions из открытых исходников. Видно, что код не подменён и в архив не подложено лишнего.</p>
</div>
<div class="zci-lab" id="zci-lab">
<div class="zci-run">
<p class="zci-cmd"><b>$</b>forgejo-runner exec release.yml<small># zapretgui</small></p>
<ol class="zci-log">
<li class="ok"><b class="zci-sp"></b><span><strong>checkout</strong><small>git checkout 3f9c2a1</small></span><em data-t="2 с">2 с</em></li>
<li class="ok"><b class="zci-sp"></b><span><strong>setup</strong><small>python 3.12 · pyinstaller</small></span><em data-t="18 с">18 с</em></li>
<li class="ok"><b class="zci-sp"></b><span><strong>build</strong><small>pyinstaller Zapret.spec</small></span><em data-t="1 мин 12 с">1 мин 12 с</em></li>
<li class="ok"><b class="zci-sp"></b><span><strong>sha256</strong><small>sha256sum Zapret.zip</small></span><em data-t="0,4 с">0,4 с</em></li>
<li class="ok"><b class="zci-sp"></b><span><strong>release</strong><small>загрузка в Releases</small></span><em data-t="3 с">3 с</em></li>
</ol>
<div class="zci-hash">
<p class="zci-cmd"><b>$</b>sha256sum Zapret.zip</p>
<div class="zci-h zci-h-a"><span>собрали мы · Actions</span><code>9f2c4be17a03d6581c2e7f94b0a6d3e85c1f07a2b94e6d38c05a7f1e2b3c4e41</code></div>
<div class="zci-h zci-h-b"><span>собрали вы · у себя</span><code>9f2c4be17a03d6581c2e7f94b0a6d3e85c1f07a2b94e6d38c05a7f1e2b3c4e41</code></div>
<p class="zci-ok">[ ok ] хеши совпадают</p>
</div>
</div>
<div class="zci-points">
<div><strong>Из этого же кода</strong><p>Сборку запускает Actions прямо из коммита в репозитории — руками в артефакт никто не лезет.</p></div>
<div><strong>Публичные логи</strong><p>Каждый шаг открыт: окружение, команды и коммит, из которого собран файл.</p></div>
<div><strong>Воспроизводимо</strong><p>Повторите шаги у себя и сравните контрольные суммы — подложить что-то незаметно не выйдет.</p></div>
<a class="zb" href="{{AppSubUrl}}/zapretdiscordyoutube/zapretgui/actions">смотреть Actions</a>
</div>
</div>
</div>
</section>
<!-- ── Поддержка и участие ──────────────────────────────── -->
<section class="zj" aria-labelledby="zpm-help-title">
<div class="zs">
<div class="zj-pair">
<div class="zj-help">
<div class="zj-heart" aria-hidden="true">
<span class="zj-hearts"><i style="--x:40%;--s:1.03;--d:0.78s;--t:6.7s;--w:20px;--h:350"></i><i style="--x:87%;--s:0.51;--d:5.02s;--t:4.8s;--w:-11px;--h:335"></i><i style="--x:70%;--s:0.99;--d:3.30s;--t:5.2s;--w:-21px;--h:335"></i><i style="--x:29%;--s:1.28;--d:3.14s;--t:6.2s;--w:-32px;--h:335"></i><i style="--x:85%;--s:0.54;--d:4.68s;--t:6.5s;--w:-6px;--h:300"></i><i style="--x:86%;--s:1.15;--d:5.27s;--t:6.1s;--w:14px;--h:300"></i><i style="--x:83%;--s:0.90;--d:5.61s;--t:6.6s;--w:-28px;--h:350"></i><i style="--x:27%;--s:0.95;--d:1.55s;--t:6.0s;--w:40px;--h:320"></i><i style="--x:63%;--s:0.96;--d:2.32s;--t:5.1s;--w:34px;--h:300"></i><i style="--x:84%;--s:0.71;--d:2.02s;--t:6.7s;--w:-37px;--h:320"></i><i style="--x:87%;--s:1.10;--d:0.98s;--t:6.6s;--w:29px;--h:350"></i><i style="--x:37%;--s:1.07;--d:5.93s;--t:4.8s;--w:-25px;--h:350"></i><i style="--x:71%;--s:1.27;--d:5.94s;--t:4.3s;--w:-32px;--h:300"></i><i style="--x:29%;--s:0.52;--d:2.56s;--t:5.2s;--w:-25px;--h:350"></i></span>
<div class="zh3-glow"></div>
<div class="zh3-spin"><div class="zh3-beat"><i style="--z:0;--k:0.720"></i><i style="--z:1;--k:0.839"></i><i style="--z:2;--k:0.884"></i><i style="--z:3;--k:0.916"></i><i style="--z:4;--k:0.940"></i><i style="--z:5;--k:0.959"></i><i style="--z:6;--k:0.973"></i><i style="--z:7;--k:0.984"></i><i style="--z:8;--k:0.992"></i><i style="--z:9;--k:0.997"></i><i style="--z:10;--k:1.000"></i><i style="--z:11;--k:1.000"></i><i style="--z:12;--k:0.997"></i><i style="--z:13;--k:0.992"></i><i style="--z:14;--k:0.984"></i><i style="--z:15;--k:0.973"></i><i style="--z:16;--k:0.959"></i><i style="--z:17;--k:0.940"></i><i style="--z:18;--k:0.916"></i><i style="--z:19;--k:0.884"></i><i style="--z:20;--k:0.839"></i><i style="--z:21;--k:0.720"></i><b class="zh3-face"></b></div></div>
<svg class="zh3-ecg" viewBox="0 0 300 60" preserveAspectRatio="none"><path class="zh3-ecg-base" d="M0 34 H 300"/><path class="zh3-ecg-line" d="M0 34 H 90 L 104 34 L 112 20 L 120 34 L 128 34 L 136 4 L 146 56 L 154 34 L 170 34 L 178 26 L 188 34 H 300"/></svg>
</div>
<div class="zj-help-copy">
<p class="zeb">поддержка</p>
<h2 id="zpm-help-title">Запрет-тян нужна ваша помощь</h2>
<p>Донаты и премиум-опции — в боте <b>@zapretvpns_bot</b>. Код остаётся открытым, а сборки — бесплатными для всех.</p>
<a class="zb zb-main" href="https://t.me/zapretvpns_bot?start=site_donate" target="_blank" rel="noopener noreferrer">поддержать в Telegram</a>
</div>
</div>
<div class="zlock" id="zlock" data-bot="https://t.me/zapretvpns_bot?start=site_lock">
<button class="zlock-hit" type="button" aria-label="Ударить по замку">
<svg class="zlock-svg" viewBox="0 0 140 170" aria-hidden="true">
<path class="zl-shackle" d="M38 66 V44 a32 32 0 0 1 64 0 V66"/>
<g class="zl-half zl-half-l"><path class="zl-body" d="M20 64 H70 V156 H34 a14 14 0 0 1 -14 -14 Z"/></g>
<g class="zl-half zl-half-r"><path class="zl-body" d="M70 64 H120 V142 a14 14 0 0 1 -14 14 H70 Z"/></g>
<text class="zl-label" x="70" y="96">РКН</text>
<path class="zl-key" d="M70 112 v18 M63 117 a7 7 0 1 1 14 0"/>
<path class="zl-crack" data-at="0.85" d="M60 70 L 52 86 L 58 94 L 49 108"/><path class="zl-crack" data-at="0.7" d="M84 74 L 92 88 L 86 97 L 95 110"/><path class="zl-crack" data-at="0.55" d="M40 96 L 55 102 L 62 118"/><path class="zl-crack" data-at="0.4" d="M100 100 L 84 108 L 80 124"/><path class="zl-crack" data-at="0.25" d="M70 64 L 72 84 L 66 100 L 72 122 L 68 138"/><path class="zl-crack" data-at="0.12" d="M34 120 L 56 126 L 70 124 L 90 132 L 108 124"/>
</svg>
<svg class="zlock-open" viewBox="0 0 140 170" aria-hidden="true"><path class="zo-shackle" d="M38 66 V44 a32 32 0 0 1 64 0 V30"/><rect class="zo-body" x="20" y="64" width="100" height="92" rx="14"/><path class="zo-ok" d="M46 110 l16 16 32-34"/></svg>
<span class="zlock-fx" aria-hidden="true"></span>
</button>
<div class="zlock-copy">
<span class="zg-badge">мини-игра</span>
<h3 class="zlock-name">Сломайте замок РКН</h3>
<p class="zlock-t">Жмите на замок. Осталось <b data-l="hp">15</b> ударов.</p>
<div class="zlock-hp"><i></i></div>
<div class="zlock-win" hidden>
<p><b>Замок сломан!</b> Так же мы каждый день ломаем блокировки — на ваши донаты.</p>
<div class="zlock-btns"><a class="zb zb-main" href="https://t.me/zapretvpns_bot?start=site_lock_btn" target="_blank" rel="noopener noreferrer">поддержать в Telegram</a><button class="zb zlock-again" type="button">следующий замок</button></div>
</div>
</div>
</div>
</div>
<div class="zj-join">
<h2>Как присоединиться</h2>
<p class="zj-sub">Три пакета — и соединение установлено.</p>
<p class="zj-ends" aria-hidden="true"><span>вы</span><span>git.zapret.moe</span></p>
<ol class="zj-hs">
<li style="--n:0"><b>SYN</b><i class="zj-wire" aria-hidden="true"></i><strong>Смотрите и качайте</strong><span>Код и релизы открыты, аккаунт не нужен.</span></li>
<li class="zj-back" style="--n:1"><b>SYN-ACK</b><i class="zj-wire" aria-hidden="true"></i><strong>Регистрируйтесь</strong><span>Логин и пароль — почта не нужна.</span></li>
<li style="--n:2"><b>ACK</b><i class="zj-wire" aria-hidden="true"></i><strong>Пишите в Issues</strong><span>Ошибки, идеи и вопросы обсуждаются прямо в проектах.</span></li>
</ol>
<div class="zj-cta">
<p><b>ESTABLISHED</b>Мы против монополии GitHub: открытый код нельзя выключить одним решением платформы.</p>
{{if .IsSigned}}
<a class="zb zb-main" href="{{AppSubUrl}}/explore/repos">к проектам</a>
{{else}}
<a class="zb zb-main" href="{{AppSubUrl}}/user/sign_up">создать аккаунт</a>
{{end}}
</div>
</div>
</div>
</section>
</div>
<script src="{{AppSubUrl}}/assets/zapret-moe/home.js?v=@ASSETS_VER@" defer></script>
<script src="{{AppSubUrl}}/assets/zapret-moe/intro.js?v=@ASSETS_VER@" defer></script>
<script src="{{AppSubUrl}}/assets/zapret-moe/rig.js?v=@ASSETS_VER@" defer></script>
{{template "base/footer" .}}