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

78 篇文章 0 订阅

我遇到过这样一个问题:

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操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值