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/"); ?> |