Manuelles Update der DynDNS Domain

Hallo zusammen,

da ich ein Netz hinter einem Router habe den ich nicht als DynDNS-Client verwenden kann möchte ich gerne über IPS meine öffentliche IP an an den Provider rückmelden.

Ich habe dafür folgendes Skript angelegt und das Bsp. vom Provider (in dem Fall Strato) nachgebaut.
Leider bekomme ich aber als Antwort „badagent 0.0.0.0“ und finde den Fehler nicht.
(kenne mich aber mit cURL auch überhaut nicht aus…)

<?php

//DynDNS-Client Strato [TEST] 

$Benutzer = "domain.de";
$Passwort = "123456789";
$Domain = "vpn.domain.de";
$Server = "dyndns.strato.com";


/**** Die Abfrage ****/
// IP holen
$externalContent = file_get_contents('http://checkip.dyndns.com/');
preg_match('/\b(?:\d{1,3}.){3}\d{1,3}\b/', $externalContent, $m);
$externalIp = $m[0];
$IP = $externalIp;

//Debug
echo $IP."\n";


// Update String bauen
$Update ='https://';
$Update.=$Benutzer.':'.$Passwort;
$Update.='@'.$Server.'/nic/update?hostname=';
$Update.=$Domain.'&myip='.$IP;

//Debug
echo $Update."\n";


// CURL($Update);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Update);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$ERR = curl_exec($ch);
curl_close($ch);
unset($ch);
// "Fehler"-Ausgabe
echo $ERR;

Die Debugausgabe sieht so aus:

84.148.29.xxx
https://domain.de:123456789@dyndns.strato.com/nic/update?hostname=vpn.domain.de&myip=84.148.29.xxx
badagent 0.0.0.0

wenn ich den zusammengebauten String in einen Browser eingebe kommt ein Fenster in dem ich User und PW angeben muss, danach wird mit good und die IP bestätigt.
Ich denke daher, dass die Anmeldung mit User und PW über cURL nicht so läuft wie es soll, habe aber keinerlei Ahnung von https und cURL und benötige Hilfe.

Hi,
evtl. brauchst du von denen ein SSO Token … ich hatte ähnliche Herausforderungen mit GoDaddy.

schau mal hier: Symcon_GoDaddyDNS/module.php at master · elueckel/Symcon_GoDaddyDNS · GitHub

Hallo BommelPommel,

danke für den Tipp!
Ich habe mir den Inhalt des Links mal angeschaut und versucht zu verstehen was da gemacht wird.
Das ist auf jeden Fall schon mal ein gutes Bsp. an dem man einiges lernen kann.
Aber ich kann mir nicht vorstellen dass das für Strato nötig ist.
Im Bsp. auf der Seite des Anbieters steht folgendes:

Mit diesen Beispielangaben könnte ein manuelles Update der DynDNS Domain wie folgt aussehen:

https://ihredomain.de:DynDNS-Passwort@dyndns.strato.com/nic/update?hostname=subdomain.ihredomain.de&myip=192.XXX.X.X,2003:8106:1234:5678:abcd:ef01:2345:6789 

…habe die Lösung scheinbar gefunden.

nach Angebe von

define('USER_AGENT', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (K HTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');

und

curl_setopt($ch, CURLOPT_USERAGENT, USER_AGENT);

funktioniert es jetzt.