开发者社区> 问答> 正文

php模拟登录目标网站,为何302没有跟随跳转.cookie已经获得.?

<?php
error_reporting(0);
$user       = 'cckk263';
//邮箱密码
$pass       = '54131421';
//登陆
$url = 'https://www.mql5.com/zh/auth_login/';

//创建一个用于存放cookie信息的文件
$cookie= dirname(__FILE__).'/tmp/cookie.txt';

$fields_post = array(
'Login'=> $user,
'Password'=> $pass,
'RedirectAfterLoginUrl'=>'https://www.mql5.com/zh',
'RememberMe'=>false,
);
//step 1
//获取一个cookie
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
$content1 = curl_exec($ch);
curl_close($ch);

//step 2
//post 数据;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
// 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
// 自动跟随跳转
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);

curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields_post));
$result= curl_exec($ch);
curl_close($ch);

展开
收起
小旋风柴进 2016-03-06 16:35:36 2598 0
1 条回答
写回答
取消 提交回答
  • 首先你确定你存放cookie.txt的地方有权限访问吗?(确保获取到了保持的cookie),然后你还要check一下登陆的界面是否有隐藏的input 因为有些登陆系统登陆的时候还要你回传登陆时的某个隐藏字段

    2019-07-17 18:54:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载