首頁  >  文章  >  後端開發  >  為什麼我的網站抓取工具在遠端伺服器上使用“file_get_contents()”返回 403 禁止錯誤?

為什麼我的網站抓取工具在遠端伺服器上使用“file_get_contents()”返回 403 禁止錯誤?

DDD
DDD原創
2024-10-26 18:04:03327瀏覽

Why is My Website Scraper Returning a 403 Forbidden Error with `file_get_contents()` on Remote Servers?

file_get_contents() 出現403 禁止錯誤

在嘗試開發網站抓取工具時,開發人員在遠端伺服器上遇到403 禁止錯誤伺服器,同時使用file_get_contents() 在本機上沒有任何問題。錯誤訊息表示HTTP請求失敗。

經過檢查,php.ini設定檔中的allow_url_fopen設定已被驗證為啟用,導致尋找進一步的解決方案。為了深入了解錯誤原因,建議使用 PHP 的偵錯機制。

具體來說, $http_response_header 變數可以在每次 file_get_contents() 呼叫後提供回應 HTTP 標頭。此外,ignore_errors 上下文選項可以傳回實際回應,可能解釋 403 錯誤。

實際分析顯示該錯誤可能源自於缺少所需的 HTTP 標頭,例如 Referer 或 User-Agent。為了解決這個問題,可以使用stream_context_create()建立自訂上下文來設定使用者代理,模擬真實的瀏覽器請求。

$context = stream_context_create(
    array(
        "http" => array(
            "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
        )
    )
);

echo file_get_contents("www.google.com", false, $context);

此程式碼範例示範如何設定使用者代理程式並將要求傳送至Google ,展示如何操作標頭以進行有效的網頁抓取。

以上是為什麼我的網站抓取工具在遠端伺服器上使用“file_get_contents()”返回 403 禁止錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn