php、curlagentのget_meta_tags()、CURL、およびユーザーエージェントの使用分析
この記事では、PHP での get_meta_tags()、CURL、およびユーザー エージェントの使用法を例とともに分析します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
get_meta_tags() 関数は、 の形式でタグを取得し、それらを 1 つのディメンションにロードするために使用されます。配列、name は要素の添字、content は要素の値です。上記の例のラベルは配列を取得できます: array('A'=>'1', 'b'=>'2')、others< meta> タグは処理されず、この関数は
タグのみを処理し、その後の
は処理されます。
ユーザー エージェントは、サーバーから Web ページをリクエストするときにブラウザーによって送信される非表示のヘッダー情報の一部です。ヘッダー情報は、ローカル キャッシュ ディレクトリ、Cookie などの複数の情報を含む配列です。は、IE、Chrome、FF などのブラウザーのタイプ宣言です
今日、Web ページの
タグを取得すると、常に null 値が返されましたが、Web ページのソース コードを直接確認するのが普通だったので、サーバーがそれを判断するように設定されているのかと思いました。まずget_meta_tags.()を使ってローカルファイルを取得し、取得したヘッダ情報をファイルに書き込むと次のようになります。コードは次のとおりです:
コードをコピーします コードは次のとおりです:
array (
'HTTP_HOST' => '192.168.30.205'、
'PATH' => 'C:/Program Files/Common Files/NetSarang;C:/Program Files/NVIDIA Corporation/PhysX/Common;C:/Program Files/Common Files/Microsoft Shared/Windows Live;C:/Program Files /Intel/iCLS クライアント/;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0/;C:/Program Files/Intel /インテル(R) マネジメント エンジン コンポーネント/DAL;C:/プログラム ファイル/インテル/インテル(R) マネジメント エンジン コンポーネント/IPT;C:/プログラム ファイル/インテル/OpenCL SDK/2.0/bin/x86;C:/プログラム ファイル/Common Files/Thunder Network/KanKan/Codecs;C:/Program Files/QuickTime Alternative/QTSystem;C:/Program Files/Windows Live/Shared;C:/Program Files/QuickTime Alternative/QTSystem/; ;%JAVA_HOME%/jre/bin;',
'SystemRoot' => 'C:/Windows',
'COMSPEC' => 'C:/Windows/system32/cmd.exe',
'PATHEXT' => '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC',
'WINDIR' => 'C:/Windows',
'SERVER_SIGNATURE' => ''、
'SERVER_SOFTWARE' => 'Apache/2.2.11 (Win32) PHP/5.2.8'、
'SERVER_NAME' => '192.168.30.205'、
'SERVER_ADDR' => '192.168.30.205'、
'SERVER_PORT' => '80'、
'REMOTE_ADDR' => '192.168.30.205'、
'DOCUMENT_ROOT' => 'E:/wamp/www',
'SERVER_ADMIN' => 'admin@admin.com'、
'SCRIPT_FILENAME' => 'E:/wamp/www/user-agent.php',
'REMOTE_PORT' => '59479'、
'GATEWAY_INTERFACE' => 'CGI/1.1'、
'SERVER_PROTOCOL' => 'HTTP/1.0'、
'REQUEST_METHOD' => 'GET'、
'QUERY_STRING' => ''、
'REQUEST_URI' => '/user-agent.php',
'SCRIPT_NAME' => '/user-agent.php',
'PHP_SELF' => '/user-agent.php',
'REQUEST_TIME' => 1400747529、
)
案の定、配列には HTTP_USER_AGENT 要素がありません。情報を確認すると、Apache には UA がありません。そのため、get_meta_tags() 関数には UA を偽造する機能がないことがわかります。それを解決する方法
その後、CURLを使用してWebページを取得しましたが、最初にUAを偽造し、取得後に正規表現を使用して
を解析するのが少し面倒でした。
偽造メソッド、コードは次のとおりです:
コードをコピーします コードは次のとおりです://cURLを初期化します
$curl =curl_init();
// クロールする必要がある URL を設定します
curl_setopt($curl, CURLOPT_URL, 'http://localhost/user-agent.php');
//ファイルヘッダをブラウザに出力するか設定します、0は出力しません
curl_setopt($curl, CURLOPT_HEADER, 0);
//UA を設定します。ここでは、ブラウザーの UA がサーバーに転送されます。値を手動で指定することもできます。
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
//結果を文字列に返すか画面に出力するように cURL パラメータを設定します。 0は画面を出力して演算結果のBOOL値を返し、1は文字列を返します
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// cURL を実行して Web ページをリクエストします
$data =curl_exec($curl);
// URL リクエストを閉じる
カール_クローズ($カール);
// 取得したデータを加工します
var_dump($data);
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/928218.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/928218.html技術記事 php、curlagent での get_meta_tags()、CURL、およびユーザー エージェントの使用法分析 この記事では、php での get_meta_tags()、CURL およびユーザー エージェントの使用法を例とともに分析します。参考のためにみんなで共有してください。詳細な分析...