ホームページ > バックエンド開発 > PHPチュートリアル > Zhengfang Academic Affairs System への模擬ログイン、リダイレクトは解決されていません>

Zhengfang Academic Affairs System への模擬ログイン、リダイレクトは解決されていません>

WBOY
リリース: 2016-06-20 12:38:07
オリジナル
1743 人が閲覧しました

<?php$login_url='http://jwxt.nbut.cn/(gnqj51blynlz1k45ufftjgux)/default_ysdx.aspx';$user='11480010126';$password='tianyun';$RadioButtonList1='学生';$__VIEWSTATE='dDw1MjQ2ODMxNzY7Oz5PMj6WMeVIzgWyGp6TS4sLvnQtaA=='; $cookie_file = tempnam('./temp','cookie');$login_url = 'http://jwxt.nbut.cn/(gnqj51blynlz1k45ufftjgux)/default_ysdx.aspx';$post_fields = array($user,$password,$RadioButtonList1,$__VIEWSTATE);//传入参数$ch = curl_init($login_url);curl_setopt($ch, CURLOPT_HEADER, 0);//显示头部curl_setopt($ch, CURLOPT_POST, 1);//post传递$header[]='User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36';curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//模拟客户端curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);//显示页面curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);//post传递值curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);//存入cookiecurl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//允许重定向curl_exec($ch);curl_close($ch);     $url='http://jwxt.nbut.cn/(gnqj51blynlz1k45ufftjgux)/xs_main.aspx?xh='.$user;$ch = curl_init($url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_POST, 1);$header[]='Referer:http://jwxt.nbut.cn/(gnqj51blynlz1k45ufftjgux)/default_ysdx.aspx';$header[]='User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36';curl_setopt($ch, CURLOPT_HTTPHEADER, $header);curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);//读取cookieecho $contents;$contents = curl_exec($ch);curl_close($ch); ?>
ログイン後にコピー


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

オンラインで待機しています。

Return

この Web サイトでは、存在します Cookie を使用してセッション ID を渡しますが、URL を介して渡します
ので、これを書き留めることはできません:
http://jwxt.nbut.cn /(gnqj51blynlz1k45ufftjgux)/default_ysdx.aspx
しかし、それはそうあるべきですこのように

$url = 'http://jwxt.nbut.cn';$u = get_headers($url, 1);$login_url = 'http://jwxt.nbut.cn' . dirname($u['Location']) . '/default_ysdx.aspx';
ログイン後にコピー
と書くと、送信されるパラメータは添字配列ではなく連想配列である必要があります
$post_fields = array(  'TextBox1' => $user = '11480010126',  'TextBox2' => 'tianyun',  'RadioButtonList1' => '学生',  '__VIEWSTATE' => 'dDw1MjQ2ODMxNzY7Oz5PMj6WMeVIzgWyGp6TS4sLvnQtaA==',  "Button1" => "  登录  ",);
ログイン後にコピー
注: gbk エンコードが必要です

ため、リダイレクトの問題ではありませんが、まったくログインしていません。

現在返されたパスワードは間違っているため、2 番目のカールの状況を観察することはできません

多くの大学が正方学務システムを使用していますか?私たちの学校も同様です

2階の分析は非常に正しいです、私は説明しているだけです!
URL http://jwxt.nbut.cn を入力すると、サーバーは Web ページにリダイレクトします。つまり、http://jwxt.nbut.cn の後に /random string/default_ysdx.aspx を追加します。このランダムな文字列は文字列はサーバー側に保存されます。だから死ぬほど書くのは間違っている。
まず、URL http://jwxt.nbut.cn をリクエストします。図に示すように、応答ヘッダー内の Location を取得します。


次に、URL を結合し、http://jwxt.nbut.cn/Location/default_ysdx.aspx URL に再度アクセスします。これがポイントです。
2: ソース コードの表示
送信されたパラメーターは、以下の表の配列ではなく、連想配列です。
いくつかの写真を切り取ります:




上記は完了です。ログインに成功しました。

私たちの学校にもこれがあります ==
しかし、Python で書くときに場所を取得するにはどうすればよいですか、ありがとう

手動 @ 2 階 @ 4 階

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