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
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
Rašyti komentarą