7

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

我为 cfhttp 添加了用户代理,但没有帮助。

Opera、Firefox 和 Chrome 从同一台计算机正确打开提要。

4

2 回答 2

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

于 2010-06-01T09:04:00.570 回答
4

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

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

于 2010-05-31T12:26:05.193 回答