1

次の方法で cfhttp (Lucee Server) を使用して、URL からページのコンテンツをスクレイピングしています。

<cfhttp url="#libs.originalAdPage#" method="GET" />

次に、このコンテンツをページの div に配置します。

このコードは長い間機能しています。

コンテンツのためにスクレイピングされた URL について報告する必要があり、その情報は私の管理下にない別の Web サイト フォームに配置されています。URL を短縮された bitly URL に変換することにしました。ページにビットリンクを作成し、その URL を返して既存の URL を置き換えるプロセスを組み込みました。

リンク先の短縮 URL を含むページを使用すると、ページがスクレイピングされ、div に正しく表示されます。

<cfhttp url="http://bit.ly/1NPhPgc" method="GET" />

しかし、少し URL に短縮された Indeed.com ページに対して同じ cfhttp 呼び出しを行うと、接続失敗エラーが発生します。

<cfhttp url="http://bit.ly/1RQvlim" method="GET" />[![cfdump of connection failure][1]][1]

この URL をブラウザで直接開くと、ページは正しく表示されます。

どんなアイデアでも大歓迎です。

ありがとう、

マイケル

4

1 に答える 1

2

テストする Lucee サーバーへのアクセス権はありませんが、ColdFusion サーバー上の cfhttp は、これらのビット URL の両方で問題なく動作します。cfhttp はリダイレクトに従い、FileContent には予想どおり Indeed.com ページが含まれています。

リダイレクトを手動でデバッグして追跡できるように、cfhttp がリダイレクトを自動的に追跡しないようにすると、Bitly Indeed URL がどうなるかを確認しましたか? すなわち

<cftry>
    <cfhttp url="http://bit.ly/1RQvlim" method="GET" redirect="no" />
    <cfdump var="#cfhttp.responseHeader#" />
    <cfhttp url="#cfhttp.responseHeader.Location#" method="GET" />
    <cfdump var="#cfhttp#" label="cfhttp2" />
<cfcatch>
    <cfdump var="#cfcatch#" label="cfcatch" />
</cfcatch>
</cftry>

Indeed.com は、クローラーとユーザー エージェントに注意を払っています。その証拠として、 robots.txtを参照してください。

Lucee の cfhttp 実装または IP アドレスに固有のものがある場合 (たとえば、すべてのスクレイピングのためにブラックリストに登録されている場合) にテストするために、別のサーバーにアクセスできますか?

cfhttpを介して実際の http 要求をエミュレートする方法に従って、cfhttp ユーザーエージェントやその他のヘッダーを微調整してみましたか?

于 2015-10-19T23:57:25.723 に答える