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皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  在线制作视频的网站有哪些,电脑如何制作视频短片?