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中文網其他相關文章!