Hej. Poprosiłem Chat GPT o napisanie prostej apki, która będzie mi blokować katalog stron, na które nie chcę zaglądać żeby się nie rozpraszać. Dostałem takie coś:
import time
import os
# Ścieżka do pliku hosts (może się różnić w zależności od systemu operacyjnego)
HOSTS_PATH = r"/etc/hosts" # Dla systemów Linux i macOS
# HOSTS_PATH = r"C:\Windows\System32\drivers\etc\hosts" # Dla Windows
REDIRECT_IP = "127.0.0.1" # IP, na który będą przekierowywane zablokowane strony
BLOCKED_SITES_FILE = "blocked_sites.txt" # Plik z listą zablokowanych stron
def load_blocked_sites():
"""Wczytuje listę stron do zablokowania z pliku."""
try:
with open(BLOCKED_SITES_FILE, "r") as file:
sites = [line.strip() for line in file if line.strip()]
return sites
except FileNotFoundError:
print(f"Plik {BLOCKED_SITES_FILE} nie istnieje. Utwórz plik z listą stron do zablokowania.")
return []
def block_sites():
"""Blokuje strony, dodając je do pliku hosts."""
blocked_sites = load_blocked_sites()
if not blocked_sites:
print("Brak stron do zablokowania.")
return
# Odczytaj aktualną zawartość pliku hosts
with open(HOSTS_PATH, "r+") as hosts_file:
content = hosts_file.read()
for site in blocked_sites:
if f"{REDIRECT_IP} {site}" not in content:
hosts_file.write(f"{REDIRECT_IP} {site}\n")
hosts_file.write(f"{REDIRECT_IP} www.{site}\n") # Dodatkowo blokuje wersję www
print(f"Zablokowano: {site} i www.{site}")
else:
print(f"Strona {site} jest już zablokowana.")
print("Wybrane strony zostały zablokowane.")
print("Wybrane strony zostały zablokowane.")
def unblock_sites():
"""Odblokowuje strony, usuwając je z pliku hosts."""
blocked_sites = load_blocked_sites()
if not blocked_sites:
print("Brak stron do odblokowania.")
return
# Przeczytaj i przefiltruj zawartość pliku hosts
with open(HOSTS_PATH, "r") as hosts_file:
lines = hosts_file.readlines()
with open(HOSTS_PATH, "w") as hosts_file:
for line in lines:
if not any(f"{REDIRECT_IP} {site}" in line for site in blocked_sites):
hosts_file.write(line)
print("Wybrane strony zostały odblokowane.")
def main():
"""Główna funkcja umożliwiająca blokowanie i odblokowanie stron."""
while True:
choice = input("Wybierz opcję: (1) Blokuj strony, (2) Odblokuj strony, (3) Wyjście: ")
if choice == "1":
block_sites()
elif choice == "2":
unblock_sites()
elif choice == "3":
print("Zamykanie aplikacji.")
break
else:
print("Nieprawidłowy wybór. Spróbuj ponownie.")
if __name__ == "__main__":
main()
No i oczywiście plik blocked_sites.txt. No i tutaj mam większy niż to, że nie działa. Otóż na początku miałem wrzucony youtube na listę zablokowanych i teraz niezależnie czy wrzucę na listę zablokowanych stron yt, czy z niej usunę, czy program jest włączony, czy wyłączony czy w opcjach programu wybiorę zablokuj, czy odblokuj to efekt jest dokładnie taki sam. Strona jest zablokowana. Z innymi stronami też jest dziwnie. Korzystam z Linux mint. GPT podpowiedział mi żebym zrobił: sudo systemctl restart nscd
ale nawet nie miałem zainstalowanego tego ncsd
. No ale dla pewności zainstalowałem, wykonałem polecenie restart i jest po staremu. Cały system oczywiście też restartowałem i też nie pomogło. Po fakcie przypomniało mi się, że na Mint był całkiem przyjemny program Domain blocker
, no ale póki co muszę dojść do tego, jak ten bałagan ogarnąć.