userAgentとは?

ライブラリの残りの中核を形成するLWP::Protocolクラスをまとめます。単純化のため、このクラスを直接、WWWリクエストを実行するために使うことが出来ます。代りにアプリケーション独自の動きのためにサブクラス化することもできます。
通常の使用では、アプリケーションはUserAgentクラスを作成し、タイムアウト、プロキシー、名前などのための値でそれを設定します。次に実行されるために必要があるリクエストのためにHTTP::Requestのインスタンスを作成します。そしてこのリクエストはUserAgent
request()メソッドに渡されます。これは対応するプロトコルを使ってそれを発行し、HTTP::Responseオブジェクトを返します。
このライブラリの基本的なアプローチはHTTP式通信をすべてのプロトコルスキームに使うことです。つまりgopherやftpリクエストでもHTTP::Responseオブジェクトを受け取るということです。HTTP式通信により似せるため、gopherメニューとfileのディレクトリはHTMLドキュメントに変換されます。
request()メソッドはレスポンスの内容をメモリ、ファイルへの格納、サブルーチン呼び出しの繰り返しの3つのうちの1つの方法で処理することが出来ます。request()への2番目の引数として渡された値の種類によってどれか1つを選びます。
メモリ上の場合は内容をresponseオブジェクトのスカラ'content'属性に格納することで、さらに解析する必要があるかもしれない小さなHTML応答に適しています。この変数は2番目の引数がなければ(あるいはundefであれば)使われます。
ファイル名の場合はファイル名が入っているスカラをrequest()の2番目の引数として必要とします。そして大量のメモリを必要せず、直接ファイルに書かれる必要がある大きなWWWオブジェクトに向いています。この場合request()から返されるresponseオブジェクトは空のcontent属性を持っています。もしrequestが失敗すれば、contentは空ではないかもしれません、そしてファイルは触られないでしょう。
サブルーチンの場合には、request()への2番目の引数としてコールバック・ルーチンへのリファレンスを必要とします。そして3番目の引数としてオプションのチャンクサイズを取ることも出来ます。この変数は"パイプラインの"処理を構築するために使われます。それは受取られたチャンクの処理をすべてのデータ届く前に始められます。コールバック関数は3つの引数で呼ばれます:このときに受信されたデータ、responseオブジェクトへのリファレンス、protocolオブジェクトへのリファレンスです。request()から返されるresponseオブジェクトは空のcontentを持ちます。requestが失敗すると、コールバック・ルーチンが呼ばれ、response->contentは空でないかもしれません。
requestはコールバック・ルーチンでdie()を呼ぶことによって中断させることが出来ます。dieメッセージは"X-Died"という特別なヘッダ・フィールドとして利用することが出来ます。
またこのライブラリはサブルーチン・リファレンスをrequestオブジェクトでのcontentとして使うことも許しています。このサブルーチンは呼ばれたときに内容(content)を返さなければなりません(おそらく細切れの)。もう内容がなければ、空の文字列を返さなければなりません。
このメソッドはユーザのために1回のWWWリクエストを発行し、受信したレスポンスを返します。$requestは少なくともmethod()とuri()属性は定義された値を持つHTTP::Requestオブジェクトへのリファレンスでなければなりません。$argはスカラであれば、レスポンスが格納されるファイル名として取られます。
$argがサブルーチンへのリファレンスであれば、内容のチャンクが受信されるとこのルーチンが呼ばれます。オプションの$size引数は適切なチャンク・サイズのためのヒントとして取られます。
リダイレクトとセキュリティを含めて、リクエストを処理します。このメソッドは実際にはいくつかの別の簡単なリクエストを送信するかもしれません。引数はsimple_request()のものと同じです。
このメソッドはなにかリダイレクトをしようとする前に、request()によって呼ばれます。それはリダイレクトをすることが許されているのであればtrueを返さなければなりません。サブクラスはこれをオーバーライドしたいかもしれません。デフォルトの実装ではPOSTリクエストではFALSEを、それ以外にはTRUEを返します。
realmのために使われるユーザ名、パスワードを設定します。代わりにget_basic_credentials()メソッドを特殊化するのにより便利です。
Authentication)により保護されているRealmのためのcredenialの取り出しのためにrequest()によって呼ばれます。リストにあるユーザ名とパスワードを返さなければなりません。認証解決の試みを中断させるためにはundefを返してください。
この実装は単に既に格納されているメンバー変数のセットをチェックします。サブクラスはこのモジュールを上書きできます。例えばユーザにユーザ名/パスワードを尋ねるなど。この例はこのライブラリと一緒に配布されるlwp-requestプログラムにあります。
ネットワーク上でユーザ・エージェントを識別するために使われるproductトークンを取得/設定します。エージェントの値はリクエストの"User-Agaent"ヘッダとして送信されます。デフォルトのエージェント名は"libwww-perl/#.##"で、"#.##"はこのライブラリのバージョンで置き換えられます。
user agent文字列は1つもしくはそれ以上の、オプションで"/"文字で区切られたバージョン番号がついた単純な製品識別子です。例を以下に示します:
e-mailアドレスを取得/設定します。アドレスはRFCで定義されているように、機械で利用できなければなりません。fromの値はリクエストでの"From"ヘッダとして送信されます。デフォルトはありません。例: $ua->from('gaas@cpan.org');
秒単位でタイムアウト(timeout)を取得/設定します。デフォルトのtimeout()の値は180秒、つまり3分です。
オブジェクトを取得/設定します。デフォルトではなにもcookie_jarを持ちません。つまり自動的には"Cookie"ヘッダをリクエストに追加しません。
HTMLドキュメントの<head>セクションからレスポンス・ヘッダを初期化すべきかどうかを示す値を取得/設定します。デフォルトはTRUEです。何をしているのかわからなければ、これをoffに変えないで下さい。
レスポンスの内容(content)の大きさの制限を取得/設定します。デフォルトはundefで、これは制限なしを意味します。大きさの制限を越えているために、戻されたレスポンスの内容(content)が一部だけであれば、"X-Content-Range"ヘッダがレスポンスに追加されます。
ライブラリが指定されたスキームを現在、サポートしているかどうかを聞くために使うことができます。スキームには('http'や'ftp')文字列やURIオブジェクト・リファレンスを指定できます。
If-Modified-Sinceを使い、Content-Lengthをチェックしながら、URLによって識別されるドキュメントを取得し、格納します。レスポンス(response)オブジェクトへのリファレンスを返します。
最初の形式はそのURLがメソッドの最初に引数のリストに入っているアクセス・メソッド、つまり'http'と'ftp'のプロキシーのために使われることを指定します。
2番目の形式は1つのアクセス機能のためのプロキシーURLを指定するための短縮した形式を示しています。
Cshまたはtcshユーザは、これらの環境変数を定義するためにsetenvコマンドを使わなければなりません。

[ 31] LWP::UserAgent - WWW ユーザ・エージェント クラス
[引用サイト]  http://homepage3.nifty.com/hippo2000/perltips/LWP/UserAgent.html

UserAgentスパム - SEOコラム:環境変数のUserAgent(ユーザエージェント)にハイパーリンクを埋め込んだSEOスパム
時間があれば書こうと思っているのが環境変数のreferer(referrerとも)を使ったアフィリエイトです。
「え?、アフィリエイトとSEO?」と思われる方もいらっしゃるかもしれませんが、この2つを両立できる方法が環境変数のrefererなのです。従来型のアフィリエイトASPでは(広告主にとって)SEO効果はほとんど無いのですが、これを解決することは実は簡単なのです。実際に「広告主へのSEO効果」をウリにしているアフィリエイト会社が幾つかあります。
「ちょっとインチキ臭い」といえば確かにそうですが、SEOスパムなのかどうかは意見が分かれるところでしょう。
さて、表題のUserAgentスパムなのですが、これも環境変数のUserAgentを使ってページ外要因を上げようというものです。
以前から理論的には可能だと分かっていましたが、該当するスパマーを実際に見つけたのでメモ代わりに記しておきます。
この「Access Report」というページは(推測ですが多分)無料で配布されているアクセス解析用のcgiプログラムをインストールしたページです。
もちろん、このcgi配布元が自分のサイトへのリンクを設定しているのであれば問題ありません。しかし、実際には、cgi配布元とは無関係なスパマーが自分のサイトへのURLを各ページに埋め込むことに成功(?)しているのです。
これらのページは下記のように表示されます。このスパムのイカサマは「○○○○○ Version 1.46」に隠されています。
このアクセス解析プログラムで表示される「ブラウザ」の部分は、一般に、環境変数のUserAgentの値を利用します。「MSIE6」というのはMS社のIEバージョン6のことです。
そして「○○○○○ Version 1.46」ですが、確かに「○○○○○」というブラウザはあります。しかし、このスパムは、UserAgentを改竄して「○○○○○」を勝手に名乗り、それにプラスして自分のURLをUserAgentの中に付け加えて、あちらこちらに足跡を残しているという具合です。
ちょっと難しそうに見えますが、実は簡単。UserAgentを変更するプラグインは幾つも出回っています。それを利用して、自分のサイトへのリンクを付け加えれば完了、というわけです。(実はこのSEOスパムを実施している人はSEOに詳しくて、もう少し高度なテクも使っていますが、その方法はあえて公開しません。)
困ったことに、GoogleもYSTも現時点ではスパム扱いをできていません。堂々と上位に表示されています。(それゆえに私も発見することが出来たのですが。)
ショッピングカート(ショップギア®)|クレジットカード決済|アクセス解析|のブログ|買いパラ®

[ 32] UserAgentスパム - SEOコラム
[引用サイト]  http://www.sem-seminar.com/seo_column05.html



お気に入り



  • track feed
    • seo