亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

curl 如何模擬登陸一個OAuth授權用戶中心從而實現登陸其下面的各個子站?

curl 如何模擬登陸一個OAuth授權用戶中心從而實現登陸其下面的各個子站?

收到一只叮咚 2019-02-25 14:46:32
問題概述:通過php curl模擬登陸一個網站如http://www.aaa.com,通過fiddler抓包分析如下:1、表單以POST方式提交到http://www.aaa.com/dologin,這里產生了一個token:xxx,2、服務器帶著這個token跳轉到了以下地址來登陸:https://account.usercenter.com/login?token=xxx&target_url=http://www.aaa.com;(注意域名不同,并且是https,此外這個攜帶token的url拷貝到任何電腦都能正常登陸,登陸成功后就會失效)3、登陸成功后地址重定向到target_url:http://www.aaa.com 問題分析:我的理解:有一臺授權服務器,任何一臺PC電腦訪問攜帶有效token的url,PC和服務器之間通過cookie來保持這個token; 提出問題:使用php curl該如何實現這個登陸模擬? 以下是我的代碼: <?php $cookie_file = 'E:\work\cookie.txt'; $login_url = 'http://www.aaa.com/dologin'; $post_fields = 'userName=aa&password=bb&service_key=cc' $post_fields.= '&callback_url=http%3A%2F%2Fwww.aaa.com&hostUrl=http%3A%2F%2Fwww.aaa.com'; $ch = curl_init($login_url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); $contents=curl_exec($ch); curl_close($ch); preg_match('/(https:\/\/account\.usercenter\.com\/tokenLogin[^\s]*)\s*/',$contents,$match); //var_dump($match);die; 此處匹配出攜帶token的url $ch = curl_init($match[1]); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36 OPR/41.0.2353.46"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); $result = curl_exec($ch); curl_close($ch); $url='http://www.aaa.com/1.html'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); //curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36 OPR/41.0.2353.46"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $contents = curl_exec($ch); curl_close($ch); var_dump($contents);//這里輸出的頁面顯示沒有登陸成功(這里是問題所在) ?> 不知通過cookie能不能實現這種登陸?各位大俠請指點~~
查看完整描述

3 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

按流程有 肯定就是對的

查看完整回答
反對 回復 2019-03-01
  • 3 回答
  • 0 關注
  • 915 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號