问题描述
- 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);
解决方案
首先你确定你存放cookie.txt的地方有权限访问吗?(确保获取到了保持的cookie),然后你还要check一下登陆的界面是否有隐藏的input 因为有些登陆系统登陆的时候还要你回传登陆时的某个隐藏字段
解决方案二:
$cookie= dirname(__FILE__).'/tmp/cookie.txt';
你cookie值有问题吧,$cookie存储的是你cookie文件路径,又不是cookie内容。。
$cookie=file_get_contents( dirname(__FILE__).'/tmp/cookie.txt');
解决方案三:
Referer和User-Agent都回传了吗?
时间: 2024-08-18 08:34:25