PHP 的內建函式 file_get_contents() 除了可以讀取本地檔案外, 也可以擷取遠端網頁, 但有些時候會還到 403 Forbidden 情況, 原因是網站伺服器會讀取 user-agent, 判斷是否瀏覽器正常訪問。
一般上網站會用 user-agent 判斷訪客的瀏覽器或 OS, 例如手機訪客所看到的網頁跟 desktop 有所不同。而封鎖像 PHP 的 file_get_contents() 之類的非正常瀏覽 user-agent, 可以減少伺服器的負荷及外部的 DDOS 攻擊。
要解決這個問題, 可以在 PHP 執行時定義 user-agent, 讓 PHP 模擬成正常瀏覽器, PHP 預設是使用空字串作為 user-agent, 例如改寫為模擬 Firefox 寫法是這樣:
|
1 2 3 4 |
<?php ini_set('user_agent','Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0'); $contents = file_get_contents("http://www.google.com.hk/"); ?> |