Nicht schön, aber funktioniert. Ein kleiner Workaround für die Fritzbox

Wenn Du irgendwo in Deinem Netz einen "vertrauenswürdigen" Rechner hast, kannst Du mit dem Skript Domains in die Blacklist eintragen und wieder löschen lassen.

Die Eintragungen werden in dieser Blacklist vorgenommen


in Zeile 6 +7 kommen die Adresse und das Passwort der Fritzbox
In Zeile 8 die zu sperrenden Domains hinterlegen, immer ein Leerzeichen zwischen den Domains einfügen (siehe Beispiel unten)

Dann kannst Du das Skript abspeichern, z.B. als fritzblocker.sh , nicht vergessen es ausführbar zu machen chmod +x fritzblocker.sh

Dann zeitgesteuert die Domainsperre einschalten
./fritzblocker.sh sperren
Sperren erfolgreich




bzw. 8 Stunden später wieder rausnehmen

./fritzblocker.sh freigeben
Freigeben erfolgreich


Show Plain Text
  1. #!/bin/bash
  2.  
  3. cmd=$1
  4.  
  5. # Logindaten
  6. theServer="192.168.178.1"   # IP der Fritzbox
  7. thePassword="*****"         # das Webinterfacepasswort
  8. gesperrt="foo.de bar.de blub.de test.de"
  9.  
  10. function get_value()
  11. {
  12.     echo $(sed -n "s/.*<$2>\(.*\)<\/$2>.*/\1/p" <<<$1)
  13.     return
  14. }
  15. gesperrt=$(tr ' ' '+' <<<"$gesperrt")
  16.  
  17. ### SID Session ID ermitteln ###
  18. theLogin="https://$theServer/login_sid.lua"
  19. theChallenge=$(get_value "$(curl -sk $theLogin)" "Challenge")
  20. theResponse=$(echo "$theChallenge-$(echo -n "$theChallenge-$thePassword" | iconv -f UTF-8 -t UTF-16LE | md5 -q)")
  21. SID=$(get_value "$(curl -sk $theLogin -d username=$theUser -d response=$theResponse)" "SID")
  22.  
  23. if [[ "$SID" == "0000000000000000" ]]; then
  24.     echo "Fritzbox Login nicht erfolgreich, Passwort überprüfen"
  25. else
  26.         case "$cmd" in
  27.             'sperren' )
  28.                 ret=$(curl -sk "https://$theServer/data.lua" -H "Referer: https://$theServer/" --compressed -H 'Content-Type: application/x-www-form-urlencoded' -H "Origin: https://$theServer/" -H 'Connection: keep-alive' --data-raw "xhr=1&urllist=$gesperrt&listtype=black&apply=&sid=$SID&lang=de&page=kids_blacklist")
  29.                 if grep -q "apply\":\"ok" <<<"$ret" ; then
  30.                     echo "Sperren erfolgreich"
  31.                 else
  32.                     echo "Fehler beim Sperren"
  33.                 fi
  34.                 ;;
  35.             'freigeben' )
  36.                 ret=$(curl -sk "https://$theServer/data.lua" -H "Referer: https://$theServer/" --compressed -H 'Content-Type: application/x-www-form-urlencoded' -H "Origin: https://$theServer/" -H 'Connection: keep-alive' --data-raw "xhr=1&urllist=&listtype=black&apply=&sid=$SID&lang=de&page=kids_blacklist")
  37.                 if grep -q "apply\":\"ok" <<<"$ret" ; then
  38.                     echo "Freigeben erfolgreich"
  39.                 else
  40.                     echo "Fehler beim Freigeben"
  41.                 fi
  42.                 ;;
  43.             *)
  44.                 echo "Erlaubte Kommandos 'sperren' oder 'freigeben'"
  45.                 ;;
  46.         esac
  47. fi