如何通过cfhttp模拟真实的http请求?

时间:2010-05-31 08:27:26

标签: coldfusion httpwebrequest httprequest cfhttp

我需要通过cfhttp模拟真实的http请求。 我正在使用ColdFusion获取RSS,但是今晚他们开始阻止我的请求并发送索引页面而不是rss fead。

我为cfhttp添加了useragent,但它没有帮助。

Opera,Firefox和Chrome可以在同一台计算机上正确打开Feed。

2 个答案:

答案 0 :(得分:6)

是的,谢谢。我嗅探了浏览器发送到站点的所有HTTP头,然后在cfhttp请求中模拟它们。解决方案是:

<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">

答案 1 :(得分:4)

我猜想带有RSS源的网站仍在嗅探用户代理,而CFHTTP没有设置为该网站正在使用的网站。使用HTTP代理嗅探器(即Charles HTTP代理)记录正确显示RSS源的浏览器的HTTP请求,然后尝试使用与先前成功请求相同的用户代理字符串的CFHTTP。

如果仍然无效,请使用CFHTTP的'proxyport'和'proxyserver'属性通过HTTP嗅探器运行ColdFusion请求,并检查以确保正确设置用户代理并与工作请求进行比较