curl模拟登陆时,在每一步 CURLOPT_COOKIEJAR, CURLOPT_COOKIEFILE都要尽量加上

原创 2016年05月31日 11:19:01

我遇到过这样一个问题:

postdata中除了账号密码,还有个叫csrf的参数,而这个参数先要通过爬取login页面,才能获得。

第一步:

    do{
        if($i > 2)
            break;
        $i++;
        $url = LOGIN_URL;
        echo "$url \n";
        $ch = curl_init($url);
        $curl_opts = array(CURLOPT_HEADER => false,
            CURLOPT_NOBODY => false,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_USERAGENT => $user_agent,
        );

        curl_setopt_array($ch, $curl_opts);
        $pass = curl_exec($ch);
        //curl_close($ch);
    }while(!$pass);
    preg_match_all('/name="csrf" value="(.*?)"><label/',$pass,$m);
    $csrf = $m[1][0];
第二步:

    $flag = true;
    $i = 0;
    #login ebay
    do{
        if($i > 2)
            break;
        $i++;
        $url = LOGIN_URL;
        echo "$url \n";
        $ch = curl_init($url);
        $curl_opts = array(CURLOPT_HEADER => false,
            CURLOPT_NOBODY => false,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_USERAGENT => $user_agent,
            CURLOPT_COOKIEJAR => $file_cook,
            CURLOPT_COOKIEFILE => $file_cook,
            CURLOPT_POST=> true,
            CURLOPT_POSTFIELDS => 'email='.$username.'&password='.$userpass.'&csrf='.$csrf,
        );

        curl_setopt_array($ch, $curl_opts);
        $pass = curl_exec($ch);
        curl_close($ch);
        if($pass && strpos($pass, 'Chen')!==false){
            $flag = false;
        }
    }while($flag);

该做的都照做了,但是,仍然登不上。后来发现,第一步没有加入
     CURLOPT_COOKIEJAR => $file_cook,
     CURLOPT_COOKIEFILE => $file_cook,



这两个参数,加上了,就可以正确登陆了。

结论:目标有可能第一步就给我们的浏览器种cookie,我们要在模拟登陆过程中,全部加上cookie操作。

版权声明:本文为博主原创文章,未经博主允许不得转载。

PHP curl 的CURLOPT_POSTFIELDS之数组和字符串之谜

PHP的CURLOPT_POSTFIELDS参数使用数组和字符串的区别

curl获取结果乱码的解决方法之CURLOPT_ENCODING(curl/Post请求)

//php脚本开始   /*POST请求远程内容函数*/   function ppost($url,$data...

libcurl部分总结||CURLOPT_POSTFIELDS 之间用&间隔开来

CURLOPT_POSTFIELDS 之间用&间隔开来。 --------以下为ChinaUnix liu277325073的总结,感谢之-------------- curl是开源的东西,主...
  • kelvict
  • kelvict
  • 2013年11月07日 11:56
  • 4933

转:CURLOPT

curl_setopt()函数将为一个CURL会话设置选项。option参数是你想要的设置,value是这个选项给定的值。下列选项的值将被作为长整形使用(在option参数中指定): *CURLOPT...

curl 模拟登陆

  • 2016年08月04日 12:01
  • 1KB
  • 下载

(微信开发)PHP curl模拟登陆教务系统查询成绩查询课表实现微信查成绩差课表功能

最近微信开发特别火,刚学会helloword的我也去玩了一下。做了一个微信端查成绩、查课表、查考试安排,图书借阅情况,一键续借的微信公众账号。做了几天,从只会echo到这个公众账号完成,遇到了不少问题...

ICCMO微信公众账号开发系列(3)CURL模拟登陆教务系统查成绩

上一篇提到CURL。咱们这一篇来玩玩它。 CURL 是什么呢? CURL有什么用? 咱们今天通过CURL模拟登陆教务系统查成绩来学习一下这个函数。 今天要实现的功能是:...
  • Iccmo
  • Iccmo
  • 2015年08月01日 18:52
  • 1556

c++ curl模拟登陆

我们在使用一些网站时,输入用户名,密码即可登陆该网站,登陆原理就是将用户输入的用户名和密码组合成一个特定字符串,post给一个url地址,如果用户名密码正确,就可以登陆了,如果想使用程序模拟这种登陆过...

用curl模拟登陆获取页面信息以及相关知识点

今天使用curl做了模拟登陆,之前没有接触过curl,也并不知道有这个东西,下面简要谈谈我在做这个模拟登陆过程中get 到的技能以及了解到的知识:      1、CURL:curl是利用URL语法...
  • v587_lu
  • v587_lu
  • 2016年01月11日 16:33
  • 1819

PHP用curl模拟登陆并采集后台数据

PHP用curl模拟登陆并采集后台数据步骤: 1、请求登陆,获取返回的保存身份信息的cookie,并存入指定cookie文件。见类login()方法 2、请求需身份验证的页面,带上cookie文件。见...
  • soonfly
  • soonfly
  • 2016年07月28日 21:00
  • 1336
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:curl模拟登陆时,在每一步 CURLOPT_COOKIEJAR, CURLOPT_COOKIEFILE都要尽量加上
举报原因:
原因补充:

(最多只允许输入30个字)