ホームページ > バックエンド開発 > PHPチュートリアル > PHPカールはログインをシミュレートし、ヘルプ用のCookieを取得します

PHPカールはログインをシミュレートし、ヘルプ用のCookieを取得します

WBOY
リリース: 2016-06-23 14:23:25
オリジナル
1121 人が閲覧しました

初心者がログインをシミュレートするために PHP カールを使用する方法を学んでいます。weiphon フォーラムにログインするときに、次のコードを使用して正常にログインします。しかし、www.xiaomi.com にログインできません。 。 Cookieの取得に問題があるのか​​と思いました。この問題の解決を手伝ってください。何も考えずに夜も眠れない!

<?php	$cookie_file=tempnam('./temp','cookie');	$login_url='https://account.xiaomi.com/pass/serviceLoginAuth';	$post ='user&pwd=&sid=eshop&callback=http%3A%2F%2Forder.xiaomi.com%2Flogin%2Fcallback%3Ffollowup%3Dhttp%253A%252F%252Fwww.xiaomi.com%252F%26sign%3DMjk4NmVlYzNiOWY5YTkwMjExNzg5MjkyNzE3ZmIxOGM4YTBiMDk1Mg%2C%2C&_sign=f%2FKB8SAfmaLZ0s28kcLtBSmZlEM%3D&_json=true'//避免不必要的麻烦 post的具体帐号密码去掉了	$ch=$curl=curl_init($login_url);	curl_setopt($ch,CURLOPT_HEADER,0);	curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);	curl_setopt($ch,CURLOPT_POST,1);	curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);	curl_setopt($ch,CURLOPT_POSTFIELDS,$post);	curl_exec($ch);	curl_close($ch);	$url="http://www.xiaomi.com/index.php";	$ch=curl_init($url);	curl_setopt($ch,CURLOPT_HEADER,0);	curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);	curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);	$contents=curl_exec($ch);	curl_close($ch);		?>
ログイン後にコピー


ディスカッションに返信 (解決策)

19 行目を削除

<?php    $url="http://www.xiaomi.com/index.php";    $ch=curl_init($url);    curl_setopt($ch,CURLOPT_HEADER,0);    curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);    //curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);    echo $contents=curl_exec($ch);    curl_close($ch);
ログイン後にコピー

テスト成功

ただし、これでは模擬アカウントでログインした場合の効果は得られません。 xiaomiのホームページを集めてみました。

つまり、まだ提出されていないデータがあるということです。例:
curl_setopt($ch, CURLOPT_REFERER,
投稿データが不完全:
2週間以内の自動ログインの入力フラグ: auto=1
Webページ内のフォームのその他の値など

$login_url= 'https://account .xiaomi.com/pass/serviceLoginAuth';
$login_url='https://account.xiaomi.com/pass/serviceLoginAuth2';

<form method="post" action="/pass/serviceLoginAuth2" id="loginForm" onsubmit="return validate_form()">	<input type="hidden" name="passToken" id="passToken" value="" />        <div class="input-field clearfix" id="loginId">          <input type="text" id="user_ph" class="input_kuang item errortip" value="邮箱/手机号码/小米ID" style="color:#999;display:none;"/>          <input type="text" name="user" value="" id="user" class="input_kuang item errortip" placeholder="邮箱/手机号码/小米ID" isRequired="true" rule="(^[\w.\-]+@(?:[a-z0-9]+(?:-[a-z0-9]+)*\.)+[a-z]{2,6}$)|(^1[3|4|5|8]\d{9}$)|(^\d{3,}$)|(^\++\d{2,}$)" autocomplete="off"/>          <span class="littlepop"><!-- 错误提示小气泡 -->            <span class="popmessage error_tip">              <span class="error_icontwo"></span><span id="errorTip">帐户名错误</span>            </span>            <span class="popmessage empty_tip">              <span class="error_icontwo"></span><span>请输入帐户名</span>            </span>            <i class="little_corner"></i>          </span>        </div>        <div class="input-field clearfix" id="loginPass">          <input type="text" id="pwd_ph" value="密码" class="input_kuang item errortip" style="color:#999;display:none;"/>          <input type="password" name="pwd" class="input_kuang item errortip" id="pwd" placeholder="密码" isRequired="true" autocomplete="off"/><!-- error_put为出现错误时的黄框 -->          <span class="littlepop">            <span class="popmessage empty_tip">              <span class="error_icontwo"></span><span>请输入密码</span>            </span>             <i class="little_corner"></i>          </span>          <input type="hidden" name="callback" value="https://account.xiaomi.com">          <input type="hidden" name="sid" value="passport">          <input type="hidden" id="qs" name="qs" value="%3Fsid%3Dpassport"/>          <input type="hidden" name="hidden" value="">          <input type="hidden" name="_sign" value="KKkRvCpZoDC+gLdeyOsdMhwV0Xg=">        </div>                <div class="cooke">          <label for="auto"><input type="checkbox" id="auto" name="auto" value="true" class="Mradio val_mT" /><span class="val_m">两周内自动登录</span></label>        </div>        <div class="sub_log clearfix">          <div class="sub_login flt_l"><input type="submit" class="no_bg" value="登录"/></div>          <a href="/pass/forgetPassword">忘记密码?</a>        </div>      </form>
ログイン後にコピー

すべての <入力タイプ="hidden"
値、passToken は js を使用して生成できます

アイデアをありがとう、もう一度試してみます~

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート