1赞

评论

收藏

[PHP] PHP模拟登陆抓取页面内容

开发技术 开发技术 发布于:2023-03-02 11:17 | 阅读数:229 | 评论:0

u=4076205292,3057295839&fm=253&fmt=auto&app=138&f=JPEG.webp.jpg
平时开发中经常会遇到抓取某个页面内容, 但是有时候某些页面需要登陆才能访问, 最常见的就是论坛, 这时候我们需要来使用curl模拟登陆。 大致思路:需要先请求提取 cookies 并保存,然后利用保存下来的这个cookies再次发送请求来获取页面内容,下面我们直接上代码
<?php 
/** 
 * @Brief PHP读取Curl模拟登陆, 获取cookie, 带cookie进行请求 
 * @Date: 2016/10/20
 * @Time: 9:41 
 */ 
//设置cookie保存位置 
$cookieFile = dirname(__FILE__).'cookie.curl.tmp'; 
//第一步:获取cookie 
$url = 'http://www.aseoe.com'; 
$data = array( 
  'username'  => 'aseoe', 
  'password'  => 'aseoe', 
); 
//curl初始化 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
//设置为post请求 
curl_setopt($ch, CURLOPT_POST, true); 
//设置附带返回header信息为空 
curl_setopt($ch, CURLOPT_HEADER, 0); 
//post数据 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
//cookie保存文件位置 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); 
//设置数据返回作为变量储存,而不是直接输出 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
//执行请求 
$ret = curl_exec($ch); 
//关闭连接 
curl_close($ch); 
//第二步:附带cookie请求需要登陆的页面 
$url = 'http://www.aseoe.com'; 
//curl初始化 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
//设置为post请求 
curl_setopt($ch, CURLOPT_POST, true); 
//设置附带返回header信息为空 
curl_setopt($ch, CURLOPT_HEADER, 0); 
//设置cookie信息文件位置, 注意与第二步中的获取不同,这里是读取 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); 
//设置数据返回作为变量储存,而不是直接输出 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
//执行请求 
$ret = curl_exec($ch); 
//关闭连接 
curl_close($ch); 
//打印抓取内容 
var_dump($ret);
这样我们就抓取到了需要登陆才能访问页面的内容, 注意上面的地址只是一个示例,需要换成你想要抓取页面的地址。


关注下面的标签,发现更多相似文章