cfhttpを介して実際のhttpリクエストをエミュレートする必要があります。私はColdFusionでrssフィードを取得していましたが、今夜、彼らは私のリクエストをブロックし、rssfeadの代わりにインデックスページを送信し始めました。
cfhttpにuseragentを追加しましたが、役に立ちません。
Opera、Firefox、Chromeは同じコンピューターから正しくフィードを開きます。
cfhttpを介して実際のhttpリクエストをエミュレートする必要があります。私はColdFusionでrssフィードを取得していましたが、今夜、彼らは私のリクエストをブロックし、rssfeadの代わりにインデックスページを送信し始めました。
cfhttpにuseragentを追加しましたが、役に立ちません。
Opera、Firefox、Chromeは同じコンピューターから正しくフィードを開きます。
うん、ありがとう。ブラウザがサイトに送信するすべての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">
RSSフィードのあるサイトはまだユーザーエージェントをスニッフィングしていて、CFHTTPのものはサイトが使用しているものに設定されていないと思います。HTTPプロキシスニファー(つまり、Charles HTTPプロキシ)を使用して、RSSフィードを正しく表示しているブラウザーのHTTP要求を記録してから、以前に成功した要求と同じユーザーエージェント文字列でCFHTTPを使用してみてください。
それでも機能しない場合は、CFHTTPの「proxyport」および「proxyserver」属性を使用して、HTTPスニファを介してColdFusionリクエストを実行し、ユーザーエージェントが正しく設定されていることを確認して、機能しているリクエストと比較します。