Rückwärtssuche über Klicktel API

Hallo.

Irgendwie war ich die regelmäßig notwendigen Änderungen hinsichtlich der diversen Rückwärtssuchen der einschlägigen Anbieter leid und habe mein Heil nun in der API von Klicktel gesucht. Ich hoffe eine API wird weniger häufig geändert als das Antwortformat der Webseiten an sich.

Hier daher das ToDo für Klicktel:

  1. Auf Open API: telegate MEDIA registrieren.

  2. Wenn man registriert ist den Account bestätigen und einloggen.

  3. Unter „Statistiken“ auf konfigurieren klicken.

  4. Unter URL, Name und Beschreibung etwas nach Eurer Wahl eintragen.

  5. Nutzungsbedingungen und Datenschutzerklärung akzeptieren.

  6. Euren Key eintragen.

  7. Auf „Code erzeugen“ klicken.

  8. Danach haben sich die Beispiel-Links unter Punkt 4 entsprechend Eurer Angaben geändert. Interessant für uns ist der Link unter der Überschrift "Rufnummer-Suche den wir kopieren und vom Grundsatz her in folgendes Beispiel-Skript übernehmen. Key und Rufnummer sind in dem Link natürlich gegen die entsprechenden Variablen auszutauschen.


<? 

// Den Key bekommt man wenn man sich für die Klicktel-API registrieren lässt 
 $Key       = 'blablasabbelbluppbluppsalbaderblabla'; 
// Die Rufnummer nach deren Besitzer gesucht wird 
 $Rufnummer = "030184000"; 

// Ab hier nichts mehr ändern. 
 $Name = "Anruf von unbekanntem Anrufer.";
 $Data = file_get_contents("http://openapi.klicktel.de/searchapi/invers?key=$Key&number=$Rufnummer"); 
 if($Data) $Json = json_decode($Data); 
 if (isset($Json->response->results[0]->entries[0]->displayname)) {
    $Name = "Anruf von ".($Json->response->results[0]->entries[0]->displayname);
 }
  
 echo $Name."
"; 

?> 

Die API gibt übrigens noch mehr Angaben her als nur den Namen des Anrufers. Schaut einfach mal in das Array rein was Ihr sonst noch so brauchen könnt.

Das war es schon. Überraschend einfach und kurz und wie ich hoffe langlebiger als das parsen einer Webseite…

Momentan gibt es wohl Probleme bei klicktel. Ich erhalte auf Abfragen seit gestern die Antwort:

"{"response":{"type":"error","error":{"message":"Can't connect to MySQL server on 'eva-portal.mysql' (111)"}}}"

Kann das jemand bestätigen?

Gruß

Burkhard

Also bei mir funktionierts noch.

Jup - bei mir auch.

Bei mir geht’s auch wieder. War wohl nur eine Störung.

Gruß

Burkhard

Von:	Beer, Katja <Katja.Beer@11880.com>
Gesendet:	Donnerstag, 15. Februar 2018 08:29
An:	Beer, Katja
Betreff:	Klicktel Open API

Sehr geehrter Open API User,

wir müssen Ihnen leider mitteilen, dass unser Open API Dienst ab dem 31. März 2018 nicht mehr zur 
Verfügung stehen wird.
In den letzten Jahren haben sich die rechtlichen Bestimmungen zur Datenvermarktung in der 
Europäischen Union weiter verschärft und werden sich weiter verschärfen, dass wir das Open API 
Produkt zukünftig nicht mehr anbieten werden.  
Aus diesen Gründen kann ich Ihnen auch kein alternatives Produkt im Bereich der Online 
Datenbereitstellung anbieten.

Wir möchten Ihnen für Ihr Vertrauen in unsere Datenqualität in den letzten Jahren danken.
Mit freundlichen Grüßen
Katja Beer
 
Mit freundlichen Grüßen 
 
i.V. Katja Beer 
Senior Product Manager B2C Media
11880 Internet Services AG 
Kruppstraße 74 
45145 Essen 
 
T +49 201 8099127 
M  
Katja.Beer@11880.com 
 
11880.com - Da werden Sie geholfen.
11880 Internet Services AG 
Hauptsitz Essen 
Handelsregister HRB 20157 
Amtsgericht Essen 
Vorstand Christian Maar 
Aufsichtsratsvorsitzender Jörn Hausmann

Diese E-Mail hat mich heute erreicht. Ich hab die API über ein Skript bei jedem Telefonanruf aufgerufen und das hat bisher sehr gut funktioniert.

Was wirklich hinter der Einstellung steckt weiß ich nicht. Unternehmen begründen ja häufig irgendwelche Rationalisierungsmaßnahmen oder Einsparungen mit gesetzlichen Vorgaben. In letzter Zeit wurde ich von diesbezüglichen unverständlichen und verbraucherfeindlichen Gerichtsurteilen überrascht (z.B.: DWD muß App kostenpflichtig machen, ARD darf ein Verbrauchermagazin nicht mehr herausgeben).

Viele Grüsse
Harald

Der Grund wird die DSGV sein welche ab dem 25.5. anzuwenden ist.
Datenschutz-Grundverordnung – Wikipedia

Betrifft bestimmt noch mehr Dienste.
So ist ja die Whois Abfrage aktuell auch nicht konform mit der Verordnung.
Michael

Ohne jetzt die 88 Seiten der EU-Verordnung „gelesen“ zu haben, kann es sich ja im vorliegenden Fall nur um die sog. Inverssuche oder auch Rückwärtssuche zu handeln, und die ist laut Wikipedia nicht generell verboten. Eben nur da, wo der Einzelne widersprochen hat.

Wahrscheinlich hat da irgend ein Hausjurist kalte Füsse nach dem Motto „lieber vorauseilend einstellen als einmal in einen Prozess verwickelt zu werden“ sein Veto eingelegt.

Irgendwie muß ich ja als ebenfalls „schützungswürdige Person“ diese idiotischen Anrufe von irgendwelchen „Marktforschungsunternehmen“ abwehren können. Mein eigener Schutz ist mir eigentlich wichtiger als der Schutz der „Personenbezogenen Daten“ dieser Belästiger.

Viele Grüsse
Harald

Hallo,

ich nutze die API auch und habe das gleiche E-Mail bekommen. Wie auch immer, es wird ja wohl abgestellt. Gibt’s denn dazu alternativen, die man ebenfalls relativ leicht im IPS integrieren kann? Wenn jemand Tipps hat schon mal danke im Voraus.

Grüße Helmut

Ich nutze nun „DasÖrtliche“ mit folgender Funktion:


function QueryDasOertlicheDe($Rufnummer) {
   $record = false;
   $url = "http://www.dasoertliche.de/Controller?form_name=search_inv&ph=$Rufnummer";
   # Create a DOM parser object
   $dom = new DOMDocument();
   # Parse the HTML from dasoertliche
   # The @ before the method call suppresses any warnings that
   # loadHTMLFile might throw because of invalid HTML or URL.
   @$dom->loadHTMLFile($url);
   if ($dom->documentURI == null)
   {
      IPSLogger_Wrn('Datei: '.__file__.' Zeile: '.__line__, 'Timeout bei Abruf der Webseite '.$url);
      return false;
   }
   $finder = new DomXPath($dom);
   $classname="hit clearfix ";
   $nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), '$classname')]");
   if ($nodes->length == 0) return false;
   $cNode = $nodes->item(0); //div left
   if ($cNode->nodeName != 'div') return false;
   if (!$cNode->hasChildNodes()) return false;
   $ahref = $cNode->childNodes->item(1);
   if (!$ahref->hasChildNodes()) return false;
   foreach ($ahref->childNodes as $div)
   {
      if ($div->nodeName == "a" ) break;
   }
   $record = array(
   	'Name'              => utf8_encode(trim(utf8_decode($div->nodeValue), " 	
\r\0\xa0"))
    );
    return $record;
}

Die Funktion habe ich mir zusammenkopiert und angepasst. Leider habe ich nicht viel Ahnung von Dom und Zeichensätzen. Beim Anblick der Funktion sträuben sich mir zwar die Haare, aber sie funktioniert. :slight_smile:

Vielleicht kann sie einer gebrauchen oder auch verbessern …

Gruß

Burkhard

Schau dir mal PHP Formatter - PHP Beautifier - PHP Pretty Printer - Home an.
Dann sieht es auch besser aus.

Gruß Swen

function QueryDasOertlicheDe($Rufnummer) {
   $record = false;
   $url = "http://www.dasoertliche.de/Controller?form_name=search_inv&ph=$Rufnummer";
   # Create a DOM parser object
   $dom = new DOMDocument();
   # Parse the HTML from dasoertliche
   # The @ before the method call suppresses any warnings that
   # loadHTMLFile might throw because of invalid HTML or URL.
   @$dom->loadHTMLFile($url);
   if ($dom->documentURI == null)
   {
      IPSLogger_Wrn('Datei: '.__file__.' Zeile: '.__line__, 'Timeout bei Abruf der Webseite '.$url);
      return false;
   }
   $finder = new DomXPath($dom);
   $classname="hit clearfix ";
   $nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), '$classname')]");
   if ($nodes->length == 0) return false;
   $cNode = $nodes->item(0); //div left
   if ($cNode->nodeName != 'div') return false;
   if (!$cNode->hasChildNodes()) return false;
   $ahref = $cNode->childNodes->item(1);
   if (!$ahref->hasChildNodes()) return false;
   foreach ($ahref->childNodes as $div)
   {
      if ($div->nodeName == "a" ) break;
   }
   $record = array(
       'Name'              => utf8_encode(trim(utf8_decode($div->nodeValue), " 	
\r\0\xa0"))
    );
    return $record;
}