Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. [gelöst] Puppeteer Login/Authentication vor Screenshot

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    279

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

[gelöst] Puppeteer Login/Authentication vor Screenshot

Scheduled Pinned Locked Moved ioBroker Allgemein
9 Posts 3 Posters 890 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    booleeny
    wrote on last edited by booleeny
    #1

    Hallo zusammen,

    ich möchte mich auf einer Webseite anmelden und dann einen Screenshot machen. Dies scheint direkt mit Puppeteer zu funktionieren, daher die Frage ob das auch über den Adapter zu realisieren ist?

    Mein Minimalbeispiel ist hier ein direktes JavaScript:

    sendTo('puppeteer.0', 'screenshot', { url:'https://grundschule-tostedt.giro-web.de',
            ioBrokerOptions: {
               storagePath: 'mensaplan.png',
          }, 
            viewportOptions: {
               width: 800,
               height: 600
          },
        
    });
    

    Das funktioniert wunderbar und im Ordner /opt/iobroker/iobroker-data/files/0_userdata.0 wird mensaplan.png angelegt.
    mensaplan.png
    Kann das Script hier angepasst werden, sodass Benutzername und Passwort eingegeben werden (https://www.webshare.io/academy-article/puppeteer-login)?
    Wie baut man so etwas wie in diesem Beispiel ein?

    // Fill in the login form
      await page.type('#wpName1', 'your_username'); // Replace 'your_username' with your actual username
      await page.type('#wpPassword1', 'your_password'); // Replace 'your_password' with your actual password
      await page.click('#wpLoginAttempt');
    

    Die Seite direkt nach dem Login würde ich gerne speichern.

    login.jpg

    B 1 Reply Last reply
    0
    • B booleeny

      Hallo zusammen,

      ich möchte mich auf einer Webseite anmelden und dann einen Screenshot machen. Dies scheint direkt mit Puppeteer zu funktionieren, daher die Frage ob das auch über den Adapter zu realisieren ist?

      Mein Minimalbeispiel ist hier ein direktes JavaScript:

      sendTo('puppeteer.0', 'screenshot', { url:'https://grundschule-tostedt.giro-web.de',
              ioBrokerOptions: {
                 storagePath: 'mensaplan.png',
            }, 
              viewportOptions: {
                 width: 800,
                 height: 600
            },
          
      });
      

      Das funktioniert wunderbar und im Ordner /opt/iobroker/iobroker-data/files/0_userdata.0 wird mensaplan.png angelegt.
      mensaplan.png
      Kann das Script hier angepasst werden, sodass Benutzername und Passwort eingegeben werden (https://www.webshare.io/academy-article/puppeteer-login)?
      Wie baut man so etwas wie in diesem Beispiel ein?

      // Fill in the login form
        await page.type('#wpName1', 'your_username'); // Replace 'your_username' with your actual username
        await page.type('#wpPassword1', 'your_password'); // Replace 'your_password' with your actual password
        await page.click('#wpLoginAttempt');
      

      Die Seite direkt nach dem Login würde ich gerne speichern.

      login.jpg

      B Offline
      B Offline
      booleeny
      wrote on last edited by
      #2

      Oh man ok ich sehe gerade, dass man die Syntax ja ganz normal als Javascript nutzen kann :man-facepalming: .
      Damit hat es gut geklappt und ich komme erst mal weiter.

      
      const puppeteer = require('puppeteer');
      
      (async () => {
        const browser = await puppeteer.launch();
        const page = await browser.newPage();
        
        // Navigate to
        await page.goto('https://grundschule-tostedt.giro-web.de/' , { waitUntil: 'load' });
        await page.setViewport({ width: 1300, height: 850 })
        // Fill in the login form
        await page.type('input[name=loginname]', 'XXXXXX'); // Replace 'your_username' with your actual username
        await page.type('input[name=loginpass]', 'XXXXXX'); // Replace 'your_password' with your actual password
        await page.click('#anmelden_button');
      
        // Wait for the login to complete
        await page.waitForNavigation();
      
        await page.waitForSelector('#menuorder');
        await page.screenshot({ path: '/opt/iobroker/iobroker-data/files/0_userdata.0/giroweb1.png' });
      
        // Close the browser
        await browser.close();
      })();
      
      1 Reply Last reply
      1
      • B Offline
        B Offline
        booleeny
        wrote on last edited by booleeny
        #3

        Ok da gibt es doch noch ein Problem mit dem download des Bildes durch Javascript und dem anschließendem anziegen in VIS.

        Ich lade also das Bild giroweb.png mit folgendem Code durch Javascript herunter:

        const puppeteer = require('puppeteer');
        
        (async () => {
          const browser = await puppeteer.launch();
          const page = await browser.newPage();
        
          await page.goto('https://grundschule-tostedt.giro-web.de/' , { waitUntil: 'load' });
          await page.setViewport({ width: 1680, height: 815 });
          await page.type('input[name=loginname]', 'XXX');
          await page.type('input[name=loginpass]', 'XXX');
          await page.click('#anmelden_button');
          await page.waitForNavigation();
          await page.waitForSelector('#menuorder');
          await page.screenshot({ path: '/opt/iobroker/iobroker-data/files/vis.0/main/giroweb.png'});
          await browser.close();
        })();
        

        Nun liegt in /opt/iobroker/iobroker-data/files/vis.0/main/ das Bild giroweb.png.

        admin@iobroker:/opt/iobroker/iobroker-data/files/vis.0/main$ ls -l
        total 844
        -rw-rwxr--+ 1 iobroker iobroker 143949 Jan  9  2023 2560px-Esso-Logo.svg.png
        -rw-rwxr--+ 1 iobroker iobroker  39202 Jan  9  2023 Aral_Logo.svg.png
        -rw-rwxr--+ 1 iobroker iobroker 108111 Jan  9  2023 Logo-Raisa-2019.png
        -rw-rw-r--+ 1 iobroker iobroker 235920 Nov 14 09:38 giroweb.png
        -rw-rwxr--+ 1 iobroker iobroker   5544 Nov 30  2023 hoyer.png
        -rw-rwxr--+ 1 iobroker iobroker      0 Sep  5 09:15 vis-user.css
        -rw-rwxr--+ 1 iobroker iobroker 316394 Nov 14 09:23 vis-views.json
        

        Ich bekomme dieses Bild nicht in VIS angezeigt. Ich habe es mit dem image widget versucht. Es wird in dem Dateibrowser nicht angezeigt.
        Screenshot 2024-11-14 100013.png
        Eine direkte Angabe des Pfades im Browser http://192.168.1.8:8082/opt/iobroker/iobroker-data/files/vis.0/main/giroweb.png führt zu dem Fehler
        File iobroker/iobroker-data/files/vis.0/main/giroweb.png not found: {}
        Daher hilft auch ein iframe Widget auf den Pfad nicht.

        Wenn ich das Bild manuell über Dateien -> Dateien hochladen einlade kann ich es öffnen.
        Habe auch schon versucht die Berechtigungen per

        sudo chmod -v 755 giroweb.png
        

        hochzusetzen aber auch ohne Erfolg.

        Dasselbe Verhalten gilt auch für den Ordner /opt/iobroker/iobroker-data/files/0_userdata.0 .

        Wo ist denn hier noch ein Berechtigungsproblem dass manuell hochgeladene Bilder angezeigt werden und per Javascript/Blockly kein Zugriff oder keine Anzeige des Bildes möglich ist?

        NPM 10.8.2 / js-controller 6.0.9 / node.js: v20.17.0 / admin 7.2.6

        liv-in-skyL OliverIOO 2 Replies Last reply
        0
        • B booleeny

          Ok da gibt es doch noch ein Problem mit dem download des Bildes durch Javascript und dem anschließendem anziegen in VIS.

          Ich lade also das Bild giroweb.png mit folgendem Code durch Javascript herunter:

          const puppeteer = require('puppeteer');
          
          (async () => {
            const browser = await puppeteer.launch();
            const page = await browser.newPage();
          
            await page.goto('https://grundschule-tostedt.giro-web.de/' , { waitUntil: 'load' });
            await page.setViewport({ width: 1680, height: 815 });
            await page.type('input[name=loginname]', 'XXX');
            await page.type('input[name=loginpass]', 'XXX');
            await page.click('#anmelden_button');
            await page.waitForNavigation();
            await page.waitForSelector('#menuorder');
            await page.screenshot({ path: '/opt/iobroker/iobroker-data/files/vis.0/main/giroweb.png'});
            await browser.close();
          })();
          

          Nun liegt in /opt/iobroker/iobroker-data/files/vis.0/main/ das Bild giroweb.png.

          admin@iobroker:/opt/iobroker/iobroker-data/files/vis.0/main$ ls -l
          total 844
          -rw-rwxr--+ 1 iobroker iobroker 143949 Jan  9  2023 2560px-Esso-Logo.svg.png
          -rw-rwxr--+ 1 iobroker iobroker  39202 Jan  9  2023 Aral_Logo.svg.png
          -rw-rwxr--+ 1 iobroker iobroker 108111 Jan  9  2023 Logo-Raisa-2019.png
          -rw-rw-r--+ 1 iobroker iobroker 235920 Nov 14 09:38 giroweb.png
          -rw-rwxr--+ 1 iobroker iobroker   5544 Nov 30  2023 hoyer.png
          -rw-rwxr--+ 1 iobroker iobroker      0 Sep  5 09:15 vis-user.css
          -rw-rwxr--+ 1 iobroker iobroker 316394 Nov 14 09:23 vis-views.json
          

          Ich bekomme dieses Bild nicht in VIS angezeigt. Ich habe es mit dem image widget versucht. Es wird in dem Dateibrowser nicht angezeigt.
          Screenshot 2024-11-14 100013.png
          Eine direkte Angabe des Pfades im Browser http://192.168.1.8:8082/opt/iobroker/iobroker-data/files/vis.0/main/giroweb.png führt zu dem Fehler
          File iobroker/iobroker-data/files/vis.0/main/giroweb.png not found: {}
          Daher hilft auch ein iframe Widget auf den Pfad nicht.

          Wenn ich das Bild manuell über Dateien -> Dateien hochladen einlade kann ich es öffnen.
          Habe auch schon versucht die Berechtigungen per

          sudo chmod -v 755 giroweb.png
          

          hochzusetzen aber auch ohne Erfolg.

          Dasselbe Verhalten gilt auch für den Ordner /opt/iobroker/iobroker-data/files/0_userdata.0 .

          Wo ist denn hier noch ein Berechtigungsproblem dass manuell hochgeladene Bilder angezeigt werden und per Javascript/Blockly kein Zugriff oder keine Anzeige des Bildes möglich ist?

          NPM 10.8.2 / js-controller 6.0.9 / node.js: v20.17.0 / admin 7.2.6

          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          wrote on last edited by liv-in-sky
          #4

          @booleeny
          hast du das so gemacht ?

          Image 271.png

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          1 Reply Last reply
          0
          • B booleeny

            Ok da gibt es doch noch ein Problem mit dem download des Bildes durch Javascript und dem anschließendem anziegen in VIS.

            Ich lade also das Bild giroweb.png mit folgendem Code durch Javascript herunter:

            const puppeteer = require('puppeteer');
            
            (async () => {
              const browser = await puppeteer.launch();
              const page = await browser.newPage();
            
              await page.goto('https://grundschule-tostedt.giro-web.de/' , { waitUntil: 'load' });
              await page.setViewport({ width: 1680, height: 815 });
              await page.type('input[name=loginname]', 'XXX');
              await page.type('input[name=loginpass]', 'XXX');
              await page.click('#anmelden_button');
              await page.waitForNavigation();
              await page.waitForSelector('#menuorder');
              await page.screenshot({ path: '/opt/iobroker/iobroker-data/files/vis.0/main/giroweb.png'});
              await browser.close();
            })();
            

            Nun liegt in /opt/iobroker/iobroker-data/files/vis.0/main/ das Bild giroweb.png.

            admin@iobroker:/opt/iobroker/iobroker-data/files/vis.0/main$ ls -l
            total 844
            -rw-rwxr--+ 1 iobroker iobroker 143949 Jan  9  2023 2560px-Esso-Logo.svg.png
            -rw-rwxr--+ 1 iobroker iobroker  39202 Jan  9  2023 Aral_Logo.svg.png
            -rw-rwxr--+ 1 iobroker iobroker 108111 Jan  9  2023 Logo-Raisa-2019.png
            -rw-rw-r--+ 1 iobroker iobroker 235920 Nov 14 09:38 giroweb.png
            -rw-rwxr--+ 1 iobroker iobroker   5544 Nov 30  2023 hoyer.png
            -rw-rwxr--+ 1 iobroker iobroker      0 Sep  5 09:15 vis-user.css
            -rw-rwxr--+ 1 iobroker iobroker 316394 Nov 14 09:23 vis-views.json
            

            Ich bekomme dieses Bild nicht in VIS angezeigt. Ich habe es mit dem image widget versucht. Es wird in dem Dateibrowser nicht angezeigt.
            Screenshot 2024-11-14 100013.png
            Eine direkte Angabe des Pfades im Browser http://192.168.1.8:8082/opt/iobroker/iobroker-data/files/vis.0/main/giroweb.png führt zu dem Fehler
            File iobroker/iobroker-data/files/vis.0/main/giroweb.png not found: {}
            Daher hilft auch ein iframe Widget auf den Pfad nicht.

            Wenn ich das Bild manuell über Dateien -> Dateien hochladen einlade kann ich es öffnen.
            Habe auch schon versucht die Berechtigungen per

            sudo chmod -v 755 giroweb.png
            

            hochzusetzen aber auch ohne Erfolg.

            Dasselbe Verhalten gilt auch für den Ordner /opt/iobroker/iobroker-data/files/0_userdata.0 .

            Wo ist denn hier noch ein Berechtigungsproblem dass manuell hochgeladene Bilder angezeigt werden und per Javascript/Blockly kein Zugriff oder keine Anzeige des Bildes möglich ist?

            NPM 10.8.2 / js-controller 6.0.9 / node.js: v20.17.0 / admin 7.2.6

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            wrote on last edited by OliverIO
            #5

            @booleeny sagte in Puppeteer Adapter Login / Authentication vor Screenshot:

            File iobroker/iobroker-data/files/vis.0/main/giroweb.png not found: {}

            du musst die datei am besten nochmal mit writeFile schreiben
            das ist ein iobroker befehl, der die datei dann auch im webserver registriert.
            pupeteer verwendet selbs auch nur das node:fs modul.

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            liv-in-skyL B 2 Replies Last reply
            0
            • OliverIOO OliverIO

              @booleeny sagte in Puppeteer Adapter Login / Authentication vor Screenshot:

              File iobroker/iobroker-data/files/vis.0/main/giroweb.png not found: {}

              du musst die datei am besten nochmal mit writeFile schreiben
              das ist ein iobroker befehl, der die datei dann auch im webserver registriert.
              pupeteer verwendet selbs auch nur das node:fs modul.

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              wrote on last edited by
              #6

              @oliverio sagte in Puppeteer Adapter Login / Authentication vor Screenshot:

              pupeteer verwendet selbs auch nur das node:fs modul.

              nicht der puppeteer adapter - siehe beschreibung 2 post weiter oben

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              OliverIOO 1 Reply Last reply
              0
              • liv-in-skyL liv-in-sky

                @oliverio sagte in Puppeteer Adapter Login / Authentication vor Screenshot:

                pupeteer verwendet selbs auch nur das node:fs modul.

                nicht der puppeteer adapter - siehe beschreibung 2 post weiter oben

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                wrote on last edited by
                #7

                @liv-in-sky
                das denke ich,
                aber er verwendet dem skript nach nicht den adapter

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                liv-in-skyL 1 Reply Last reply
                0
                • OliverIOO OliverIO

                  @liv-in-sky
                  das denke ich,
                  aber er verwendet dem skript nach nicht den adapter

                  liv-in-skyL Offline
                  liv-in-skyL Offline
                  liv-in-sky
                  wrote on last edited by
                  #8

                  @oliverio dann hast du natürlich recht - - ein "writeFile" muss dann her

                  nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                  1 Reply Last reply
                  0
                  • OliverIOO OliverIO

                    @booleeny sagte in Puppeteer Adapter Login / Authentication vor Screenshot:

                    File iobroker/iobroker-data/files/vis.0/main/giroweb.png not found: {}

                    du musst die datei am besten nochmal mit writeFile schreiben
                    das ist ein iobroker befehl, der die datei dann auch im webserver registriert.
                    pupeteer verwendet selbs auch nur das node:fs modul.

                    B Offline
                    B Offline
                    booleeny
                    wrote on last edited by
                    #9

                    @oliverio

                    Vielen Dank! Das hat super funktioniert. Nach dem runterladen wird das Bild nun noch im iobroker Dateisystem registriert und kann in der vis angezeigt werden.

                    const puppeteer = require('puppeteer');
                    
                    (async () => {
                      const browser = await puppeteer.launch();
                      const page = await browser.newPage();
                    
                      await page.goto('https://grundschule-tostedt.giro-web.de/' , { waitUntil: 'load' });
                      await page.setViewport({ width: 1680, height: 815 });
                      await page.type('input[name=loginname]', 'XXX');
                      await page.type('input[name=loginpass]', 'XXX');
                      await page.click('#anmelden_button');
                      await page.waitForNavigation();
                      await page.waitForSelector('#menuorder');
                      await page.screenshot({ path: '/opt/iobroker/iobroker-data/files/0_userdata.0/screenshots/tmp.png'});
                      await browser.close();
                    })();
                    
                    // store screenshot in DB
                    const fs = require('node:fs');
                    let data = fs.readFileSync('/opt/iobroker/iobroker-data/files/0_userdata.0/screenshots/tmp.png');
                    writeFile(null, '/giroweb.png', data, (error) => {
                        log('file written');
                    });
                    
                    

                    Screenshot 2024-11-14 210853.png

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate
                    FAQ Cloud / IOT
                    HowTo: Node.js-Update
                    HowTo: Backup/Restore
                    Downloads
                    BLOG

                    277

                    Online

                    32.7k

                    Users

                    82.5k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Home
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe