PHP automatické přihlášení do webu kotle

kajka

PHP automatické přihlášení do webu kotle
« kdy: 05. 09. 2018, 18:37:21 »
Mám kotel s webovým rozhraním, ale řídící jednotka (Siemens POL 687)nepodporuje žádný protokol, kterým bych mohl nějak vyčítat data, jediná možnost je tedy nějaké parsování z webové stránky. Zkoušel jsem pár návodů s php a curl, ale bez úspěchu.
Vše nejspíše končí už na tom, že to neprojde přes přihlašovací "obrazovku". -Soudím dle: Error 401 -Unauthorized Access
Takže tipuji, že tam nějaká komunikace s řídící jednotkou proběhne. Může mně někdo nasměrovat, kam se ubírat pro řešení problému, tedy nějspíš to přihlášení.
Při "ručním" napsání IP adresy řídící jednotky do prohlížeče vyskočí ihned přihlašovací tabulka a při použití "Nástroje pro vývojáře" v google chrome je popis stránky pouze prázdné html, takže přihlašovací URL do curl dávám pouze http://ip_zarizeni


.

Re:PHP automatické přihlášení do webu kotle
« Odpověď #1 kdy: 06. 09. 2018, 01:30:38 »
Předpokládám, že přes prohlížeč se ručně přihlásíte.

Podle vašeho nepříliš jasného popisu se pravděpodobně jedná o Digest authentikaci. Tuto informaci buď zjistíte z dokumentace nebo z Nástrojů pro vývojáře - Network - kliknutí na název stránky a v hlavičkách je authentikace uvedena. Prakticky se vyskytuje jen Basic nebo Digest.

A podle toho nastavíte odpovídající parametry pro cURL.

Jenda

Re:PHP automatické přihlášení do webu kotle
« Odpověď #2 kdy: 06. 09. 2018, 04:47:31 »
Možná by stálo za to alespoň napsat, jestli je to HTTP auth (tu pak má curl/wget přímo v sobě, protože je to standard), nebo webový formulář.

Webový formulář řeším tak, že spustím rozšíření Live HTTP Headers, případně nástroj Burp Proxy, normálně se přihlásím, a ten jeden požadavek odchytnu. Pokud to není nějaká extrémní javascriptová prasárna (zdravíme do ČSOB), tak stačí ten požadavek zkopírovat a wgetu říct, aby si uložil cookies do souboru -- a při dalších požadavcích ten soubor používal.

kajka

Re:PHP automatické přihlášení do webu kotle
« Odpověď #3 kdy: 06. 09. 2018, 18:11:08 »
Díky, byla to basic authentikace. A kdyby to někomu pomohlo, tak přidávám funkční kód pro přihlášení.
Kód: [Vybrat]
$username='ABC';
$password='XYZ';
$URL='<URL>';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$result=curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);   //get status code
curl_close ($ch);
echo($status_code);