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']; }