2010-05-31 28 views
7

J'ai besoin d'émuler une vraie requête http via cfhttp. Je recevais des flux rss avec ColdFusion, mais ce soir, ils ont commencé à bloquer ma requête et à envoyer une page d'index en réponse à la place de rss fead.Comment émuler une vraie requête http via cfhttp?

J'ai ajouté useragent pour cfhttp, mais cela n'aide pas. Opera, Firefox et Chrome ouvrent correctement le flux à partir du même ordinateur.

Répondre

6

Oui, merci. J'ai reniflé tous les en-têtes HTTP que le navigateur envoie au site, puis les émule dans la requête cfhttp. La solution est:

<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

Je suppose que le site avec le flux RSS renifle encore l'agent utilisateur, et le CFHTTP n'est pas défini sur celui que le site utilise. Utilisez un HTTP Proxy Sniffer (Charles HTTP Proxy) pour enregistrer la requête HTTP d'un navigateur qui affiche correctement le flux RSS, puis essayez d'utiliser CFHTTP avec la même chaîne d'agent utilisateur qu'une demande précédente. Si cela ne fonctionne toujours pas, utilisez les attributs 'proxyport' et 'proxyserver' de CFHTTP pour exécuter la requête ColdFusion via votre sniffer HTTP et vérifiez que l'agent utilisateur est défini correctement et comparez demande.

+0

convient également de vérifier d'autres en-têtes, pas seulement-agent utilisateur. (Peut-être que le serveur de suppression recherche un cookie ou des entêtes accept- *.) –

+0

Vous pouvez également essayer d'utiliser le proxy sur un autre serveur, au cas où il bloquerait par IP. –