Kaip efektyviai blokuoti reklamas macOS, Linux ir Windows: Automatizavimo scenarijus

 

Neseniai internete radau straipsnį pavadinimu „Kaip efektyviai blokuoti reklamas macOS, Linux ir Windows“. Tiksliau, jį radau vakar čia. Šis straipsnis pateikė nuoseklias instrukcijas, kaip rankiniu būdu modifikuoti hosts failą, kad būtų blokuojamos reklamos. Kadangi šią procedūrą kartais reikia kartoti, nusprendžiau automatizuoti procesą su Bash scenarijumi. Šiame įraše aprašysiu sukurtą scenarijų, jo funkcijas ir veikimą, taip pat pateiksiu keletą pastebėjimų ir idėjų, ką dar būtų galima pridėti ar pakeisti. Nors pavadinime minimos ir kitos sistemos, bet čia scenarijų pasidariau ir ištestavau su Linux. Debian GNU/Linux

Scenarijaus funkcijos ir veikimas

1. Atsarginės hosts failo kopijos sukūrimas: Pirmasis scenarijaus veiksmas yra dabartinio hosts failo atsarginės kopijos sukūrimas. Tai labai svarbu, kad būtų galima grįžti prie pradinio failo, jei kažkas nepavyktų.


sudo cp /etc/hosts /etc/hosts.backup

Jei atsarginės kopijos sukurti nepavyksta, scenarijus nutraukia vykdymą ir praneša apie klaidą.

2. Naujo hosts failo atsisiuntimas: Toliau scenarijus atsisiunčia naują hosts failą iš interneto ir išsaugo jį kataloge Atsiuntimai.


curl https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts -o ~/Atsiuntimai/hosts

Jei atsisiųsti nepavyksta, scenarijus vėlgi nutraukia vykdymą ir praneša apie klaidą.

3. Atsisiųsto failo patikrinimas: Šis veiksmas patikrina, ar atsisiųstas hosts failas yra teisingai suformatuotas. Tam naudojama grep komanda, kuri ieško IP adresų ir hostname formatų.


valid_lines=$(grep -E '^\s*[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\s+.*' ~/Atsiuntimai/hosts | wc -l)

Jei failas neturi tinkamai suformatuotų eilučių, scenarijus nutraukia vykdymą.

4. Naudotojo patikrinimas ir atsakymo apdorojimas: Scenarijus paprašo naudotojo nurodyti, ar dabartinis hosts failas buvo modifikuotas rankiniu būdu. Atsižvelgiant į atsakymą, scenarijus arba papildys esamą failą, arba perrašys jį atsisiųstuoju.


echo "Ar jūs modifikavote savo dabartinį hosts failą? (taip/ne)"
read user_input

Priklausomai nuo atsakymo, scenarijus arba prideda naują turinį prie esamo failo:sudo cat ~/Atsiuntimai/hosts >> /etc/hosts

arba perrašo esamą failą nauju:
sudo mv ~/Atsiuntimai/hosts /etc/hosts

Pastebėjimai ir tobulinimo idėjos

1. Patobulintas patikrinimas: Nors dabartinis patikrinimas tikrina, ar failas turi bent vieną tinkamai suformatuotą eilutę, būtų galima patobulinti šį procesą, tikrinant visą failą ir įspėjant apie bet kokius neatitikimus.

2. Atsarginės kopijos atkūrimas: Būtų naudinga pridėti funkciją, kuri leistų naudotojui lengvai atkurti atsarginę kopiją, jei kažkas nepavyktų. Tai galima atlikti pridėjus komandą, kuri atkuria hosts failą iš atsarginės kopijos.


echo "Ar norite atkurti pradinį hosts failą? (taip/ne)"
read restore_input
if [ "$restore_input" == "taip" ]; then
    sudo cp /etc/hosts.backup /etc/hosts
    echo "Hosts failas atkurtas iš atsarginės kopijos."
fi

3. Automatizuotas atsisiuntimo tvarkaraštis: Galima pridėti funkciją, kuri reguliariai atsisiunčia ir atnaujina hosts failą, pvz., naudojant cron užduotį, kad automatizuotų procesą tam tikrais intervalais.

Išvada

Sukurtas scenarijus padeda automatizuoti reklamos blokavimo procesą, naudojant hosts failo modifikavimą. Tai ne tik taupo laiką, bet ir užtikrina, kad visas procesas būtų atliktas teisingai ir saugiai. Scenarijus apima svarbiausius veiksmus, tokius kaip atsarginės kopijos kūrimas, failo atsisiuntimas ir patikrinimas bei failo atnaujinimas pagal naudotojo poreikius. Ateityje galima patobulinti šį scenarijų, pridedant papildomas funkcijas ir patikrinimus, kad jis būtų dar naudingesnis ir efektyvesnis.

Tikiuosi, kad šis scenarijus padės jums efektyviau blokuoti reklamas ir pagerins jūsų darbo patirtį naudojant macOS, Linux ar Windows sistemas:)


#!/bin/bash
 
# Backup the current hosts file
sudo cp /etc/hosts /etc/hosts.backup
if [ $? -ne 0 ]; then
    echo "Nepavyko sukurti atsarginės hosts failo kopijos. Nutraukiama."
    exit 1
fi
echo "Sukurta atsarginė hosts failo kopija."
 
# Download the new hosts file
curl https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts -o ~/Atsiuntimai/hosts
if [ $? -ne 0 ]; then
    echo "Nepavyko atsisiųsti hosts failo. Nutraukiama."
    exit 1
fi
echo "Hosts failas sėkmingai atsisiųstas ir išsaugotas kataloge Atsiuntimai."
 
# Verify the downloaded hosts file
echo "Tikrinamas atsisiųsto hosts failo formatas..."
valid_lines=$(grep -E '^\s*[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\s+.*' ~/Atsiuntimai/hosts | wc -l)
 
if [ $valid_lines -eq 0 ]; then
    echo "Neteisingas hosts failo formatas. Failas gali būti sugadintas. Nutraukiama."
    exit 1
fi
echo "Hosts failas sėkmingai patikrintas. Formatavimas teisingas."
 
# Check if the user has modified the current hosts file
echo "Ar jūs modifikavote savo dabartinį hosts failą? (taip/ne)"
read user_input
 
if [ "$user_input" == "taip" ]; then
    echo "Jūsų hosts failas bus papildytas atsisiųstojo turiniu."
    sudo cat ~/Atsiuntimai/hosts >> /etc/hosts
    if [ $? -ne 0 ]; then
        echo "Nepavyko papildyti hosts failo. Nutraukiama."
        exit 1
    fi
    echo "Hosts failas sėkmingai papildytas."
elif [ "$user_input" == "ne" ]; then
    echo "Jūsų hosts failas bus perrašytas atsisiųstojo turiniu."
    sudo mv ~/Atsiuntimai/hosts /etc/hosts
    if [ $? -ne 0 ]; then
        echo "Nepavyko perrašyti hosts failo. Nutraukiama."
        exit 1
    fi
    echo "Hosts failas sėkmingai perrašytas."
else
    echo "Neteisingas atsakymas. Nutraukiama."
    exit 1
fi
 
echo "Operacija baigta sėkmingai."

Komentarai

Populiarūs šio tinklaraščio įrašai

Configuring a NixOS firewall for everyday use

Setting up syncthing as a service on openSUSE and other Linux distributions

Monitoring SFTP server updates with Python