欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php中g(shù)et_meta_tags()、CURL與user-agent用法分析

 更新時(shí)間:2014年12月16日 11:31:57   投稿:shichen2014  
這篇文章主要介紹了php中g(shù)et_meta_tags()、CURL與user-agent用法,以實(shí)例形式較為詳細(xì)的分析了get_meta_tags()、CURL與user-agent使用時(shí)的注意事項(xiàng)與用法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例分析了php中g(shù)et_meta_tags()、CURL與user-agent用法。分享給大家供大家參考。具體分析如下:

get_meta_tags()函數(shù)用于抓取網(wǎng)頁(yè)中<meta name="A" content="1"><meta name="B" content="2">形式的標(biāo)簽,并裝入一維數(shù)組,name為元素下標(biāo),content為元素值,上例中的標(biāo)簽可以獲得數(shù)組:array('A'=>'1', 'b'=>'2'),其他<meta>標(biāo)簽不處理,并且此函數(shù)只處理到</head>標(biāo)簽時(shí)截止,之后的<meta>也不再繼續(xù)處理,不過(guò)<head>之前的<meta>還是會(huì)處理.

user-agent是瀏覽器在向服務(wù)器請(qǐng)求網(wǎng)頁(yè)時(shí),提交的不可見(jiàn)的頭信息的一部分,頭信息是一個(gè)數(shù)組,包含多個(gè)信息,比如本地緩存目錄,cookies等,其中user-agent是瀏覽器類型申明,比如IE、Chrome、FF等.

今天在抓取一個(gè)網(wǎng)頁(yè)的<meta>標(biāo)簽的時(shí)候,總是得到空值,但是直接查看網(wǎng)頁(yè)源代碼又是正常的,于是懷疑是否服務(wù)器設(shè)置了根據(jù)頭信息來(lái)判斷輸出,先嘗試使用get_meta_tags()來(lái)抓取一個(gè)本地的文件,然后這個(gè)本地文件將獲取的頭信息寫(xiě)入文件,結(jié)果如下,其中替換成了/,方便查看,代碼如下:

復(fù)制代碼 代碼如下:
array (
  'HTTP_HOST' => '192.168.30.205',
  'PATH' => 'C:/Program Files/Common Files/NetSarang;C:/Program Files/NVIDIA Corporation/PhysX/Common;C:/Program Files/Common Files/Microsoft Shared/Windows Live;C:/Program Files/Intel/iCLS Client/;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0/;C:/Program Files/Intel/Intel(R) Management Engine Components/DAL;C:/Program Files/Intel/Intel(R) Management Engine Components/IPT;C:/Program Files/Intel/OpenCL SDK/2.0/bin/x86;C:/Program Files/Common Files/Thunder Network/KanKan/Codecs;C:/Program Files/QuickTime Alternative/QTSystem;C:/Program Files/Windows Live/Shared;C:/Program Files/QuickTime Alternative/QTSystem/; %JAVA_HOME%/bin;%JAVA_HOME%/jre/bin;',
  'SystemRoot' => 'C:/Windows',
  'COMSPEC' => 'C:/Windows/system32/cmd.exe',
  'PATHEXT' => '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC',
  'WINDIR' => 'C:/Windows',
  'SERVER_SIGNATURE' => '',
  'SERVER_SOFTWARE' => 'Apache/2.2.11 (Win32) PHP/5.2.8',
  'SERVER_NAME' => '192.168.30.205',
  'SERVER_ADDR' => '192.168.30.205',
  'SERVER_PORT' => '80',
  'REMOTE_ADDR' => '192.168.30.205',
  'DOCUMENT_ROOT' => 'E:/wamp/www',
  'SERVER_ADMIN' => 'admin@admin.com',
  'SCRIPT_FILENAME' => 'E:/wamp/www/user-agent.php',
  'REMOTE_PORT' => '59479',
  'GATEWAY_INTERFACE' => 'CGI/1.1',
  'SERVER_PROTOCOL' => 'HTTP/1.0',
  'REQUEST_METHOD' => 'GET',
  'QUERY_STRING' => '',
  'REQUEST_URI' => '/user-agent.php',
  'SCRIPT_NAME' => '/user-agent.php',
  'PHP_SELF' => '/user-agent.php',
  'REQUEST_TIME' => 1400747529,
)

果然在數(shù)組中沒(méi)有HTTP_USER_AGENT這個(gè)元素,apache在向另外一臺(tái)服務(wù)器發(fā)送請(qǐng)求的時(shí)候是沒(méi)有UA的,之后查了一下資料,get_meta_tags()函數(shù)沒(méi)有偽造UA的能力,所以只能使用其他辦法解決了.

后來(lái)使用CURL來(lái)獲取,就獲取到了網(wǎng)頁(yè),不過(guò)使用上稍微麻煩一點(diǎn),首先偽造UA,獲取之后在使用正則表達(dá)式分析<meta>.

偽造辦法,代碼如下:

復(fù)制代碼 代碼如下:
// 初始化一個(gè) cURL
$curl = curl_init();
 
// 設(shè)置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, 'http://localhost/user-agent.php');
 
// 設(shè)置是否將文件頭輸出到瀏覽器,0不輸出
curl_setopt($curl, CURLOPT_HEADER, 0);
 
// 設(shè)置UA,這里是將瀏覽器的UA轉(zhuǎn)發(fā)到服務(wù)器,也可以手動(dòng)指定值
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
 
// 設(shè)置cURL 參數(shù),要求結(jié)果返回到字符串中還是輸出到屏幕上。0輸出屏幕并返回操作結(jié)果的BOOL值,1返回字符串
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 運(yùn)行cURL,請(qǐng)求網(wǎng)頁(yè)
$data = curl_exec($curl);
 
// 關(guān)閉URL請(qǐng)求
curl_close($curl);
 
// 處理獲得的數(shù)據(jù)
var_dump($data);

希望本文所述對(duì)大家的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Memcache 在PHP中的使用技巧

    Memcache 在PHP中的使用技巧

    Memcache 在PHP中的使用
    2010-02-02
  • php橋接模式應(yīng)用案例分析

    php橋接模式應(yīng)用案例分析

    這篇文章主要介紹了php橋接模式應(yīng)用,結(jié)合具體案例形式分析了php橋接模式原理及信息發(fā)送相關(guān)應(yīng)用技巧,需要的朋友可以參考下
    2019-10-10
  • php刪除路徑下的所有文件夾和文件的代碼

    php刪除路徑下的所有文件夾和文件的代碼

    這篇文章主要介紹了php刪除路徑下的所有文件夾和文件的代碼的相關(guān)資料(php清空目錄代碼),需要的朋友可以參考下
    2023-03-03
  • 基于PHP實(shí)現(xiàn)端口批量查詢工具

    基于PHP實(shí)現(xiàn)端口批量查詢工具

    這篇文章主要為大家詳細(xì)介紹了如何基于PHP實(shí)現(xiàn)端口批量查詢工具,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解一下
    2024-03-03
  • php在window iis的莫名問(wèn)題的測(cè)試方法

    php在window iis的莫名問(wèn)題的測(cè)試方法

    其實(shí)很簡(jiǎn)單,就一句話,見(jiàn)招拆招,通過(guò)c:\php\php.exe -i 命令實(shí)現(xiàn)
    2013-05-05
  • PHP實(shí)現(xiàn)視頻文件上傳完整實(shí)例

    PHP實(shí)現(xiàn)視頻文件上傳完整實(shí)例

    這篇文章主要介紹了PHP實(shí)現(xiàn)視頻文件上傳的技巧,包含了PHP配置信息的設(shè)計(jì)及大文件的處理,需要的朋友可以參考下
    2014-08-08
  • 如何通過(guò)Apache在本地配置多個(gè)虛擬主機(jī)

    如何通過(guò)Apache在本地配置多個(gè)虛擬主機(jī)

    這篇文章主要介紹了如何通過(guò)Apache在本地配置多個(gè)虛擬主機(jī),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • php escape URL編碼

    php escape URL編碼

    php提供的URL編碼函數(shù)是基于字節(jié)的,對(duì)由ie的javascript函數(shù)escape編碼的數(shù)據(jù)就無(wú)能為力了。
    2008-12-12
  • php在文件指定行中寫(xiě)入代碼的方法

    php在文件指定行中寫(xiě)入代碼的方法

    有的站主頁(yè)是緩存頁(yè)面,你加入的網(wǎng)馬代碼或是webshell代碼經(jīng)常被更新或是其它的因素干掉,所以弄了這個(gè)代碼,防范方法腳本之家將最后給解決方法
    2012-05-05
  • Lumen timezone 時(shí)區(qū)設(shè)置方法(慢了8個(gè)小時(shí))

    Lumen timezone 時(shí)區(qū)設(shè)置方法(慢了8個(gè)小時(shí))

    今天用 Lumen 框架寫(xiě)代碼時(shí), 也是初次體驗(yàn) Lumen, 遇到了一個(gè)問(wèn)題, 從數(shù)據(jù)庫(kù)里查出的時(shí)間比數(shù)據(jù)庫(kù)里保存的 TIMESTAMP 時(shí)間慢了8個(gè)小時(shí), 很明顯這是一個(gè)時(shí)區(qū)設(shè)置的問(wèn)題, 本以為可以在1分鐘內(nèi)解決的, 但是我錯(cuò)了
    2018-01-01

最新評(píng)論