php中get_meta_tags()、CURL与user-agent用法分析
发布:smiling 来源: PHP粉丝网 添加日期:2021-05-03 17:12:39 浏览: 评论:0
这篇文章主要介绍了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()来抓取一个本地的文件,然后这个本地文件将获取的头信息写入文件,结果如下,其中替换成了/,方便查看,代码如下:
- 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,
- )
果然在数组中没有HTTP_USER_AGENT这个元素,apache在向另外一台服务器发送请求的时候是没有UA的,之后查了一下资料,get_meta_tags()函数没有伪造UA的能力,所以只能使用其他办法解决了.
后来使用CURL来获取,就获取到了网页,不过使用上稍微麻烦一点,首先伪造UA,获取之后在使用正则表达式分析<meta>.
伪造办法,代码如下:
- // 初始化一个 cURL
- $curl = curl_init();
- // 设置你需要抓取的URL
- curl_setopt($curl, CURLOPT_URL, 'http://localhost/user-agent.php');
- // 设置是否将文件头输出到浏览器,0不输出
- curl_setopt($curl, CURLOPT_HEADER, 0);
- // 设置UA,这里是将浏览器的UA转发到服务器,也可以手动指定值
- curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
- // 设置cURL 参数,要求结果返回到字符串中还是输出到屏幕上。0输出屏幕并返回操作结果的BOOL值,1返回字符串
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- // 运行cURL,请求网页
- $data = curl_exec($curl);
- // 关闭URL请求
- curl_close($curl);
- // 处理获得的数据
- var_dump($data);
希望本文所述对大家的PHP程序设计有所帮助。
Tags: get_meta_tags CURL user-agent
- 上一篇:PHP里8个鲜为人知的安全函数分析
- 下一篇:非常实用的PHP常用函数汇总
相关文章
- ·php get_headers 与get_meta_tags函数实例(2014-01-15)
- ·你可能不知道PHP get_meta_tags()函数(2020-12-14)
- ·php curl_init函数用法(2013-11-28)
- ·php使用curl函数提示Call to undefined function curl_init()(2013-12-04)
- ·php提示:Call to undefined function curl_init(2013-12-04)
- ·cURL函数库错误码说明之PHP curl_errno函数(2013-12-05)
- ·php file_get_contents与curl()函数对比(2014-01-16)
- ·PHP CURL用法详解(2014-01-17)
- ·php CURL函数入门教程详解(2014-02-22)
- ·php中curl和file_get_content函数抓页面对比(2014-06-21)
- ·php curl_init函数用法详解说明(2014-07-12)
- ·php中file_get_contents和curl两个函数用法(2014-08-02)
- ·php curl用法(2014-08-05)
- ·PHP CURL模拟GET及POST函数代码(2014-09-09)
- ·PHP curl_setopt函数用法介绍(2014-09-14)
- ·常用的curl发包函数(2014-10-22)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)