Versionen dieses Beitrags

API-Server empfindlich und nicht sehr stabil...

ursus contionabundo
  • API empfindlich und nicht sehr stabil...
  • API-Server empfindlich und nicht sehr stabil...
  • 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
  • <?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']; }
  • ~~~