Url aufrufen, ohne Browser



  • Hallo,

    Es geht um folgendes:
    Ich möchte bei mehreren Überwachungskameras eine (auf der Kamera laufende) App starten/stoppen.

    Das funktioniert über eine API, die über eine URL aufgerufen wird.

    Momentan hab ich dafür ein Powershell-Skript geschrieben:

    Start-Process chrome.exe "http://benutzer:passwort@192.168.0.1/axis-cgi/applications/control.cgi?action=start/stop&package=vmd"
    Start-Process chrome.exe "http://benutzer:passwort@192.168.0.2/axis-cgi/applications/control.cgi?action=start/stop&package=vmd"
    $browser = get-process chrome
    sleep 30
    Stop-Process $browser
    

    Ist nicht so das Gelbe vom Ei, zugegebenermaßen, aber funktioniert.

    Nun kam ich auf die Idee, mir ein Programm zu schreiben, dass einfach mit einem Klick die URLs ausführt.
    Als weiteren Vorteil sehe ich darin, dass man dann auch nicht die Zugangsdaten sehen kann, wie im PS-Script (gut, das ist jetzt nicht so wichtig, da außer mir da eh keiner drauf zugreifen kann, aber mag das trotzdem nicht leiden)

    Hab schon verschiedene Sachen ergooglet und probiert, z.B.

    #include <iostream>
    
    int main()
    {
        system("start chrome.exe http://benutzer:passwort@192.168.0.1/axis-cgi/applications/control.cgi?action=start/stop&package=vmd");
        system("start chrome.exe http://benutzer:passwort@192.168.0.2/axis-cgi/applications/control.cgi?action=start/stop&package=vmd");
        system("tskill chrome.exe");
    }
    
    

    Aber ich würde eher eine Lösung suchen, wo die URL zwar ausgeführt wird, aber dazu nicht extra der browser gestartet und wieder beendet werden muss.
    Oder dass das Programm das dann im Hintergrund ausführt, ohne das da irgendwas aufploppt.

    Kann mir da jemand weiterhelfen?

    PS: wie man an meinem gecode wohl sehen kann, bin ich blutiger Anfänger, was das Programmieren angeht... ich kann zwar so kleine Taschenrechner und Spielereien programmieren, aber bin irgendwie (noch) zu schlecht für richtig sinnvolle Sachen xD


  • Mod

    curl



  • Wenn's Powershell statt c++ sein darf Invoke-WebRequest -URI

    Zugangsdaten nicht sehen ist nicht so trivial... auch wenn du die in den Source Code schreibst stehen die ja da.



  • Lass mich raten: Es geht um HTTP basic auth: https://stackoverflow.com/a/27951845

    Da du hier aber im Linux-/C++-Bereich unterwegs bist, wie völlig richtig angemerkt: curl


  • Mod

    @Schlangenmensch sagte in Url aufrufen, ohne Browser:

    Zugangsdaten nicht sehen ist nicht so trivial... auch wenn du die in den Source Code schreibst stehen die ja da.

    Man lädt sie halt von außen, z.B. aus einer Datei/Datenbank/Umgebungsvariable die nur der autorisierte Nutzer auslesen kann. Oder besser: Anderes Autorisierungsschema. Keys, Zertifikate, und vieles andere mehr (die prinzipiell auch alle Varianten oder spezielle Umsetzungen derselben Ideen sind).

    @Fragender sagte in Url aufrufen, ohne Browser:

    Da du hier aber im Linux-/C++-Bereich unterwegs bist, wie völlig richtig angemerkt: curl

    Ich habe gerade an einem Windowsrechner getestet, der hat auch curl, und ich bin absolut sicher dass der Besitzer das da nicht nachträglich installiert hat.



  • @SeppJ sagte in Url aufrufen, ohne Browser:

    Man lädt sie halt von außen, z.B. aus einer Datei/Datenbank/Umgebungsvariable die nur der autorisierte Nutzer auslesen kann. Oder besser: Anderes Autorisierungsschema. Keys, Zertifikate, und vieles andere mehr (die prinzipiell auch alle Varianten oder spezielle Umsetzungen derselben Ideen sind).

    Joa, mir ist schon klar wie das funktionieren kann. Aber ob das @Der_Affenkoenig auch klar ist, ist eine andere Frage.
    Und, von dem was der TE gepostet hat, scheint er User Name und Passwort im Klartext in der URL zu haben. Wenn da Sicherheitsaspekte eine Rolle spielen, dann das:

    Oder besser: Anderes Autorisierungsschema. Keys, Zertifikate, und vieles andere mehr (die prinzipiell auch alle Varianten oder spezielle Umsetzungen derselben Ideen sind).



  • @SeppJ sagte in Url aufrufen, ohne Browser:

    Ich habe gerade an einem Windowsrechner getestet, der hat auch curl, und ich bin absolut sicher dass der Besitzer das da nicht nachträglich installiert hat.

    Laut Wikipedia: „ Seit dem April-2018-Update (1803) wurde cURL als Bordmittel in Windows 10 aufgenommen und ist in einer Standardinstallation von Windows enthalten.“



  • @Fragender sagte in Url aufrufen, ohne Browser:

    Da du hier aber im Linux-/C++-Bereich unterwegs bist, wie völlig richtig angemerkt: curl

    Dies ist der C++-Bereich, aber warum sollte der speziell für Linux sein? Die Idee von "alle ISO-Standards" ist doch gerade, /nicht/ spezifisch für irgendein OS zu sein, sondern einfach dem C++-Standard zu folgen. Und da Powershell verwendet wird und von chrome.exe gesprochen wird, handelt es sich doch augenscheinlich um Windows! Die Grenzen verschwimmen sowieso immer mehr. Neben dem curl unter Windows gibt es z.B. auch Edge unter Linux 🙂

    Ich frage mich bei sowas aber immer ernsthaft, warum man das in C++ machen wollen würde.

    Shell-Scripte sind auch keine gute Idee, sobald die mehr als eine halbe Bildschirmseite lang werden. Dann lieber eine andere Sprache verwenden - jedenfalls eine, in der man sowas wie einen http-Request problemlos machen kann.


  • Mod

    @wob sagte in Url aufrufen, ohne Browser:

    Ich frage mich bei sowas aber immer ernsthaft, warum man das in C++ machen wollen würde.

    Shell-Scripte sind auch keine gute Idee, sobald die mehr als eine halbe Bildschirmseite lang werden. Dann lieber eine andere Sprache verwenden - jedenfalls eine, in der man sowas wie einen http-Request problemlos machen kann.

    Weil man normalerweise auch etwas mit den Daten machen will? Und für dieses etwas kann C++ sehr gut geeignet sein. Ein Web-Request, bei dem man dann am Ende die Daten zur Verarbeitung bereit hat, ist jetzt auch nicht weiter schwierig in C++.

    Das hier ist halt eine merkwürdige Anforderung (vielleicht ein XY-Problem?), dass man eine Webseite nur anpingen möchte, ohne etwas mit der Antwort zu tun.