簡體   English   中英

問題與file_get_contents()

[英]Issue with file_get_contents()

我正在用PHP編寫代碼,該代碼從20多個網站中以特定格式獲取內容。

除一個網站外,所有網站均正常運行。 現在,這里是問題。
我正在使用file_get_contents()從網站獲取圖像並將其保存在我的服務器上。 該圖像存在於遠程服務器上,可通過瀏覽器訪問,但通過代碼進行操作時得到404響應。

我無法理解其背后的問題,因為此方法可完美地適用於其他網站。

與發送的標頭有關嗎? 任何幫助將不勝感激。

答案可能是:是的...

我想他們正在檢查用戶代理。

這些都發送到您的標頭中。 您可以偽造您的用戶代理。 但是不要使用file_get_contents() ,因為那不允許偽造用戶代理。 看着卷發

編輯1

Barmar的鏈接顯示了可以將File_get_contents file_get_contents()與其他用戶代理同時使用的可能性。 值得一看...

編輯2

但這也可能與檢查引薦來源網址有關 。如果是這種情況,您確實需要使用curl來設置引薦來源

編輯3

現在已經看到了URL,並查看了出現的錯誤404 (不是50x ),建議您檢查URL是否已轉義並正確解析。 我看到URL包含空格,域名后面有兩個斜杠。 檢查是否將空格轉義到%20中,並且是否不應將雙斜杠剝離為僅一個斜杠。

所以

http://celebslam.celebuzz.com//bfm_gallery/2014/03/Lindsay Lohan 2 Broke Girls/gallery_enlarged/gallery_enlarged-lindsay-lohan-2-broke-girls-01.jpg

應該成為

http://celebslam.celebuzz.com/bfm_gallery/2014/03/Lindsay%20Lohan%202%20Broke%20Girls/gallery_enlarged/gallery_enlarged-lindsay-lohan-2-broke-girls-01.jpg

注意,服務器是CaSe-SeNsItIvE!

是的,首先-檢查該站點是否檢查了圖像訪問的引薦來源。 例如,嘗試直接在瀏覽器中獲取圖像

它還可以檢查用戶代理字段和其他內容

可能會有助於通過curl獲得文件(容易找到的代碼示例,否則我將為您提供簡單的類)

PS>只是很有趣。 您可以舉一些圖片網址示例嘗試嗎?

可能是推薦人或用戶代理。 這包括:

function file_get_contents_custom($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION , 1);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux; i686; en-US; rv:1.6) Gecko Debian/1.6-7'); 
    $data = curl_exec($ch); 
    curl_close($ch);
    return $data;
}

更新:

您鏈接的圖像對我來說使用file_get_contents可以正常工作。 服務器可能具有某種DDOS保護。 您平均每秒發出多少個請求?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM