Smoon

20/11/2024

proxy pro youtube

Vytvoření vlastní proxy pro sledování videí na youtube.com je velice jednoduché. Motivy proč to vlastně dělat už tak jednoduché nejsou a možná je časem popíšu v samostatném příspěvku. Jak tedy vytvořit proxy. Stačí na svém serveru nainstalovat squid a odeditovat jeho konfigurák. Squid je běžný open source proxy server, který jde snadno nastavit tak, aby fungoval jako HTTP proxy. (postup je psán pro linuxové distribuce založené na deb)

$ sudo apt update
$ sudo apt install squid -y

Konfigurace se následně odehrává v souboru squid.conf.

$ sudo vim /etc/squid/squid.conf

Co vlastně chceme. Chceme mít proxy, přes kterou budeme přistupovat pouze k webu YT a kterou budou moci používat pouze lidé, jenž k ní mají přístup pomocí hesla. Pokud bychom nechali proxy s veřejným přístupem a bez omezení cílových webů, neuplynul by ani den a našel by jí nějaký nepřátelský robot. Následně by bylo zcela jisté, že by IP vašeho serveru byla zneužita k nějaké nekalé činnosti. Heslo pro přístup je tedy nezbytné. Omezení na cílové weby v našem případě pouze na YT je na zvážení každého k jakému účelu skutečně chce proxy používat a jaký trafik může přes server pustit.

# squid.conf

# nastavení přístupu pomocí hesla
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/squid_passwd
auth_param basic realm Proxy Authentication
acl authenticated_users proxy_auth REQUIRED

# přístup pouze na povolené stránky
acl allowed_sites dstdomain .youtube.com .ytimg.com .googlevideo.com .mojeip.cz

# povolit pouze přístup pro přihlášené účty a na povolené stránky, vše ostatní zakázat
http_access allow authenticated_users allowed_sites
http_access deny all

# port, na kterém bude proxy naslouchat
http_port 3128

# umožnit přístip proxy přes ipv6 (pokud ji má)
dns_v4_first off

Web mojeip.cz je v nastavení hlavně kvůli testu funkčnosti přístupu přes proxy. Až si pak vše otestujete můžete tuto adresu umazat.

Nyní je potřeba vytvořit uživatele, který bude mít přístup k proxy:

$ sudo touch /etc/squid/squid_passwd

$ sudo apt install apache2-utils
$ sudo htpasswd /etc/squid/squid_passwd jmeno_uzivatele

Budete vyzvání k zadání hesla pro vytvořeného uživatele.

Nyní stačí jen proxy nastartovat nebo pokud už běží tak restartovat.

$ sudo systemctl restart squid

Hotovo! Proxy běží. Teď ještě jak ji používat.

Já ji nejčastěji používám pro přehrávač mpv v kombinaci s yt-dlp.

$ mpv -ytdl-raw-options="proxy=http://jmeno_uzivatele:heslo@ip:3128" youtube_odkaz

To celé se samozřejmě dá schovat do scriptu. Něco jako:

#!/bin/bash
link=$1
mpv -ytdl-raw-options="proxy=http://jmeno_uzivatele:heslo@ip:3128" $link

Druhou možností je nastavit proxi pro prohlížeč. Pro Firefox se najdřív musí připravit soubor proxy.pac tak, aby proxy používal pouze pro YT a mojeip:

function FindProxyForURL(url, host) {
    // Seznam domén, které mají jít přes proxy
    if (dnsDomainIs(host, ".mojeip.cz") ||
        dnsDomainIs(host, ".youtube.com") || 
        dnsDomainIs(host, ".ytimg.com") || 
        dnsDomainIs(host, ".googlevideo.com")) {
        // Nastavení proxy serveru s IP adresou
        return "PROXY <ip>:3128";
    }

    // Výchozí chování - přímé připojení
    return "DIRECT";
}

Pak je nutno ve Firefoxu nastavit použití tohoto souboru. To se dělá v nastavení, přesněji:

Nastavení->Obecné->Nastavení sítě->URL adresa pro automatickou konfiguraci proxy server

Zde je potřeba zadat cestu k souboru. Soubor může byt jak online, tak offline. V případě offline musí být cesta ve formě:

file:///home/user/cesta.../proxy.pac

Hotovo! Nyní při prvním pokusu o načtení videa z YT budete vyzvání k zadání uživatelského jména a hesla pro proxy. Funkčnost můžete otestovat na webu mojeip.cz, kde byste měli vidět ip vaší proxy místo ip vaší stanice.

eof