国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php中get_meta_tags()、CURL與user-agent用法分析

2024-09-04 11:42:57
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了php中get_meta_tags()、CURL與user-agent用法,以實例形式較為詳細的分析了get_meta_tags()、CURL與user-agent使用時的注意事項與用法,具有一定的參考借鑒價值,需要的朋友可以參考下

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

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

user-agent是瀏覽器在向服務器請求網頁時,提交的不可見的頭信息的一部分,頭信息是一個數組,包含多個信息,比如本地緩存目錄,cookies等,其中user-agent是瀏覽器類型申明,比如IE、Chrome、FF等.

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

  1. array ( 
  2.   'HTTP_HOST' => '192.168.30.205'
  3.   '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;'
  4.   'SystemRoot' => 'C:/Windows'
  5.   'COMSPEC' => 'C:/Windows/system32/cmd.exe'
  6.   'PATHEXT' => '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC'
  7.   'WINDIR' => 'C:/Windows'
  8.   'SERVER_SIGNATURE' => ''
  9.   'SERVER_SOFTWARE' => 'Apache/2.2.11 (Win32) PHP/5.2.8'
  10.   'SERVER_NAME' => '192.168.30.205'
  11.   'SERVER_ADDR' => '192.168.30.205'
  12.   'SERVER_PORT' => '80'
  13.   'REMOTE_ADDR' => '192.168.30.205'
  14.   'DOCUMENT_ROOT' => 'E:/wamp/www'
  15.   'SERVER_ADMIN' => 'admin@admin.com'
  16.   'SCRIPT_FILENAME' => 'E:/wamp/www/user-agent.php'
  17.   'REMOTE_PORT' => '59479'
  18.   'GATEWAY_INTERFACE' => 'CGI/1.1'
  19.   'SERVER_PROTOCOL' => 'HTTP/1.0'
  20.   'REQUEST_METHOD' => 'GET'
  21.   'QUERY_STRING' => ''
  22.   'REQUEST_URI' => '/user-agent.php'
  23.   'SCRIPT_NAME' => '/user-agent.php'
  24.   'PHP_SELF' => '/user-agent.php'
  25.   'REQUEST_TIME' => 1400747529, 

果然在數組中沒有HTTP_USER_AGENT這個元素,apache在向另外一臺服務器發送請求的時候是沒有UA的,之后查了一下資料,get_meta_tags()函數沒有偽造UA的能力,所以只能使用其他辦法解決了.

后來使用CURL來獲取,就獲取到了網頁,不過使用上稍微麻煩一點,首先偽造UA,獲取之后在使用正則表達式分析<meta>.

偽造辦法,代碼如下:

  1. // 初始化一個 cURL 
  2. $curl = curl_init(); 
  3.  
  4. // 設置你需要抓取的URL 
  5. curl_setopt($curl, CURLOPT_URL, 'http://localhost/user-agent.php'); 
  6.  
  7. // 設置是否將文件頭輸出到瀏覽器,0不輸出 
  8. curl_setopt($curl, CURLOPT_HEADER, 0); 
  9.  
  10. // 設置UA,這里是將瀏覽器的UA轉發到服務器,也可以手動指定值 
  11. curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
  12.  
  13. // 設置cURL 參數,要求結果返回到字符串中還是輸出到屏幕上。0輸出屏幕并返回操作結果的BOOL值,1返回字符串 
  14. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  15. // 運行cURL,請求網頁 
  16. $data = curl_exec($curl); 
  17.  
  18. // 關閉URL請求 
  19. curl_close($curl); 
  20.  
  21. // 處理獲得的數據 
  22. var_dump($data); 

希望本文所述對大家的PHP程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凌云县| 克什克腾旗| 白山市| 沁阳市| 南丰县| 临沭县| 绥滨县| 晋宁县| 政和县| 秭归县| 疏附县| 灌阳县| 萨嘎县| 云林县| 比如县| 东莞市| 长兴县| 太康县| 诏安县| 喀什市| 玛曲县| 成安县| 上饶市| 岐山县| 土默特右旗| 涞水县| 东乡| 营口市| 南靖县| 花莲市| 德保县| 夏津县| 麦盖提县| 德令哈市| 阿合奇县| 杭州市| 巴青县| 施甸县| 洛川县| 阿坝县| 色达县|