2010-05-31 18 views
7

Ho bisogno di emulare una vera richiesta http via cfhttp. Stavo ricevendo feed RSS con ColdFusion, ma stasera hanno iniziato a bloccare la mia richiesta e inviare una pagina indice in risposta invece di rss fead.Come emulare una vera richiesta http via cfhttp?

Ho aggiunto useragent per cfhttp, ma non aiuta.

Opera, Firefox e Chrome aprono i feed correttamente dallo stesso computer.

risposta

6

Sì, grazie. Ho sniffato tutte le intestazioni HTTP che il browser invia al sito e poi le ha emulate nella richiesta cfhttp. La soluzione è:

<cfhttp url="http://example.com/feed" 
useragent="Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.7 (KHTML, like Gecko) Chrome/5.0.391.0 Safari/533.7" 
result="httpresult" 
redirect="false" 
> 
<cfhttpparam type="header" name="HTTP_REFERER" value="http://example.com/feed/" > 
<cfhttpparam type="header" name="Accept-Encoding" value="gzip,deflate,sdch" > 
<cfhttpparam type="header" name="Proxy-Connection" value="keep-alive" > 
<cfhttpparam type="header" name="Accept" value="application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"> 
<cfhttpparam type="header" name="Accept-Language" value="en-US,en;q=0.8"> 
<cfhttpparam type="header" name="Accept-Charset" value="ISO-8859-1,utf-8;q=0.7,*;q=0.3"> 
<cfhttpparam type="cookie" name="some-cookie" value="1"> 

4

Suppongo che il sito con il feed RSS stia ancora annunciando lo User Agent e quello CFHTTP non è impostato su uno che sta utilizzando il sito. Utilizzare uno sniffer proxy HTTP (ad es. Charles HTTP Proxy) per registrare la richiesta HTTP di un browser che visualizza correttamente il feed RSS, quindi provare a utilizzare CFHTTP con la stessa stringa User Agent di una richiesta precedentemente riuscita.

Se ancora non funziona, utilizzare gli attributi 'proxyport' e 'proxyserver' di CFHTTP per eseguire la richiesta ColdFusion tramite lo sniffer HTTP e verificare che l'Agente utente sia impostato correttamente e confrontarlo con un funzionamento richiesta.

+0

anche la pena di verificare altre intestazioni, non solo user-agent. (Forse il server di rimozione sta cercando un cookie o accetta le intestazioni.) –

+0

Si potrebbe anche voler provare a utilizzare il proxy su un altro server, nel caso in cui stiano bloccando l'IP. –