2012-05-15 6 views
5

Nel mio Paese molti siti Web vengono censurati e bloccati e vengono invece reindirizzati a una determinata pagina. Non so come lo facciano esattamente. Ma è possibile determinare a livello di programmazione se un sito web è bloccato o non è bloccato senza caricare il tutto? Il motivo per cui voglio farlo è utilizzare un'API di ricerca web (forse Google) e creare un servizio Web che porti solo risultati non bloccati.Controllo del reindirizzamento del sito Web, a livello di programmazione

Se aiuta, il contenuto della pagina che viene caricata invece è come questo:

<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1256"><title>M3-5 
</title></head><body><iframe src="http://10.10.34.34?type=Invalid Site&policy=MainPolicy " style="width: 100%; height: 100%" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0"></iframe></body></html> 

Capisco che il server che esegue il servizio dovrebbe avere IP del mio paese.

Sarebbe meglio se ci fosse un modo per farlo in PHP o Python.

Apprezzo qualsiasi aiuto o idea.

+4

Se i siti bloccati restituiscono un 301, si potrebbe semplicemente effettuare una richiesta HEAD e verificare se si tratta di un messaggio di stato 301. Se lo è, puoi ispezionarlo ulteriormente per vedere se contiene il 'Sito non valido '. Ciò farebbe risparmiare il caricamento di tutte le pagine di sblocco. Alcuni siti sbloccati avranno anche un 301. – dm03514

+0

Grazie. OK, ho controllato alcuni siti bloccati. La maggior parte di loro ha restituito un 301. Uno di loro ha restituito un 302. Ma facebook.com per esempio non restituisce nulla (sì, Facebook è bloccato qui!) E flickr.com restituisce un 200. Hai qualche idea del perché? – Auxiliary

risposta

3

Questo dovrebbe essere interamente possibile sia in PHP che in Python. In sostanza, si desidera inviare una richiesta http al sito in questione e quindi analizzare la risposta che si ottiene. Dai uno sguardo allo PHP's cURL o allo Python's Pycurl per ordinare come emettere le richieste http e come elaborare le risposte.

Una volta ottenuta la risposta, si tratta solo di abbinare il modello a un modello affidabile per i siti bloccati. La mia prima ipotesi è che si potrebbe cercare <body><iframe src="http://10.10.34.34?type=Invalid Site all'interno della risposta, tuttavia si dovrebbe controllare più pagine bloccate per vedere se tutti includono quella stringa. Potrebbe essere necessario estendere il controllo a un'espressione regolare specifica se, ad esempio, l'IP o il parametro querystring di tipo varia da un sito bloccato a un altro.