解析file_get_contents模仿瀏覽器頭(user_agent)獲取數(shù)據(jù)
什么是user agent
User Agent中文名為用戶代理,簡稱 UA,它是一個特殊字符串頭,使得服務(wù)器能夠識別客戶使用的操作系統(tǒng)及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。
網(wǎng)站可以通過判斷不同UA來呈現(xiàn)不同的網(wǎng)站,例如手機(jī)訪問和PC訪問顯示不同的頁面。
PHP在用file_get_contents函數(shù)采集網(wǎng)站時,有時會明明用瀏覽器可以看,但就是采不到任何內(nèi)容。
這很有可能是服務(wù)器上做了設(shè)置,根據(jù) User_agent判斷是否為正常的瀏覽器請求,因為默認(rèn)PHP的file_get_contents函數(shù)是不發(fā)送ua的。
如果要采集這樣的網(wǎng)站,我們就必須要讓PHP模擬瀏覽器發(fā)送UA,欺騙網(wǎng)站返回正常內(nèi)容。
實現(xiàn)如下:
ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; 4399Box.560; .NET4.0C; .NET4.0E)');
這是模擬IE8環(huán)境下的UA,當(dāng)然你也可以換成其他的。比如中火狐
也可以這樣讀取:
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Host: zh.wikipedia.org\r\n" .
"Accept-language: zh-cn\r\n" .
"User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; 4399Box.560; .NET4.0C; .NET4.0E)" .
"Accept: *//*"
)
);
- 深入file_get_contents函數(shù)抓取內(nèi)容失敗的原因分析
- 解析PHP中的file_get_contents獲取遠(yuǎn)程頁面亂碼的問題
- file_get_contents("php://input", "r")實例介紹
- php讀取本地文件常用函數(shù)(fopen與file_get_contents)
- PHP file_get_contents設(shè)置超時處理方法
- php file_get_contents抓取Gzip網(wǎng)頁亂碼的三種解決方法
- 解決file_get_contents無法請求https連接的方法
- PHP中file_get_contents高級用法實例
- php中file_get_contents與curl性能比較分析
- php 使用file_get_contents讀取大文件的方法
- PHP中file_get_contents函數(shù)抓取https地址出錯的解決方法(兩種方法)
相關(guān)文章
php實現(xiàn)過濾字符串中的中文和數(shù)字實例
這篇文章主要介紹了php實現(xiàn)過濾字符串中的中文和數(shù)字的方法,實例分析了php操作中文和數(shù)字匹配的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07
php中使用Imagick實現(xiàn)圖像直方圖的實現(xiàn)代碼
玩過單反相機(jī)的人應(yīng)該都知道圖像直方圖(Image Histogram),簡單點說,它通過計算每個色階在總像素中所占的比例來反映圖像的曝光情況。2011-08-08
PHP CURL post數(shù)據(jù)報錯 failed creating formpost data
我們有時候用curl上傳文件遇到failed creating formpost data的錯誤,那具體是如何產(chǎn)生,又如何進(jìn)行處理解決呢,下面我們就來探討下2016-10-10

