ursus contionabundo: API-Server empfindlich und nicht sehr stabil...

Beitrag lesen

Da der Server "sehr empfindlich" ist hier mal als Ausriss ein Teil des vorläufigen Ergebnisses meiner Bemühungen um STABIL andere ( und dann verwertbare ) Antworten als einen "403er" zu erhalten:

<?php error_reporting( E_ERROR ); if ( isset( $_REQUEST['adresse'] ) && $_REQUEST['adresse'] ) { $ort = urlencode( $_REQUEST['adresse'] ); $agents[] = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:64.0) Gecko/20100101 Firefox/64.0'; $agents[] = 'Mozilla/5.0 (Windows i686; rv:64.0) Gecko/20100101 Firefox/64.0'; $agents[] = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'; $fakeAgent = $agents[rand( 0, count( $agents )-1 )]; $fakeIp = rand( 1, 250 ) . '.' . rand( 1, 254 ) . '.' . rand( 1, 254 ) . '.'.rand( 1, 254 ); $ch = curl_init( "https://nominatim.openstreetmap.org/?format=json&addressdetails=1&q=$ort&limit=10" ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_HEADER, 0 ); curl_setopt( $ch, CURLOPT_FORBID_REUSE, true) ; curl_setopt( $ch, CURLOPT_USERAGENT, $fakeAgent ); if ( defined( CURLOPT_ENCODING ) ) { curl_setopt( $ch, CURLOPT_ENCODING, '' ); # ab PHP 7.1 endet alle unterstützten Kodierungen wie identity, deflate und gzip. } if ( isset ( $_SERVER['HTTP_REFERER'] ) ) { curl_setopt( $ch, CURLOPT_REFERER, $_SERVER['HTTP_REFERER'] ); } $header[] = "Accept: application/json,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; $header[] = "Cache-Control: max-age=0"; $header[] = "Connection: keep-alive"; $header[] = "Keep-Alive: 300"; $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; $header[] = "Accept-Language: en-us,en;q=0.5"; $header[] = "Pragma: "; // browsers keep this blank. $header[] = "X-Forwarded-For: $fakeIp"; // Play as proxy curl_setopt( $curl, CURLOPT_HTTPHEADER, $header ); $trys = 0; $daten = ''; $responseCode = 0; while ( 200 != $responseCode && $trys < 5 ) { $daten = curl_exec( $ch ); if ( curl_errno( $ch ) ) { echo "<pre>", curl_​error( $ch ); exit; } $responseCode = curl_getinfo( $ch, CURLINFO_RESPONSE_CODE ); if ( 200 != $responseCode ) { time_nanosleep ( 1, 500000000 ); # 1,5 Sekunden } } if ( 200 != $responseCode ) { echo "<p>Sorry! Responce Code ist auch nach 5 Versuchen $responseCode - Versuchen Sie es in ein paar Sekunden noch einmal.</p>"; exit; } curl_close( $ch ); #echo "<pre>"; print_r( $daten ); exit; #*/ if ( $daten ) { $daten = json_decode( $daten , true ); foreach ( $daten as $item ) { if ( isset( $item['address']['city'] ) ) { $item['address']['county'] = $item['address']['city']; } if ( isset( $item['address']['city_district'] ) ) { $item['address']['suburb'] = $item['address']['city_district']; }