Curl を使用して PHP を使用してログインをシミュレートし、データをキャプチャする手順の詳細な説明

php中世界最好的语言
リリース: 2023-03-25 21:54:01
オリジナル
1953 人が閲覧しました

今回は、PHP で Curl を使用してログインをシミュレートし、データをキャプチャする手順について詳しく説明します。PHP で Curl を使用してシミュレートされたログインとデータをキャプチャするための注意事項は何ですか? 以下は実際的なケースです。 、見てみましょう。

PHP の Curl 拡張ライブラリを使用すると、ログインをシミュレートし、ユーザー アカウントでログインした後にのみ表示できる一部のデータをキャプチャできます。具体的な実装プロセスは次のとおりです (個人的な概要):

1. まず、対応するログイン ページの HTML ソース コードを分析して、必要な情報を取得する必要があります。

(1) ログイン ページのアドレス

(2)

認証コードのアドレス (3) ログインフォームで送信する必要がある各フィールドの名前と送信方法

(4) ログインフォームを送信するアドレス

(5) さらに、キャプチャするデータがどこのアドレスであるかを知る必要があります。

2. Cookie を取得して保存します (Cookie ファイルを使用する Web サイトの場合):

$login_url = 'http://www.xxxxx';  //登录页面地址
$cookie_file = dirname(FILE)."/pic.cookie";  //cookie文件存放位置(自定义)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_exec($ch);
curl_close($ch);
ログイン後にコピー

3. 確認コードを取得して保存します (確認コードを使用する Web サイトの場合):

検証コードの識別を実装できないため、ここで行うことは、検証コードの画像をキャプチャしてローカル ファイルに保存し、それをプロジェクトの HTML ページに表示して、ユーザーに入力させ、ユーザーの入力を待つことです。アカウント番号、パスワード、確認コードを入力し、次のステップに進む前に送信ボタンをクリックしてください。

4. ログインフォームの送信をシミュレートする:

$verify_url = "http://www.xxxx";   //验证码地址
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $verify_url);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$verify_img = curl_exec($ch);
curl_close($ch);
$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存
fwrite($fp, $verify_img);
fclose($fp);
ログイン後にコピー

5. データをキャプチャする:

$ post_url = 'http://www.xxxx';   //登录表单提交地址
$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $ post_url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_exec($ch);
curl_close($ch);
ログイン後にコピー

これまでのところ、データが配置されているページがキャプチャされ、

string

変数 $data に保存されています。

キャプチャされるのは Web ページの HTML ソース コードであることに注意してください。つまり、この文字列には必要なデータが含まれるだけでなく、多くの

html タグ やその他の不要なものも含まれることになります。したがって、必要なデータを抽出したい場合は、データが保存されているページの HTML コードを分析し、文字列操作関数、通常のマッチング、その他の方法を使用して必要なデータを抽出する必要があります。

上記の方法は、httpプロトコルを使用する一般的なWebサイトに有効です。ただし、https プロトコルを使用する Web サイトへのログインをシミュレートしたい場合は、次の処理を追加する必要があります:

1. https 検証をスキップする:

$data_url = "http://www.xxxx";   //数据所在地址
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $data_url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$data = curl_exec($ch);
curl_close($ch);
ログイン後にコピー

2. ユーザー エージェントを使用する:

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
ログイン後にコピー

注:

これらのプロセスを使用すると、模擬ログインは成功しません。

上記のプログラムを使用して Web サイトへのログインをシミュレートすることは、通常は成功しますが、実際には、シミュレートされる Web サイトの特定の条件に基づいて検討する必要があります。例: 一部の Web サイトではエンコーディングが異なるため、キャプチャしたページが文字化けします。このとき、

gbk エンコーディングを utf8 エンコーディングに変換するなどのエンコーディング変換を実行する必要があります。また、オンライン バンキングなど、比較的高いセキュリティ要件を備えた Web サイトでは、インライン フレームに検証コードが配置される場合もあります。この場合、まずインライン フレームのページをクロールしてから、検証のアドレスを抽出する必要があります。そこからコードをもう一度取得してください。また、Web サイトによっては JS コードでフォームを送信する場合もあります。フォームを送信する前に暗号化などの処理も​​行われるため、直接送信すると送信できなくなります。正常にログインするには同様の処理を行った後にSubmitする必要がありますが、この場合、暗号化などのJSコード内で実行される具体的な操作、暗号化アルゴリズムが何であるかがわかれば、同様の処理を実行できます。を選択してデータを送信すると、成功することもあります。ただし、ここで重要な点が発生します。たとえば、暗号化されているものの、具体的な暗号化アルゴリズムがわからない場合、同じ操作を実行することはできません。となり、正常にログインできなくなります。この点での典型的な例は、オンライン バンキング コントロールを使用して、JS コードでフォームを送信する前に、ユーザーが送信したパスワードと確認コードに対して何らかの処理を実行します。したがって、シミュレーションすることはできません。この記事を読んで、オンライン バンキングへのログインをシミュレートできると思った人は、銀行の Web サイトへのログインを簡単にシミュレートできるでしょうか?もちろん、オンライン バンキングの制御を突破できるかどうかは別の問題です。そうは言っても、なぜ私はこの問題に遭遇したので、あまり話さないと涙が出てしまいます。 。 。

この記事の事例を読んだ後は、その方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨書籍:

PHP+MySQL で同時実行性の高いロックトランザクションを処理する手順の詳細な説明

ショッピングカートの決済方法の概要

以上がCurl を使用して PHP を使用してログインをシミュレートし、データをキャプチャする手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!