2012-05-01 16 views
0

libcurlを使用してWebページのソースコードを取得すると、すべて "www.macys.com"のソースコードが取得されます。libcurl URLが自分自身にリダイレクトされたときにリダイレクトを止める方法

私のプログラムはCURLOPT_FOLLOWLOCATIONオプションなしで何も得られませんが、このオプションを指定すると、リダイレクト先は常に '/'になり、CURLOPT_MAXREDIRSオプションを設定しない限りcurl_easy_perform関数は返りません。

私の質問は、どのようにlibcurlでこのWebページのソースコードを入手できますか? ありがとうございました。

マイlibcurlのバージョン:7.23.1、OS:CentOSの6.0(最終)のx64

+0

現在のソースコードを参考にして、どこが間違っているかを確認するのに役立つでしょうか。それ以外の場合は、基本的に誰かにあなたにソリューションをコーディングするよう依頼しています! – jmc

答えて

0

サーバはあなたがそれを行うことを期待しているクライアントをリダイレクトする、とあなたはリダイレクトを追跡するために、クライアントを尋ね続けた場合は?

唯一のオプションは、CURLOPT_MAXREDIRSが使用されている一定量のステップの後に停止することです。

このような事態が発生するのは、カールが使用しないクライアント固有の詳細(ユーザーエージェント、Cookie、リファラーなど)をサイトがチェックしているためです。あなたのカールのリクエストをブラウザーのリクエストに近づけることができますし、この効果を避けることができます。

+0

はい、あなたの助言のおかげで、私の問題は、ブラウザのように私のカールの要求をした後に解決されます。 – juffun

0

CURLOPT_FOLLOWLOCATIONを無効にして、リダイレクトを手動で追跡してループが起こらないようにするか、CURLOPT_MAXREDIRSをセルフリダイレクトを介してのみ到達できる狂気の数(10)に設定します。

+0

あなたの助言をありがとう、私の問題はブラウザのように私のカールの要求をした後に解決され、それはこのウェブサイトがより厳しいと思われる。 – juffun

関連する問題