使用PHP curl模拟浏览器抓取网站信息
程序员文章站
2022-04-29 16:45:37
官方解释curl是一个利用url语法在命令行方式下工作的文件传输工具。curl是一个利用url语法在命令行方式下工作的文件传输工具。它支持很多协议:ftp, ftps, h...
官方解释
curl是一个利用url语法在命令行方式下工作的文件传输工具。curl是一个利用url语法在命令行方式下工作的文件传输工具。
它支持很多协议:ftp, ftps, http, https, gopher, telnet, dict, file 以及 ldap。curl同样支持https认证,http post方法, http put方法, ftp上传, kerberos认证, http上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,
上载文件断点续传, http代理服务器管道( proxy tunneling), 甚至它还支持ipv6, socks5代理服务器, 通过http代理服务器上传文件到ftp服务器等等,功能十分强大。
curl讲解一
php中curl函数应用
简单的来说一共四步
curl_init();
curl_setopt();
curl_exec();
curl_close();
最重要的命令就是 curl_setopt();
一个简单的post请求例子
index.php
复制代码 代码如下:
<?php
$url = "http://www.mytest.com/curl/login.php"; //请求的url地址
$user = "zkg111"; //用户名
$pass = "123456";
$postdata = "user_name=".$user."&password=".$pass; //请求的数据,以 & 符号分割
$curl = curl_init(); //开启curl
curl_setopt($curl, curlopt_url, $url); //设置请求地址
curl_setopt($curl, curlopt_returntransfer, 1); //是否输出 1 or true 是不输出 0 or false输出
curl_setopt($curl, curlopt_post, 1); //是否使用post方法请求
curl_setopt($curl, curlopt_postfields, $postdata); //post数据
echo $data = curl_exec($curl); //执行curl操作
curl_close($curl);
?>
下面一个简单的例子,我随便打开了兄弟连的论坛,接着就模拟了一下兄弟连论坛的登陆,如果需要发帖的话原理都是一样的,转接页面,提交数据
特别注意的是cookie的保存目录 windows7下面必须是在./temp目录下,开始我自己创建了一个新文件夹,发现存是对的,但是cookie读取的时候不对,为此还在好多地方
提问,但是没有回答对的,折腾了好几天该了保存文件为./temp目录下才可以的,提醒别的朋友别和我一样瞎转
复制代码 代码如下:
<?php
$url = "http://bbs.lampbrother.net/login.php";
$urls = "http://bbs.lampbrother.net";
$lgt = 0;
$user = "xxxx";
$pass = "xxxx";
$question = 0;
$hideid = 1;
$cookie_file = tempnam('./temp','cookie');
$postdata = "forward=&jumpurl=".$urls."&step=2&lgt=".$lgt."&pwuser=".$user."&pwpwd=".$pass."&question=".$question."&answer=&hideid=".$hideid;
$ch = curl_init();
curl_setopt($ch, curlopt_url, $url);
curl_setopt($ch, curlopt_header, 0);
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_post, 1);
curl_setopt($ch, curlopt_postfields, $postdata);
curl_setopt($ch, curlopt_cookiejar, $cookie_file);
curl_setopt($ch, curlopt_followlocation, true);
$data = curl_exec($ch);
curl_close($ch);
//echo $data;
$ch = curl_init();
curl_setopt($ch, curlopt_url, 'http://bbs.lampbrother.net/');
curl_setopt($ch, curlopt_header, 0);
curl_setopt($ch, curlopt_returntransfer, 0);
curl_setopt($ch, curlopt_cookiefile, $cookie_file);
curl_exec($ch);
curl_close($ch);
?>
上一篇: 日常用到的正则表达式