ホームページ  >  記事  >  バックエンド開発  >  カールに基づいて正方教務システムへのバックグラウンドリモートログインを実現するPHPメソッド

カールに基づいて正方教務システムへのバックグラウンドリモートログインを実現するPHPメソッド

墨辰丷
墨辰丷オリジナル
2018-05-31 17:37:011579ブラウズ

この記事では、PHPのcurlの背景に基づいて正方教務システムにリモートログインする方法を主に紹介し、リモートログインを実現するためのcurlとCookieを使用したPHPの操作スキルを例の形で分析します。

この記事では、カールバックグラウンドを使用して遠隔から正方学事システムにログインする方法をベースにしたPHPの例を説明します。詳細は次のとおりです:

この問題を解決する方法を昨年から考えていましたが、今年になってようやく解決しましたが、確認コードを入力する必要があります。

360 などのチケットを取得でき、確認コードの自動認識がない場合は、問題ありません。これ以上ナンセンスなことはありません。本題に戻ります

ここでは CURL を使用する必要があります。

デザインアイデア: まずページにログインして COOKIES を取得し、次に Cookie を使用して確認コードのサーバーを見つけます。最後に、サーバーが必要とするすべての情報を提供します。

(この種の考え方は、ページにアクセスするブラウザを完全にシミュレートすることです。根本的な違いは、人間と機械であるということです)

public function index(){
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url); //填对于的URL就可以了
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); //主要cookie的路径,本保存页面cookie
 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //返回结果自动输出
 $response = curl_exec($ch);
 curl_close($ch);
}

正方教務システムのホームページにアクセスしてください。 1 つ目はページ内の HTML を取得すること、2 つ目は Cookie を取得することです。

他に何か聞きたいことはありますか? HTML を取得すると何の役に立つのでしょうか?

学務システムのホームページのHTMLをよく観察すると、多くの隠しフィールドがあり、それらのフィールドが変化していることがわかります。

つまり、すべての HTML を取得して解析し、必要なフィールドをすべて抽出するだけです

HTML 構造

データを送信するにはすべての非表示フィールドが必要であり、多すぎることはできないことがわかりましたか。

ページの効果

次に、最も重要な質問、確認コードを取得する方法について説明したいと思います。

最初はただ

<img src="xxxx/CheckCode.aspx" />

したかったんですよね?認証コードが出てきますが、それはあなたのものではないので、リモートログインを保存すると、認証コードが間違っていると言われます

それでは、どうすれば自分の認証コードを取得できますか?このとき、自然に思い浮かぶのはクッキーです。

サーバーがブラウザーリクエストが同一人物に対するものかどうかをどのように区別するかは、Cookie 内のセッション ID によって異なります

この方法です。ホームページで取得した Cookie を取得してサーバーに認証コードを要求すると、エラーが発生しますか?

public function getImg()
{
    $url = "http://xxxx/CheckCode.aspx";
    $filedir = SITE_PATH."/TMP/Cookies";
    $cookie_file = $filedir."/cookie.txt";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); //
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_TIMEOUT, "10");
    header("Content-type:image/gif"); //这个视不同图片格式不一样,请注意
    echo curl_exec($ch);
    curl_close($ch);
}

その後、他のページでこのメソッドを呼び出すと、確認コードを取得できます。

CURL の PHP リクエストとブラウザによって発行された PHP は 2 つの異なるスレッドに属しているため、Cookie は異なる方法で共有されます。

この方法でログインできますが、この方法でログインした後、すべての機能が操作できると考えないでください。それは間違いです。もう 1 つの細かい点があります。 。

要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。

関連する推奨事項:

PHP の 4 つのソート アルゴリズム [バブル ソート、挿入ソート、選択ソート、クイック ソート] の実装と効率分析

PHP 面接の質問のまとめ

PHP の導入について考えるnginx 設定

以上がカールに基づいて正方教務システムへのバックグラウンドリモートログインを実現するPHPメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。