2012-05-01 88 views
0

我使用libcurl來獲取網頁的源代碼,一切順利,直到獲得「www.macys.com」的源代碼。libcurl當url重定向到自己時如何停止重定向

沒有CURLOPT_FOLLOWLOCATION選項,我的程序就沒有任何功能,但是當使用這個選項時,重定向位置總是'/',除非設置了CURLOPT_MAXREDIRS選項,否則curl_easy_perform函數將不會返回。

我的問題是我怎樣才能得到這個網頁的源代碼與libcurl? 非常感謝。

我的libcurl版本:7.23.1,操作系統:CentOS的6.0(最終)64

+0

可能會有助於讓您的當前源代碼看到你錯在哪裏。否則,你基本上是要求某人爲你編碼解決方案! – jmc

回答

0

如果服務器保持重定向客戶端,並且要求客戶遵循重定向那麼你有什麼期待它做什麼?

唯一的選擇是在一定量的步驟後停止,這是CURLOPT_MAXREDIRS的用途。

這種情況發生的原因主要是因爲該網站正在檢查您的curl使用不提供的客戶端特定詳細信息(用戶代理,cookie,引用程序或類似信息)。您經常可以使您的curl請求更類似於瀏覽器,然後避免這種效果。

+0

是的,感謝您的建議,我的問題是在使瀏覽器的請求與瀏覽器相同後解決的。 – juffun

0

禁用CURLOPT_FOLLOWLOCATION並手動跟蹤重定向以確保不會發生循環,或者將CURLOPT_MAXREDIRS設置爲只能通過自重定向到達的瘋狂數字(10)。

+0

感謝您的建議,我的問題是在將瀏覽器的瀏覽請求與瀏覽器的瀏覽器相同後解決的,似乎這個網站更嚴格。 – juffun