解析file_get_contents模仿瀏覽器頭(user_agent)獲取數(shù)據(jù)
什么是user agent
User Agent中文名為用戶代理,簡(jiǎn)稱 UA,它是一個(gè)特殊字符串頭,使得服務(wù)器能夠識(shí)別客戶使用的操作系統(tǒng)及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語(yǔ)言、瀏覽器插件等。
網(wǎng)站可以通過(guò)判斷不同UA來(lái)呈現(xiàn)不同的網(wǎng)站,例如手機(jī)訪問(wèn)和PC訪問(wèn)顯示不同的頁(yè)面。
PHP在用file_get_contents函數(shù)采集網(wǎng)站時(shí),有時(shí)會(huì)明明用瀏覽器可以看,但就是采不到任何內(nèi)容。
這很有可能是服務(wù)器上做了設(shè)置,根據(jù) User_agent判斷是否為正常的瀏覽器請(qǐng)求,因?yàn)槟J(rèn)PHP的file_get_contents函數(shù)是不發(fā)送ua的。
如果要采集這樣的網(wǎng)站,我們就必須要讓PHP模擬瀏覽器發(fā)送UA,欺騙網(wǎng)站返回正常內(nèi)容。
實(shí)現(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)程頁(yè)面亂碼的問(wèn)題
- file_get_contents("php://input", "r")實(shí)例介紹
- php讀取本地文件常用函數(shù)(fopen與file_get_contents)
- PHP file_get_contents設(shè)置超時(shí)處理方法
- php file_get_contents抓取Gzip網(wǎng)頁(yè)亂碼的三種解決方法
- 解決file_get_contents無(wú)法請(qǐng)求https連接的方法
- PHP中file_get_contents高級(jí)用法實(shí)例
- php中file_get_contents與curl性能比較分析
- php 使用file_get_contents讀取大文件的方法
- PHP中file_get_contents函數(shù)抓取https地址出錯(cuò)的解決方法(兩種方法)
相關(guān)文章
PHP針對(duì)中英文混合字符串長(zhǎng)度判斷及截取方法示例
這篇文章主要介紹了PHP針對(duì)中英文混合字符串長(zhǎng)度判斷及截取方法,結(jié)合實(shí)例形式分析了php中英文字符串的遍歷、轉(zhuǎn)換、截取、計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下2017-03-03
php實(shí)現(xiàn)過(guò)濾字符串中的中文和數(shù)字實(shí)例
這篇文章主要介紹了php實(shí)現(xiàn)過(guò)濾字符串中的中文和數(shù)字的方法,實(shí)例分析了php操作中文和數(shù)字匹配的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
php中使用Imagick實(shí)現(xiàn)圖像直方圖的實(shí)現(xiàn)代碼
玩過(guò)單反相機(jī)的人應(yīng)該都知道圖像直方圖(Image Histogram),簡(jiǎn)單點(diǎn)說(shuō),它通過(guò)計(jì)算每個(gè)色階在總像素中所占的比例來(lái)反映圖像的曝光情況。2011-08-08
windows平臺(tái)中配置nginx+php環(huán)境
相對(duì)于linux來(lái)說(shuō),windows配置web環(huán)境不管是一鍵安裝包還是獨(dú)立配置簡(jiǎn)單多了,這次是講以NGINX作為web的本地的測(cè)試環(huán)境。2015-12-12
php設(shè)計(jì)模式 Adapter(適配器模式)
將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口,使用原本不兼容的而不能在一起工作的那些類可以在一起工作2011-06-06
PHP中session跨子域的三種實(shí)現(xiàn)方法
做項(xiàng)目的時(shí)候跨域問(wèn)題在cooike及session中我們經(jīng)常會(huì)使用到了,不過(guò)php對(duì)于子域處理是比較簡(jiǎn)單的了,小編整理了三個(gè)解決方案,下面一起來(lái)看看。2016-07-07
PHP CURL post數(shù)據(jù)報(bào)錯(cuò) failed creating formpost data
我們有時(shí)候用curl上傳文件遇到failed creating formpost data的錯(cuò)誤,那具體是如何產(chǎn)生,又如何進(jìn)行處理解決呢,下面我們就來(lái)探討下2016-10-10

