php curl 模拟登录并获取数据实例详解
发布时间 - 2026-01-10 22:00:33 点击率:次PHP的curl()在抓取网页的效率方面是比较高的,而且支持多线程,而file_get_contents()效率就要稍低些,当然,使用curl时需要开启下curl扩展。

代码实战
先来看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
函数login_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址,保存的cookie文件,post的数据(用户名和密码等信息),是否返回信息等等,然后curl_exec执行curl,最后curl_close()释放资源。注意PHP自带的http_build_query()可以将数组转换成相连接的字符串。
接下来如果登录成功后,我们要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$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_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()中也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中我们设置CURLOPT_RETURNTRANSFER为1即自动返回信息,而CURLOPT_COOKIEFILE可以读取到登录时保存的cookie信息,最后将页面内容返回。
我们的最终目的是要获取到模拟登录后的信息,也就是只有正常登录成功后才能获取的有用信息。接下来我们以登录开源中国的移动版为例,看看如何抓取到登录成功后的信息。
//设置post的数据 $post = array ( 'email' => 'oschina账户', 'pwd' => 'oschina密码', 'goto_page' => '/my', 'error_page' => '/login', 'save_login' => '1', 'submit' => '现在登录' ); //登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录 login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件 @ unlink($cookie); //匹配页面信息 $preg = "/<td class='portrait'>(.*)<\/td>/i"; preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
使用总结
1、初始化curl;
2、使用curl_setopt设置目标url,和其他选项;
3、curl_exec,执行curl;
4、执行后,关闭curl;
5、输出数据。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# php
# curl
# 模拟登录
# 模拟登录实例详解
# PHP实现的微信公众号扫码模拟登录功能示例
# PHP使用Curl实现模拟登录及抓取数据功能示例
# PHP Curl模拟登录微信公众平台、新浪微博实例代码
# PHP curl模拟登录带验证码的网站
# PHP读取CURL模拟登录时生成Cookie文件的方法
# PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
# PHP中使用CURL模拟登录并获取数据实例
# PHP CURL获取cookies模拟登录的方法
# PHP如何获取Cookie并实现模拟登录
# 较高
# 希望能
# 为例
# 后将
# 自带
# 谢谢大家
# 转换成
# 中国
# 多线程
# 开源
# 时需
# 相连接
# 稍低
# 目的是
# 系统资源
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在阿里云服务器自主搭建网站?
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
Laravel怎么实现模型属性的自动加密
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何在Windows 2008云服务器安全搭建网站?
如何在新浪SAE免费搭建个人博客?
郑州企业网站制作公司,郑州招聘网站有哪些?
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
如何登录建站主机?访问步骤全解析
如何在建站之星网店版论坛获取技术支持?
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
昵图网官网入口 昵图网素材平台官方入口
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
如何用PHP快速搭建CMS系统?
Python3.6正式版新特性预览
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
高防服务器租用指南:配置选择与快速部署攻略
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
Laravel如何使用Sanctum进行API认证?(SPA实战)
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
北京的网站制作公司有哪些,哪个视频网站最好?
C#如何调用原生C++ COM对象详解
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
网站页面设计需要考虑到这些问题
Laravel如何使用模型观察者?(Observer代码示例)
Python图片处理进阶教程_Pillow滤镜与图像增强
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
网站制作软件免费下载安装,有哪些免费下载的软件网站?
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
EditPlus中的正则表达式 实战(2)
如何用AI帮你把自己的生活经历写成一个有趣的故事?
zabbix利用python脚本发送报警邮件的方法
图册素材网站设计制作软件,图册的导出方式有几种?
php结合redis实现高并发下的抢购、秒杀功能的实例
如何在 Pandas 中基于一列条件计算另一列的分组均值
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
如何用好域名打造高点击率的自主建站?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
如何快速搭建支持数据库操作的智能建站平台?
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
在线制作视频的网站有哪些,电脑如何制作视频短片?

