• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

curl 模拟找回密码出现不能理解的错误

php 搞代码 3年前 (2022-01-23) 37次浏览 已收录 0个评论
文章目录[隐藏]

<body>

curl模拟找回密码(华夏保险)直接找回密码页面 http://www.ihxlife.com/forget&#8230;
输入手机号15677748704(测试)获取验证码 直接会提示验证码错误

但先进入官网后通过官网链接进入页面能获取验证码

通过代码实现 先访问主页面获取cookie 再利用获取的cookie访问找回密码页面更新cookie
然后获取验证码 ——————失败 短信验证码发送失败

<code> public function forgetPwdIndex(){        $uKey = 'HuaXia' . date("YmdHis") . uniqid();        $cookieVerify = APP_COOKIE . "/" . $uKey . ".tmp";        $url = 'http://www.ihxlife.com/';//登录主页的url来获取cookie        $this->getCookie($url, $cookieVerify);//获取到登录页面的cookie        //获取找回密码页的cookie        $pwdUrl='http://www.ihxlife.com/forget/forgetPwd';        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $pwdUrl);        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:40.0) Gecko/20100101 Firefox/40.0');        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);        curl_setopt($ch, CURLOPT_HEADER, 0);        curl_setopt($ch, CURLOPT_TIMEOUT, 120); // 设置超时限制防止死循环        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',            'Accept-Encoding:gzip, deflate',            'Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',            'Connection:keep-alive',            'Host:www.ihxlife.com'));        curl_setopt($ch, CURLOPT_REFERER,'http://www.ihxlife.com/');        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieVerify);        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieVerify);        curl_exec($ch);        curl_close($ch);        //echo $cookieVerify."<br>";        $this->assign('key', $uKey);//传到页面中 在页面中post该数据 拼组cookie文件        $this->display();    }        public function sendPwdMobileCode(){    if(I('post.key')==''||I('post.mobile')==''){        echo json_encode(array('status'=>'10001','message'=>'参数错误'));        die;    }    $requireUrl='http://www.ihxlife.com/sms/smsCode_Send';//请求地址    $postData='mobile='.I('post.mobile').'&busiType=10019&effectiveTime=180';    $cookieVerify = APP_COOKIE . "/" . I('post.key') . ".tmp";    echo $cookieVerify."<br>";    $referer='http://www.ihxlife.com/forget/forgetPwd';    echo $this->curlPost($requireUrl,$postData,$cookieVerify,$referer,30,true);}    </code>
<code>       public function getCookie($url, $cookieVerify)    {        echo $cookieVerify."<br>";        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:40.0) Gecko/20100101 Firefox/40.0');        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);        curl_setopt($ch, CURLOPT_HEADER, 0);        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',            'Accept-Encoding:gzip, deflate','Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3','Connection:keep-alive','Host:www.ihxlife.com'));        curl_setopt($ch, CURLOPT_TIMEOUT, 120); // 设置超时限制防止死循环        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieVerify);        curl_exec($ch);        curl_close($ch);    }         public function curlPost($url, $post_fields, $cookieVerify, $referer = '', $timeOut = 30, $header = ''){    $curl = curl_init();    curl_setopt($curl, CURLOPT_URL, $url);    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:40.0) Gecko/20100101 Firefox/40.0');    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);    if ($referer) {        curl_setopt($curl, CURLOPT_REFERER, $referer);    } else {        curl_setopt($curl, CURLOPT_AUTOREFERER, 1);    }    if ($header) {        //curl_setopt($curl, CURLOPT_HTTPHEADER, array('Host:www.ihxlife.com', 'X-Requested-With:XMLHttpRequest'));        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',            'Accept-Encoding:gzip, deflate',            'Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',            'Content-Type:application/x-www-form-urlencoded; charset=UTF-8',            'Connection:keep-alive',            'Host:www.ihxlife.com',            'X-Requested-With:XMLHttpRequest'));    }    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_fields);    curl_setopt($curl, CURLOPT_POST, 1);    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieVerify);    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieVerify);    curl_setopt($curl, CURLOPT_TIMEOUT, $timeOut);    curl_setopt($curl, CURLOPT_HEADER, 0);    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    $resultData = curl_exec($curl); // 执行操作    curl_close($curl);    return $resultData;}</code>

回复内容:

<body>

curl模拟找回密码(华夏保险)直接找回密码页面 http://www.ihxlife.com/forget&#8230;
输入手机号15677748704(测试)获取验证码 直接会提示验证码错误

但先进入官网后通过官网链接进入页面能获取验证码

通过代码实现 先访问主页面获取cookie 再利用获取的cookie访问找回密码页面更新cookie
然后获取验证码 ——————失败 短信验证码发送失败

<code> public function forgetPwdIndex(){        $uKey = 'HuaXia' . date("YmdHis") . uniqid();        $cookieVerify = APP_COOKIE . "/" . $uKey . ".tmp";        $url = 'http://www.ihxlife.com/';//登录主页的url来获取cookie        $this->getCookie($url, $cookieVerify);//获取到登录页面的cookie        //获取找回密码页的cookie        $pwdUrl='http://www.ihxlife.com/forget/forgetPwd';        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $pwdUrl);        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:40.0) Gecko/20100101 Firefox/40.0');        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);        curl_setopt($ch, CURLOPT_HEADER, 0);        curl_setopt($ch, CURLOPT_TIMEOUT, 120); // 设置超时限制防止死循环        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',            'Acce<i>*本5文来源gaodai$ma#com搞$$代**码)网@</i><img>搞代码gaodaima</img>pt-Encoding:gzip, deflate',            'Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',            'Connection:keep-alive',            'Host:www.ihxlife.com'));        curl_setopt($ch, CURLOPT_REFERER,'http://www.ihxlife.com/');        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieVerify);        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieVerify);        curl_exec($ch);        curl_close($ch);        //echo $cookieVerify."<br>";        $this->assign('key', $uKey);//传到页面中 在页面中post该数据 拼组cookie文件        $this->display();    }        public function sendPwdMobileCode(){    if(I('post.key')==''||I('post.mobile')==''){        echo json_encode(array('status'=>'10001','message'=>'参数错误'));        die;    }    $requireUrl='http://www.ihxlife.com/sms/smsCode_Send';//请求地址    $postData='mobile='.I('post.mobile').'&busiType=10019&effectiveTime=180';    $cookieVerify = APP_COOKIE . "/" . I('post.key') . ".tmp";    echo $cookieVerify."<br>";    $referer='http://www.ihxlife.com/forget/forgetPwd';    echo $this->curlPost($requireUrl,$postData,$cookieVerify,$referer,30,true);}    </code>
<code>       public function getCookie($url, $cookieVerify)    {        echo $cookieVerify."<br>";        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:40.0) Gecko/20100101 Firefox/40.0');        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);        curl_setopt($ch, CURLOPT_HEADER, 0);        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',            'Accept-Encoding:gzip, deflate','Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3','Connection:keep-alive','Host:www.ihxlife.com'));        curl_setopt($ch, CURLOPT_TIMEOUT, 120); // 设置超时限制防止死循环        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieVerify);        curl_exec($ch);        curl_close($ch);    }         public function curlPost($url, $post_fields, $cookieVerify, $referer = '', $timeOut = 30, $header = ''){    $curl = curl_init();    curl_setopt($curl, CURLOPT_URL, $url);    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:40.0) Gecko/20100101 Firefox/40.0');    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);    if ($referer) {        curl_setopt($curl, CURLOPT_REFERER, $referer);    } else {        curl_setopt($curl, CURLOPT_AUTOREFERER, 1);    }    if ($header) {        //curl_setopt($curl, CURLOPT_HTTPHEADER, array('Host:www.ihxlife.com', 'X-Requested-With:XMLHttpRequest'));        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',            'Accept-Encoding:gzip, deflate',            'Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',            'Content-Type:application/x-www-form-urlencoded; charset=UTF-8',            'Connection:keep-alive',            'Host:www.ihxlife.com',            'X-Requested-With:XMLHttpRequest'));    }    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_fields);    curl_setopt($curl, CURLOPT_POST, 1);    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieVerify);    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieVerify);    curl_setopt($curl, CURLOPT_TIMEOUT, $timeOut);    curl_setopt($curl, CURLOPT_HEADER, 0);    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    $resultData = curl_exec($curl); // 执行操作    curl_close($curl);    return $resultData;}</code>

问题解决了。这个网站在加载主页登录模块的验证码时更新了cookie。我之前的思路一直在要加载页面要加载页面 然后没有注意到这里 只要再访问下主页验证码保存更新的验证码就好!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:curl 模拟找回密码出现不能理解的错误

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址