Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Skript für Abfrage Wunschkennzeichen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Skript für Abfrage Wunschkennzeichen

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
1 Beiträge 1 Kommentatoren 441 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    Sneak-L8
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich habe mir ein kleines Skript geschrieben, um nicht selbst täglich nach einem Wunschkennzeichen zu schauen. Das blöde: es tut nicht :( .
    Ich habe mir die übertragenen Formulardaten und Header angesehen und versucht, es so gut es geht nachzubauen, aber mir scheint, dass der Server nicht merkt, dass es sich um einen Folgeaufruf handelt.

    Könnt Ihr mal einen Blick drauf werfen:

    // V1.0  - 13.07.2020: Erste Schritte für Skript
    
    //const request   = require('request');
    const request = require('request/index.js');
    const START_DOMAIN = 'https://kfz2.virtuelles-rathaus.de';
    const START_URL = START_DOMAIN + '/igv/servlet/Internetgeschaeftsvorfaelle';
    const START_PARAM = '?MANDANT=08215000&AUFRUF=WKZ';
    const defaultHeader = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'de,en-US;q=0.7,en;q=0.3',
        'Accept-Charset': 'UTF-8',
        'Connection': 'Keep-Alive',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0'
    };
    
    const NO_HIT = "'<p class='meldung'>Keine verf&uuml;gbaren Kennzeichen gefunden!</p>";
    const SPLIT_EINTRAG = /<div id='OPT_KENNZEICHENSUCHE_TREFFER' class='radio'>((?:.|\n|\r)*?)<div class="blaettern">/gi;
    const SPLIT_KENNZ = /<span class='visibleText'>((?:.|\n|\r)*?)<\/span>/gi;
    const TIMESTMP = /<div><input type='hidden' name='ZEITSTEMPEL' value='((?:.|\n|\r)*?)' \/><\/div>/i;
    var empfaenger  = "email@email.de";
    var cookieJar = null;
    var options   = null;
    
    function isAbrufOk(oper, err, stat, body) {
        if (err)
            log('Fehler "' + err + '" beim ' + oper, "error");
        else if(body) {
            if (stat.statusCode == 200)
                return true;
            log("Fehler " + stat.statusCode + " bei " + oper + " - " + body);
        } else 
            log("Leere Seite bei " + oper + " (Status " + stat.statusCode + ")");
        return false;
    }
    
    function sendMail(kennzeichen) {
        var subject  = 'Wunschkennzeichen gefunden';
        var mailtext = '<font face="Calibri"><p>Gute Nachrichten,</p><p>Es gibt wieder Kenzeichen zu reservieren:</p>';
        mailtext += '<p>' + kennzeichen + '</p>';
        sendTo("email", {
            from:    "Wunschkennzeichen",
            to:      empfaenger,
            subject: subject,
            text:    'Neu: ' + kennzeichen,
            html:    mailtext
        });     
    }
    
    function checkNoHit(body) {
        if (body.indexOf(NO_HIT) < 0) {
            log('Meldung "kein Treffer" fehlt!');
            sendMail(body);
        }
    }
    
    function process_auswahl(err, stat, body) {
        if (! isAbrufOk("Abruf Wunschkennzeichen", err, stat, body)) {
            return;
        }
        SPLIT_EINTRAG.lastIndex = 0;
        var result = SPLIT_EINTRAG.exec(body);
        if (result) {
            SPLIT_KENNZ.lastIndex = 0;
            var list
            var anzTreffer = 0;
            var Treffer = "";
            while (list = SPLIT_KENNZ.exec(result[0])) {
                anzTreffer ++;
                if (anzTreffer == 1)
                    Treffer = list[0];
                else
                    Treffer += ", " + list[0];
            }
            if (anzTreffer == 0) {
                log("Leere Treffermenge");
                checkNoHit(body);
            } else {
                sendMail(Treffer);
            }
        } else {
            log("Kein Result gefunden");
            if (body.indexOf("<fieldset id='EINGABE_KENNZEICHENSUCHE_VERFUEGBAR'>") < 0)
                log("Webformular nicht erkannt...");
            else
                checkNoHit(body);
        }
    }
    
    function requestWunschkennzeichen(buchstaben, ziffern, timestmp) {
        var formData = {
            'WKZ_ERKENN_Z': buchstaben,  // TXT_KENNZEICHENSUCHE_ERKENNUNGSZEICHEN
            'WKZ_ZIFFERN': ziffern,      // TXT_KENNZEICHENSUCHE_ZIFFERN
    //        'WKZ_UNTERSCH_Z': 'KA',      // INPUT-TXT_KENNZEICHENSUCHE_UNTERSCHEIDUNG
            'WKZ_SUCHMERKMAL': "NULL",   // OPT_KENNZEICHENSUCHE_BESONDERHEIT1
            'BTN_WKZSUCHE': "suchen",
            'ZEITSTEMPEL': timestmp
            };
        options.form = formData;
        options.url  = START_URL;
        options.headers['content-type'] = 'multipart/form-data';
    
        log("Starte Kennzeichenabfrage für KA-" + buchstaben + " " + ziffern + " ...");
        request.post(options, process_auswahl);
    }
    
    function getFormTimestamp(body) {
        var timestmp = TIMESTMP.exec(body);
        if (timestmp)
            return timestmp[1];
        log("Wunschkennzeichen: Keinen Timestamp gefunden", "error");
        return null;
    }
    
    function process_start_page(err, stat, body) {
        if (! isAbrufOk("Start Wunschkennzeichen", err, stat, body))
            return;
    
        if (body.indexOf("name='WKZ_UNTERSCH_Z'") > 0) {
            var timestmp = getFormTimestamp(body);
            log("System initialisiert, Timestamp = " + timestmp);
            requestWunschkennzeichen("ID", "", timestmp);
        }
        else {
            log('Text nicht gefunden', 'error');
            sendMail(body);
        }
    }
    
    
    // *********************************** Allgemeine Start-Funktion ***************************************
    function doRequest() {
        cookieJar = request.jar();
        var header = defaultHeader;
        options = {
            url: START_URL + START_PARAM,
            jar: cookieJar,
            headers: header
        };
        log("Fordere Start-Seite an...")
        request(options, process_start_page);
    }
    
    doRequest();  // einmal gleich losstarten
    schedule("1 6 * * *", doRequest);
    

    Da es ja keine App ist sondern nur eine Website sollte man aus dem Seitenquelltext ja alles entdecken. Und das sind ein paar Formularwerte und Header-Angaben.
    Was mache ich falsch?

    Viele Grüße
    Sneak-L8

    1 Antwort Letzte Antwort
    0
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen


    Support us

    ioBroker
    Community Adapters
    Donate

    335

    Online

    32.6k

    Benutzer

    82.3k

    Themen

    1.3m

    Beiträge
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
    ioBroker Community 2014-2025
    logo
    • Anmelden

    • Du hast noch kein Konto? Registrieren

    • Anmelden oder registrieren, um zu suchen
    • Erster Beitrag
      Letzter Beitrag
    0
    • Home
    • Aktuell
    • Tags
    • Ungelesen 0
    • Kategorien
    • Unreplied
    • Beliebt
    • GitHub
    • Docu
    • Hilfe