Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Internet Filter in der Fritzbox mit JavaScript setzen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Internet Filter in der Fritzbox mit JavaScript setzen

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mumurik @moelski last edited by

      @moelski

      eine Frage, wäre es möglich mit dem Skript auch die Ticketliste (unter Fritzbox-Internet-Filter-Zugangsprofile) in iobroker zu importieren/auszugeben, so dass die Tickets in einzelne Datenobjekte geschrieben werden könnten?

      b9776f6a-2e26-4837-8a0a-6e862e6f90a9-image.png

      1 Reply Last reply Reply Quote 0
      • J
        jonacoor @moelski last edited by jonacoor

        Hallo,
        super Skript, leider bekomme ich es bei mir nicht zum laufen (manuelle Ausführung).
        Bin dazu noch Newbe:

        Datenpunkte angelegt (Fritzbox.0... ging nicht):
        const FbIobObject = "0_userdata.0.ChangeDeviceFilter"
        const FbIobJsonList = "0_userdata.0.DeviceFilterListJson"

        Scheint auch alles durchzuführen:
        ad733980-5136-4737-9972-7ae6fcd9b300-grafik.png

        Am Ende ist der jeweilige Filter aber unverändert.

        Habe schon verschiedene Settings probiert
        const FbDebugging = false;
        const FbListOnly = false/true;
        const FbCreateList = false/true;

        Kann jemand helfen ?

        Danke

        Hannes

        // FB 7490 7.27


        Update 15.10.2021:

        Ich hatte statt der Profile ID den Namen verwendet. Wer lesen kann ist klar im Vorteil.

        Bestätige die Funktion bei Fritzbox 7490 FW 7.28

        F 1 Reply Last reply Reply Quote 0
        • F
          Freaknet @jonacoor last edited by Freaknet

          @moelski

          Hey,
          ich habe seit dem FW Update meiner FB 7590 das Problem, dass mir keine Device mehr angezeigt werden.
          Hat sich irgendetwas in der FB-Einstellungen geändert?
          Bekomme auch keine SID mehr zugeordnet.

          Hier mal das Log bei Static-Version:

          10:17:48.213	info	javascript.0 (22888) Stop script script.js.Meine_Scripte.Internetzugang
          10:17:48.308	info	javascript.0 (22888) Start javascript script.js.Meine_Scripte.Internetzugang
          10:17:48.310	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: Profile Changer started ... (Version : 1.09)
          10:17:48.310	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: function getFbChallenge
          10:17:48.311	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: Profile Changer done
          10:17:48.311	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: registered 0 subscriptions and 0 schedules
          10:17:48.691	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: > Challenge : f4d35392
          10:17:48.691	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: > MD5 : 278c6355de6b1ca2c16cc08c02ff4e0a
          10:17:48.692	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: > Login : response=f4d35392-278c6355de6b1ca2c16cc08c02ff4e0a&username=
          10:17:48.692	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: function getFbSid
          10:17:49.767	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: > SID : 0000000000000000
          10:17:49.768	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: function getFbProfiles
          10:17:50.012	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: > Decode Names
          10:17:50.014	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: > Decode Filters
          10:17:50.014	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: Filter Count : 0
          10:17:50.014	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: function getFbDevices
          10:17:50.207	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: > Decode Device Names
          10:17:50.207	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: > Decode Device Ids
          10:17:50.208	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: Device Count : 0
          10:17:50.208	info	javascript.0 (22888) script.js.Meine_Scripte.Internetzugang: DONE : Listmode - No Device blocking ...
          

          An den Einstellungen am Script habe ich seit über 1 Jahr nichts mehr geändert.

          // Die IP Der Fritzbox
          const FbIp          = "192.168.178.1";              
          // Der User der Fritzbox 
          // HINWEIS : Den Benutzer leer lassen wenn die Anmeldung an der FB nur mit Passwort erfolgt !
          const FbUser        = ""; 
          // Das Password der Fritzbox                  
          const FbPassword    = "**********";   
          // welcher Rechner soll "bearbeitet" werden                
          var   FbDevice      = "Comp-L-Pi";   
          // Das neue Profil für den Rechner              
          var   FbProfile     = "filtprof4";  
          // erweitertes Logging aktivieren für Fehlersuche
          const FbDebugging   = false;
          // Keine Änderung an der Fritzbox (true) -> Listet dann nur alle Profile und Rechner               
          const FbListOnly    = true; 
          // Device / Filter Liste erzeugen Ja (true), Nein (false)
          const FbCreateList  = true; 
          // Datenpunkt (string) für einen automatischen Script Start (muss angelegt werden!)
          // Der Datenpunkt wir mit Device;Profil beschrieben. Bsp: Comp-L-Pi;filtprof1
          const FbIobObject   = "0_userdata.0.Fritzbox.ChangeDeviceFilter"  
          // Datenpunkt in den die Device / Filter Liste als JSON geschrieben wird                    
          const FbIobJsonList = "0_userdata.0.Fritzbox.DeviceFilterListJson"
          

          Hat jemand ein ähnliches Problem seit dem FW-Update?

          Grüße
          Freaknet

          P.S.: Hat sich erledigt... Hab einfach einen Benutzer angelegt in der FB und schon läuft die Sache wieder 😉

          ? 1 Reply Last reply Reply Quote 0
          • ?
            A Former User @Freaknet last edited by

            @freaknet genau, der Username ist Pflicht geworden.. das wars.. 🙂

            1 Reply Last reply Reply Quote 1
            • T
              Torsten_MG last edited by Torsten_MG

              Hallo, ich nutze das Script schon länger, nun ist mir aufgefallen das der Filter nicht mehr die Richtigen Geräte ändert.

              Ich habe z.B. folgende Geräte in der Fritzbox

              Ben-Handy
              Ben-CT

              LAPTOP-Ben
              Mini-PC-Ben

              Wenn ich jetzt z.B. in "0_userdata.0.Fritzbox.ChangeDeviceFilter"

              "Ben-Handy;filtprof880" eingebe, wird der Filter von "Ben-CT" geändert

              und bei "LAPTOP-Ben;filtprof880" wird der Filter von "Mini-PC-Ben" geändert.

              Seit wann das so ist, weiss ich leider nicht, ist mir gestern aufgefallen, weil Junior um 21:45Uhr noch am Laptop saß

              Das kann ich so weiterführen, ist bei anderen Geräten genauso 😕

              EDIT sagt:

              Ich habe gerade mal einige "Leichen" in der Fritzbox unter Heimnetz > Netzwerk > Netzwerkverbindungen gelöscht und den Eintrag bei 0_userdata.0.Fritzbox.DeviceFilterListJson gelöscht, steht also nichts mehr drin.

              Scheint jetzt wieder zu funktionieren

              1 Reply Last reply Reply Quote 0
              • A
                amandus99 last edited by

                erstmal Danke fürs Script. Läuft wunderbar und ich kann nun über mein node-red dashboard eine Camera das selbst erstellte Profil "blocked" zuweisen und auch wieder auf Standard stellen. Die Idee ist der Camera nur Internet zur Verfügung zu stellen wenn ich das auch explizit will. Ansonsten soll die Kamera nur im eigenen Netz erreichbar sein. Über das Schalten auf dem Dashboard wird das Profil auch sauber zugewiesen, ABER das Profil hat scheinbar überhaupt keine Wirkung! Das Profil "blocked" hat laut Configseite als onlineZeit "keine". Aber wie gesagt die Kamera ist trotzdem übers Handy ohne WLAN aktiviert erreichbar.

                1 Reply Last reply Reply Quote 0
                • H
                  hammy1982 @moelski last edited by

                  @moelski Hallo,

                  ich bin heute auf Ihr Skript gestoßen und würde dieses gerne in ioBroker einsetzen. Nach dem ich aus dem Post Ihr Skript in eingefügt habe und gestartet habe, erhalte ich leider folgende Meldung:
                  23:20:35.489 error javascript.0 (4980) script.js.FritzJava compile failed: at script.js.FritzJava:23

                  Können Sie mir hier weiterhelfen?

                  Mit freundlichen Grüßen

                  Elmar

                  D 1 Reply Last reply Reply Quote 0
                  • D
                    drloksoft @hammy1982 last edited by

                    Hi Leute,

                    erstmal vielen Dank für das Mega-Script. Da die Kinder nun mit mehreren Geräten unterwegs sind (Switch und Android), möchte ich gerne alle Geräte gleichzeitig sperren, bzw. freigeben. Könnte ich mit dem Script auch "einfach" die Einstellung zum Zeitraum von "immer" auf "nie" setzen und die Geräte einfach immer in dem Profil lassen? So spare ich mir mehrere Knöpfe.

                    1 Reply Last reply Reply Quote 0
                    • D
                      drloksoft last edited by drloksoft

                      EDIT: GELÖST! Ich lasse es aber dennoch hier stehen. Lösung unten!

                      Okay,
                      ich bin lost und muss noch mal eine Frage zum Verständnis stellen, da ich nicht mehrere Geräte mit multiplen buttons in VIS bei Verwendung nur eines Scriptes steuern kann. Über Eure Hilfe würde ich mich sehr freuen 🙂

                      Ich habe "DeviceFilterListJson" automatisch befüllen lassen. Das hat funktioniert!
                      Unter anderem gibt es einen Eintrag:

                      {
                          "Device": "iPhone-3",
                          "Profile ID": "filtprof7324",
                          "Profile Name": "Kidsclub",
                          "Usage": "Gesperrt durch Zugangsprofil",
                          "Time": "Onlinezeit aufgebraucht"
                        },
                      

                      Ich habe einen Datenpunkt vom Typ String angelegt.

                      {
                        "common": {
                          "name": "Fire2",
                          "desc": "Manually created",
                          "role": "state",
                          "type": "string",
                          "read": true,
                          "write": true,
                          "def": ""
                        },
                        "type": "state",
                        "from": "system.adapter.admin.0",
                        "user": "system.user.admin",
                        "ts": 1655649177519,
                        "_id": "0_userdata.0.Fire2",
                        "acl": {
                          "object": 1636,
                          "state": 1636,
                          "owner": "system.user.admin",
                          "ownerGroup": "system.group.administrator"
                        }
                      }
                      

                      Nun ändere ich entweder über VIS oder manuell den Datenpunkt zu

                      iPhone-3;filtprof1
                      

                      Oder eben zu

                      iPhone-3;filtprof7324
                      

                      (was die ID zum Profil "Kidsclub" ist)

                      Im Log ist allerdings nichts zu sehen und in der Fritzbox tut sich auch nichts.

                      Meine Settings:

                      // Die IP Der Fritzbox
                      const FbIp          = "192.168.0.1";              
                      // Der User der Fritzbox 
                      // HINWEIS : Den Benutzer leer lassen wenn die Anmeldung an der FB nur mit Passwort erfolgt !
                      const FbUser        = "filter"; 
                      // Das Password der Fritzbox                  
                      const FbPassword    = "filter";   
                      // welcher Rechner soll "bearbeitet" werden                
                      var   FbDevice      = "";   
                      // Das neue Profil für den Rechner              
                      var   FbProfile     = "";  
                      // erweitertes Logging aktivieren für Fehlersuche
                      const FbDebugging   = true;
                      // Keine Änderung an der Fritzbox (true) -> Listet dann nur alle Profile und Rechner               
                      const FbListOnly    = false; 
                      // Device / Filter Liste erzeugen Ja (true), Nein (false)
                      const FbCreateList  = false; 
                      // Datenpunkt (string) für einen automatischen Script Start (muss angelegt werden!)
                      // Der Datenpunkt wir mit Device;Profil beschrieben. Bsp: Comp-L-Pi;filtprof1
                      const FbIobObject   = "0_userdata.0.ChangeDeviceFilter"  
                      // Datenpunkt in den die Device / Filter Liste als JSON geschrieben wird                    
                      const FbIobJsonList = "0_userdata.0.DeviceFilterListJson" 
                       
                      var secChallenge;
                      var secMd5;
                      var secLogin;
                      var secSid;
                      var secProfileNames = [];
                      var secProfileIds   = [];
                      var secDeviceNames  = [];
                      var secDeviceIds    = [];
                      var JsonList        = "";
                       
                      /*******************************************************
                      * Object Trigger Version
                      * Wenn auf einen Datenpunkt getriggert werden soll, dann muss der folgende Block auskommentiert werden. 
                      * FbIobObject muss mit einem string Datenpunkt versehen werden.
                      * Den Static Teil dann auskommentieren !
                      * Diese Variante erlaubt es das Script dynamisch für alle Devices / Profile der FB zu verwenden. 
                      *******************************************************/
                      on({id: FbIobObject, change: "ne"}, function (obj) {
                          console.log("Profile Changer started ... (Version : " + Version + ")");
                          var data = obj.state.val.split(";");
                          if (data.length != 2) {
                              console.log("Wrong parameter : " + obj.state.val);
                              return;
                          }
                       
                          if (FbDebugging){
                              console.log(" > Datapoint : " + data);
                          }
                       
                          console.log("Computer : " + data[0]);
                          console.log("Filter   : " + data[1]);
                          FbDevice  = data[0];
                          FbProfile = data[1];
                       
                          getFbChallenge();
                          
                          console.log("Profile Changer done");
                      });
                       
                      /*******************************************************
                      * Static Version
                      * Die folgenden 3 Zeilen lassen das Script  sofort laufen. 
                      * Dabei sollte der Object Trigger Block auskommentiert werden. 
                      *******************************************************/
                      //console.log("Profile Changer started ... (Version : " + Version + ")");
                      //getFbChallenge();
                      //console.log("Profile Changer done");
                       
                      // Get the Challenge String from the FritzBox
                      // Compute the md5 Hash
                      function getFbChallenge(){
                          console.log("function getFbChallenge");
                          request.get({
                              url:        'http://' + FbIp + '/login_sid.lua?username=' + FbUser,
                              headers:    headers
                          }, function(error, response, body) {
                              if (error) log(error, 'error');
                              //console.log(response);
                              // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/RegExp
                              // <?xml version="1.0" encoding="utf-8"?><SessionInfo><SID>0000000000000000</SID><Challenge>d36de231</Challenge><BlockTime>0</BlockTime><Rights></Rights></SessionI
                              secChallenge = body.match(/Challenge>(.*)<\/Challenge/)[1];
                              console.log(" > Challenge : " + secChallenge);
                       
                              var uft16le = str2rstr_utf16le(secChallenge + "-" +FbPassword );
                              var md5     = rstr_md5(uft16le);
                              secMd5      = rstr2hex(md5);
                                      
                              console.log(" > MD5       : " + secMd5);   
                       
                              // response="${challenge}-${md5}"
                              // sid=$(curl -i -s -k -d "response=${response}&username=" "http://$1" | grep -Po -m 1 '(?<=sid=)[a-f\d]+' | tail -1)
                              secLogin = "response=" + secChallenge + "-" + secMd5 + "&username=" + FbUser;
                       
                              console.log(" > Login     : " + secLogin);
                       
                              getFbSid();
                          });
                      }
                      .... und so weiter ....
                      

                      Die beiden Datenpunkte vom Typ String existieren natürlich im IOB:
                      const FbIobObject = "0_userdata.0.ChangeDeviceFilter"
                      const FbIobJsonList = "0_userdata.0.DeviceFilterListJson"

                      Jede Hilfe ist mir SEHR willkommen ...
                      DANKE!

                      Ich bin so bescheuert. Natürlich muss ich die Änderungen in den Datenpunkt "ChangeDeviceFilter" packen und nicht in einen X-Beliebigen ...

                      1 Reply Last reply Reply Quote 0
                      • D
                        dougstar last edited by

                        @moelski Besteht die Möglichkeit, das gesamte Logging zu deaktivieren, oder muss ich die ganzen console.log Zeile auskommentieren?

                        1 Reply Last reply Reply Quote 0
                        • Negalein
                          Negalein Global Moderator last edited by

                          @ilovegym

                          Servus

                          Ich glaube du hast auch dieses Script laufen.
                          Hoffe du kannst mir weiterhelfen.

                          Sperren/Entsperren funktioniert super.
                          Mir wird nur kein JSON angelegt.
                          Was kann das sein?

                          92555dd5-4688-4b3b-8592-fc97bc7bf533-image.png

                          4686fb68-96b4-48ce-a005-274adbd46169-image.png

                          1 Reply Last reply Reply Quote 0
                          • RogerWilco 0
                            RogerWilco 0 last edited by RogerWilco 0

                            Hallo zusammende,

                            vielen Dank für das sehr interessante Skript. Allerdings habe ich einen kleinen Bug entdeckt, der mir lange zu schaffen gemacht hat, bis es endlich funktioniert hat.
                            Ich hatte das Problem, dass das Skript durchlief ohne Fehler, jedoch immer das falsche Gerät durch das Zugangsprofil gesperrt wurde und zwar immer das erste nach dem eigentlich zu sperrenden Gerät. Nach Euren Tipps bin ich natürlich erstmal davon ausgegangen, dass dieses Verhalten an unzulässigen Zeichen in den Geräte- oder Profilnamen lag. Doch das habe ich mehrfach überprüft und konnte es dann ausschließen. Der Casus knacksus lag woanders.
                            Es gibt bei der Fritzbox neben den Zugangsprofilen noch eine weitere Möglichkeit, Geräte vom Internet-Zugang zu sperren: nämlich direkt über die Gerätesperre. In der Weboberfläche der Fritzbox (Internet | Filter | Kindersicherung) habe ich dann festgestellt, dass das Zugangsprofil derjenigen Geräte nicht mehr geändert werden kann, bei denen diese Gerätesperre aktiviert war. Und das hat mich dann auf die richtige Fährte gebracht.
                            e57133f1-b500-4fdc-b3f3-4929db52cb55-grafik.png
                            Das obengenannte Skript "verzählt" sich beim Ändern des Zugangsprofils nun um genauso viele Geräte, wie Gerätesperren in der Liste VOR dem entsprechenden Gerät aktiviert sind. In meinem Fall war es ein Gerät (AltesDenkBrett). Gerätesperren in der Liste NACH dem Gerät spielen dabei offenbar keine Rolle.
                            Nachdem ich alle Gerätesperren entfernt hatte, die in der Liste VOR meinem zu sperrenden Gerät aufgeführt waren, hat das Skript einwandfrei und reproduzierbar funktioniert und das richtige Gerät gesperrt.

                            Es ist etwas umständlich zu beschreiben gewesen, aber ich hoffe, es war halbswegs verständlich und hilft dem einen oder anderen, der mit ähnlichen Unwegbarkeiten zu kämpfen hat wie ich.

                            Viele Grüße,
                            Ralf

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            814
                            Online

                            31.8k
                            Users

                            80.0k
                            Topics

                            1.3m
                            Posts

                            filter fritzbox kindersicherung
                            23
                            144
                            19136
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo