この記事では、主に、シミュレートされたログインおよびデータ キャプチャ機能を実装するための 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 サイトの他の関連記事を参照してください。