phpCURL抓取网页内容
法1
参考代码1:<?php // 创建一个新cURL资源 $ch = curl_init(); // 设置URL和相应的选项 curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com/"); curl_setopt($ch, CURLOPT_HEADER, false); // 抓取URL并把它传递给浏览器 $data = curl_exec($ch); echo $data; //关闭cURL资源,并且释放系统资源 curl_close($ch); ?>
法2
参考代码2:<?php $szUrl = "http://www.baidu.com/"; $UserAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $szUrl); curl_setopt($curl, CURLOPT_HEADER, 0); //0表示不输出Header,1表示输出 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_ENCODING, ''); curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); $data = curl_exec($curl); echo $data; //echo curl_errno($curl); //返回0时表示程序执行成功 如何从curl_errno返回值获取错误信息 exit(); ?>
可以拿WordPress的后台登录做测试,可以完美登录
我的完整测试代码
<?php $post_data = array ( "log" => "admin", "pwd" => "xxxxxxxx",//密码就不公开了 "__token__"=>"7c57b81907b63f46500ce1910396485d" ); $cookie_jar = tempnam('./','cookie');//新建cookie文件 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://域名/wp-login.php?loggedout=true&wp_lang=zh_CN");//域名也不公开了 //设定返回的数据是否自动显示 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 我们在POST数据哦! curl_setopt($ch, CURLOPT_POST, 1); // 把post的变量加上 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //把返回来的cookie信息保存在$cookie_jar文件中 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar); echo curl_exec($ch); curl_close($ch); $ch2 = curl_init(); curl_setopt($ch2, CURLOPT_URL, "http://域名/wp-admin/"); curl_setopt($ch2, CURLOPT_HEADER, false); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar); echo curl_exec($ch2); unlink($cookie_jar); curl_close($ch2); ?>
特殊说明:
如果你模拟登录失败了,那么很可能你要登录的网站有反爬虫机制,比如验证码,比如token,比如用的Ajax同时又不允许跨域
版权声明:
作者:admin
链接:http://blog.mryxh.cn/556.html
文章版权归作者所有,未经允许请勿转载。
THE END