ホームページ > バックエンド開発 > PHPチュートリアル > PHP は Curl を使用してシミュレートされたログインとデータ キャプチャ関数を実装するサンプル php スキル

PHP は Curl を使用してシミュレートされたログインとデータ キャプチャ関数を実装するサンプル php スキル

jacklove
リリース: 2023-04-01 19:46:02
オリジナル
1484 人が閲覧しました

この記事では、主に、シミュレートされたログインおよびデータ キャプチャ機能を実装するための PHP の Curl の使用法と、ログイン、検証、Cookie 操作、およびその他の関連実装テクニックを例の形式で分析します。 Next

この記事の例では、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. 確認コードを取得して保存します。それ (Cookie ファイルを使用する Web サイトの場合) 検証コード Web サイト):

$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);
ログイン後にコピー

説明:

検証以来コードを認識できません。ここで説明します。方法は、確認コードの画像をキャプチャしてローカル ファイルに保存し、それをプロジェクトの HTML ページに表示し、ユーザーに入力させ、ユーザーが入力するのを待ちます。アカウント番号、パスワード、確認コードを入力し、送信ボタンをクリックして次のステップに進みます。

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

$ 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);
ログイン後にコピー

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

$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);
ログイン後にコピー

これまでのところ、データが配置されているページがキャプチャされ、文字列変数 $data に保存されています。

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

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

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

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

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

$UserAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);
ログイン後にコピー

注:

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

$data = iconv("gb2312", "utf-8",$) のようにエンコーディング変換を実行する必要があります。 data) ;

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

興味があるかもしれない記事:

360 検索エンジンに自動的に含まれる php 書き換えソリューション php の例

php とイーサリアムの詳細な説明client Interactive php インスタンス

PHP cURL WeChat パブリック アカウントのインスタンスを取得します access_token php インスタンス

以上がPHP は Curl を使用してシミュレートされたログインとデータ キャプチャ関数を実装するサンプル php スキルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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