• 跟着百度学PHP[17]-PHP扩展CURL的模拟登陆并获取数据


    这两天也不知道怎么,学习效率低。很无奈。

    如何知道要去URL该怎么填写呢?就是填写表单中的Action内容:

    tempnam() 函数创建一个具有唯一文件名的临时文件。

     1 <?php 
     2 header("content-type:text/html;charset=gbk");
     3 //data可直接抓包查看依据数据来写。
     4 $data = "lgt=0&pwuser=while&pwpwd=xishaonian&hideid=0&forward=&jumpurl=http%3A%2F%2Fbbs.ly.shangdu.com%2Fmessage.php&m=bbs&step=2&cktime=31536000";
     5 $cookie_file = tempnam('./temp','cookie');
     6 $curl = curl_init();
     7 curl_setopt($curl,CURLOPT_URL,"http://bbs.ly.shangdu.com/login.php");
     8 curl_setopt($curl,CURLOPT_HEADER,0);
     9 curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
    10 curl_setopt($curl,CURLOPT_POST,1);
    11 curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie_file);
    12 curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
    13 curl_exec($curl);
    14 curl_close($curl);
    15 //以上就算是登陆完成了,但等下还要将cookie保存。
    16 //此时就需要设置一个读取我们保存在$cookie_file变量中的cookie了。
    17 //使用CURLOPT_COOKIEFILE
    18 $url = curl_init();
    19 curl_setopt($url,CURLOPT_URL,"http://bbs.ly.shangdu.com/u.php?uid=1325511");
    20 curl_setopt($url,CURLOPT_HEADER,0);
    21 curl_setopt($url,CURLOPT_RETURNTRANSFER,1);
    22 curl_setopt($url,CURLOPT_COOKIEFILE,$cookie_file);
    23 $content = curl_exec($url);
    24 //配合正则表达式来提取等级、身份、总积分等信息
    25 $reg = "/[等级|身份|总积分].*?s[2|5].[^>]*>(.[^<]*)/";
    26 preg_match_all($reg,$content,$arr);
    27 var_dump($arr);
    28 echo $arr[1][0] ."<br />";
    29 echo $arr[1][1] ."<br />";
    30 echo $arr[1][2] ."<br />";
    31 curl_close($url);
    32  ?>

    显示案例:

  • 相关阅读:
    HashMap与ArrayList的相互嵌套
    Mysql与Oracle 的对比
    什么是子查询
    创建存储过程
    cmd 快捷键
    navicat 快捷键
    Mysql的数据类型 6种
    Mysql与Oracle 的使用区别
    怎样修复ie浏览器
    Linux官方内置Bash中新发现一个非常严重安全漏洞
  • 原文地址:https://www.cnblogs.com/xishaonian/p/6548149.html
Copyright © 2020-2023  润新知