Visualizzazione risultati 1 fino 5 di 5

Discussione: Cloudfare installato in automatico da Altervista non funziona con una API

  1. #1
    Guest

    Predefinito Cloudfare installato in automatico da Altervista non funziona con una API

    Vorrei un aiuto, perché da quando per il mio sito personale è stato attivato (in automatico) da Altervista il servizio Cloudfare, ecco che una mia classe che uso per recuperare molti dati sui visitatori che le mie pagine web ricevono, non funziona più.

    Leggendo cosa sia questo Cloudfare, vedo che porta molti vantaggi per i siti web (una velocità molto maggiore nel caricamento delle pagine, grazie ad un ottimo uso della cache dei browser ecc.) e soprattutto impedisce ai bot e crawler di visitare un sito all'infinito o quasi per attaccarlo, e scoprire magari il nome dei campi di una tabella di un db, ecc. come è successo al mio sito.

    A parte che usando io PDO, penso di essere al sicuro....da questo punto di vista, ho visto in ogni caso, che il mio sito ha ricevuto infatti, l'altro ieri, almeno un centinaio di visite da un crawler (suppongo, qualcuno si diverte così...mah, se non hanno altro da fare...) del medesimo IP proveniente da un provider della Russia con Safari come browser e un OS di tipo Mac, nello stesso identico momento; ora minuti e secondi.....

    A parte che non vedo l'utilità di tutto ciò, manco fosse il sito di una banca o simili, in ogni caso il crawler magari usava la rete TOR ed allora l'IP e gli altri dati che ho sulla tabella del mio db sono sicuramente falsi! e non posso denunciare la cosa a nessuno.

    Va beh, in ogni caso Altervista ha attivato allora in automatico il servizio Cloudfare, per impedire il ripetersi di tutto ciò, ma la mia classe PHP che usavo per estrarre molte info sui miei visitatori, ha smesso di funzionare.

    Nella classe, uso per ottenere molti dati questa API http://ip-api.com/docs/, ma ora mi va in time out e non riesce più a connettersi a quest'ultima.
    In locale invece funziona perfettamente..... non essendoci ovviamente Cloudfare!.

    Cloudfare funge da proxy, ma con tutte le altre API che uso altrove, va benissimo, solo questa non va.

    Ho ricevuto l'email da Altervista che mi informava dell'attivazione di Cloudfare, ma neanche nello spam non ho ricevuto nulla, come indicato da Altervista, per fare il login sul sito di Cloudfare e vedere le impostazioni attivate!

    Ho provato un sacco di volte, ma non riesco a loggarmi lì!.

    Neanche su Google ho trovato info in merito.
    Un aiuto?

    Ciao e grazie.
    Ultima modifica di newbielinux : 13-03-2016 alle ore 23.07.10

  2. #2
    filsil non è connesso AlterVista Staff
    Data registrazione
    05-01-2010
    Messaggi
    2,024

    Predefinito

    Per accedere al pannello di controllo di Cloudflare devi recuperare la password utilizzando come email l'alias associata al tuo account Altervista. La mail dovrebbe arrivarti nella casella di posta associata al tuo account.
    Per quanto riguarda il tuo problema, cloudflare non influisce con le richieste server to server che vengono effettuate dal tuo sito. Se però vengono fatte richieste da bot verso il tuo spazio web, potrebbero essere filtrate.

  3. #3
    Guest

    Predefinito

    Ciao,
    Allora andando dal mio account su altervista in Risorse, e da qui in Gestisci Cloudfare, ecco che inserendo qui il mio alias ovvero newbielinux@altervista.org e poi il mio sito web, e cliccando sul link "Forgot your password?" mi appare quanto segue:

    "We have sent a CloudFlare Password Assistance e-mail containing instructions on how to reset your lost password. Look for the subject line 'Instructions for changing your CloudFlare password' from address no-reply@cloudflare.com."

    Ma NON mi arriva nessuna email con tali istruzioni......
    Né tramite client email (Thunderbird) né andando sulla casella di posta associata al mio alias tramite browser! Nella cartella dello spam NON trovo nulla!.

    Inoltre, tanto per essere chiari, ieri ho provato per 3 volte la stessa procedura, e anche ora, ma nel mio account associato al mio alias NON trovo nessuna email di Cloudfare.
    Premetto che ricevo SENZA nessun problema tutte le email associate al mio alias ovvero newbielinux@altervista.org.

    Ho provato io stesso, poco fa, ad inviarmi varie email da alcuni account che ho su alice.it, gmail.com ecc. e le ricevo benissimo appunto sul mio alias!!!

    E' Cloudfare che non mi invia un bel nulla!.

    Inoltre francamente non capisco perché anche se un bot/crawler visita le mie pagine web e Altervista attivi in automatico Cloudfare, quest'ultimo debba bloccare una API presente in ogni mia pagina web!.

    Ma se Cloudfare funge da proxy, e filtra di conseguenza tutte le richieste "continue, e malevoli" di pagine web di un sito, non dovrebbe essere in grado di bloccare solo queste richieste, senza inficiare invece i servizi offerti dal sito web stesso?

    Perché Cloudafare non comprende che il problema sta appunto nelle richieste ai suoi server e non invece nelle stesse pagine web del sito, che sono sotto attacco?
    Che senso ha che Cloudfare blocchi una API che un sito web usa per certi servizi, quando il problema sta invece nelle continue richieste da parte del medesimo IP?

    Mah........

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Come ti ha già scritto Filsil, nelle le richieste server to server CloudFlare non c'entra nulla: la richiesta parte dai server AlterVista e arriva direttamente a destinazione.
    Puoi riportare il codice problematico e l'indirizzo di una pagina di esempio in cui è possibile vederlo in esecuzione?

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Come ti ha già scritto Filsil, nelle le richieste server to server CloudFlare non c'entra nulla: la richiesta parte dai server AlterVista e arriva direttamente a destinazione.
    Puoi riportare il codice problematico e l'indirizzo di una pagina di esempio in cui è possibile vederlo in esecuzione?
    Ma se una semplice funzione come:
    Codice PHP:
    echo 'Il tuo IP è: ' . $_SERVER['REMOTE_ADDR'] . '<br />';
    restituisce un IP di Cloudfare perché appunto, tale servizio agisce come proxy, come si può sostenere quanto sopra?

    Mentre per ottenere l'IP di un utente DEVO fare così:
    Codice PHP:
    if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
    {
    echo
    'Ecco il tuo IP: ' . $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'] . '<br />';
    }
    Inoltre, come fa allora Cloudfare, senza agire da proxy, ad immagazzinare nella cache del browser dell'utente che visita per la prima volta un sito, dei contenuti che poi ripresenta, SENZA richiedere una nuova ricarica dei medesimi, quando lo stesso utente visita un'altra pagina dello stesso sito?

    Se mi spiegate questo ve ne sarei grato?

    Poi ecco una parte della classe che non funziona (causa appunto Cloudfare) poiché non riesce a connettersi alla API, http://ip-api.com/json/ che prima dell'intervento di Cloudfare funzionava benissimo.



    Codice PHP:
    class Visitors
    {
    public
    $server_time;
    public
    $server_date;
    public
    $user_ip;
    public
    $user_os;
    public
    $user_browser;
    public
    $userAgent;
    public
    $statusResponseAPI;
    public
    $timeZone;
    public
    $userCountry;
    public
    $userCountryCode;
    public
    $userCity;
    public
    $userStateOfRegion;
    public
    $latitude;
    public
    $longitude;
    public
    $zip;
    public
    $region;

    public
    $IP_address_used_for_query;
    public
    $ISP;
    public
    $ORG;
    public
    $AS;

    public
    $subdomain;
    public
    $API;

    public function
    __construct()
    {
    $this->init();
    }

    public function
    init()
    {
    $this->server_time = '';
    $this->server_date = '';
    $this->user_ip = '';
    $this->user_os = '';
    $this->user_browser = '';
    $this->userAgent = '';

    $this->statusResponseAPI = '';
    $this->timeZone = '';
    $this->userCountry = '';
    $this->userCountryCode = '';
    $this->userCity = '';
    $this->userStateOfRegion = '';
    $this->latitude = '';
    $this->longitude = '';
    $this->zip = '';
    $this->region = '';

    $this->IP_address_used_for_query = '';
    $this->ISP = '';
    $this->ORG = '';
    $this->AS = '';

    $this->subdomain = '';

    // see here for info about this API: http://ip-api.com/docs/api:json
    $this->API = 'http://ip-api.com/json/{IP}';
    }

    public function
    getVisitorInfo($httpUserAgent)
    {
    // set the properties:
    // retrieve these thru some PHP predefined functions
    $this->setUserIp();
    $this->setServerDate();
    $this->setServerTime();
    $this->setUserOs($httpUserAgent);
    $this->setUserBrowser($httpUserAgent);
    $this->setUserAgent($httpUserAgent);


    $API = str_replace('{IP}', $this->user_ip, $this->API);

    $response = $this->fetch($API);

    // decode the JSON into an associative array, setting the option to true
    $data = json_decode($response, true);

    # This will print out the contents of the array in a nice readable format.
    # echo '<pre>' . print_r($data, true) . '</pre>';

    // set these properties:
    // retrieve these thru the API instead
    $this->setStatus($data['status']);
    $this->setTimeZone($data['timezone']);
    $this->setUserCountry($data['country']);
    $this->setUserCountryCode($data['countryCode']);
    $this->setUserCity($data['city']);
    $this->setUserStateOfRegion($data['regionName']);

    $this->setLatitude($data['lat']);
    $this->setLongitude($data['lon']);
    $this->setZip($data['zip']);
    $this->setRegion($data['region']);

    $this->setIP_address_used_for_query($data['query']);
    $this->setISP($data['isp']);
    $this->setORG($data['org']);
    $this->setAS($data['as']);
    }

    public function
    fetch($API)
    {
    if (
    function_exists('curl_init') )
    {
    // use cURL to fetch data
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $API);

    // return the transfer instead of outputting it out directly.
    // if deactivated (with 0 instead of 1) you see the json from the API
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    // execute
    $response = curl_exec($ch);

    // close cURL resource, and free up system resources
    curl_close ($ch);
    }
    else if (
    ini_get('allow_url_fopen') )
    {
    // fall back to fopen()
    $response = file_get_contents($API, 'r');
    }

    return
    $response;
    }

    /**
    * @param $user_ip
    */
    public function setUserIp()
    {
    $this->user_ip = self::getRealIpAddr();
    }

    /**
    * @return
    */
    public function getUserIp()
    {
    return
    $this->user_ip;
    }

    /**
    * See above
    */
    public function getRealIpAddr()
    {

    if ( isset(
    $_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != '' )
    {
    return
    $_SERVER['REMOTE_ADDR'];
    }

    // Fall back to HTTP_CLIENT_IP
    else if ( isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'] != '' )
    {
    return
    $_SERVER['HTTP_CLIENT_IP'];
    }

    // Only way to get the real IP address of a visitor, if you use
    // the Cloudfare service.
    else if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
    {
    return
    $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }

    // Nothing? Return false
    return false;
    }

    etc...
    Il metodo, getRealIpAddr() , che deve recuperare l'IP dell'utente DEVE essere scritto come l'ho modificato qui sopra, se si vuole usare Cloudfare.

    In ogni caso ribadisco che PRIMA dell'attivazione di Cloudfare, la API andava perfettamente, ed in locale infatti va benissimo.

    Inoltre usando una API similare, ma meno esatta nel ridare le info per il Geocoding che necessito, come questa http://ipinfo.io/developers ecco che anche con Cloudfare attivo, tutto è ok.

    Ora ho provato a disattivare Cloudfare, per vedere se la API torna a funzionare.
    Se è cosi, allora il problema sta appunto in Cloudfare, altrimenti è un problema "improvviso" dei server DNS di altervista.

    Attendo qualche info.

    Ciao e grazie.

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •