利用PHP的CURL对某网站发起请求,采集对方的一些数据用。
之前用php的curl做过模拟登陆然后进行一些操作,但是这次事情比较紧急,而且对方的网站模拟登陆比较困难,所以放弃了。
直接登陆,然后发起需要的请求,在浏览器中可以看到请求需要的cookie,由于对php的curl学的不够精通,导致不知道还有CURLOPT_COOKIE这个参数,一直以为就是CURLOPT_COOKIEFILE和CURLOPT_COOKIEJAR,CURLOPT_COOKIE这个参数可以直接利用浏览器里requuset里的cookie参数
$ch =curl_init(); curl_setopt($ch,CURLOPT_URL,$url); $header = array(); curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, 0 ); // 对认证证书来源的检查 curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, 2 ); // 从证书中检查SSL加密算法是否存在 curl_setopt($ch,CURLOPT_POST,true);//post访问 curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);//post参数,字符串形式 curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);//文件流的形式 curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_HTTPHEADER,$header);//设置header curl_setopt($ch,CURLOPT_COOKIE,$cookie);//cookie字符串 $content = curl_exec($ch); echo "<pre>";print_r(curl_error($ch));echo "</pre>"; echo "<pre>";print_r(curl_getinfo($ch));echo "</pre>"; echo "<pre>";print_r($header);echo "</pre>"; echo $content;
刚开始思路是想把cookie字符串转成CURLOPT_COOKIEFILE可用的形式,没找到便捷的方法,一直卡在那,后来不停的搜索问题的情况下找到了CURLOPT_COOKIE参数