Salve, sul mio sito effettuo operazioni di connessione server-to-server per la richiesta di determinate pagine esterne il cui contenuto viene quindi elaborato da script interni.
In particolare utilizzo la funzione php file() che prende come parametro l'url cui effettuare la richiesta e che restituisce il relativo contenuto html come array di stringhe, il cui indice corrisponde a ciascuna riga del sorgente della pagina.
Molto simile la funzione file_get_contents() la quale restituisce invece l'intera pagina in un'unica stringa.
Fino a 3 giorni fa tutto funzionava tranquillamente, e per alcuni mesi nessun problema. Poi improvvisamente la connessione mi viene negata e di conseguenza non posso fare il parsing delle pagine html.
Dopo aver controllato che non vi fossero problemi sul server di destinazione, ho provato ad effettuare la connessione sia da locale (server apache del pacchetto XAMPP), che da un altro sito personale altervista, ed in entrambi i casi funzionava regolarmente.
Il forte sospetto è che abbiano bloccato la connessione dal mio dominio probabilmente per un eccesso di richieste; a questo punto ho provato ad utilizzare un proxy per la connessione, ma nessun risultato. Posto il codice:
Codice:
$url="http://weather.uwyo.edu/cgi-bin/sounding?region=europe&TYPE=TEXT%3ALIST&YEAR=2016&MONTH=06&FROM=2000&TO=2000&STNM=16320";
$aContext = array(
'http' => array(
'proxy' => 'tcp://221.176.14.72:80',
'request_fulluri' => true
),
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents($url, 0, $cxContext);
echo $sFile;
Ho provato anche con la funzione cURL:
Codice:
// crea una nuova risorsa cURL
$ch=curl_init();
$proxy="221.176.14.72:80";
// imposta l'URL e altre opzioni appropriate
curl_setopt($ch, CURLOPT_URL, "http://weather.uwyo.edu/cgi-bin/sounding?region=europe&TYPE=TEXT%3ALIST&YEAR=2016&MONTH=06&FROM=2000&TO=2000&STNM=16320");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
// recupera l'URL e lo passa al browser
$content = curl_exec($ch);
// chiude la risorsa cURL e libera la memoria
curl_close($ch);
echo $content;
Anche in questo caso però nessun risultato, anche impostando il proxy.
Qualche suggerimento? Come mai anche impostando il proxy non effetto la connessione?
Come ultima possibilità ci sarebbe quella di effettuare la richiesta dal sito di "appoggio", quindi una connessione a questo dal sito principale, ed in effetti funziona regolarmente. Il problema però potrebbe ripresentarsi se anche qui superassi il limite di connessioni consentite.
A tal proposito, e concludendo, chiedo: impostando dall'inizio una connessione tramite proxy, o anche da una lista di proxy che si alternano in maniera random, ho una certa garanzia che non venga nuovamente bloccato l'indirizzo ip del mio dominio?
Grazie a chi risponderà.
PS. Visto il problema proxy, potrebbe essere un blocco delle connessioni causato da Altervista per il server in oggetto?