BLOGTIMES
2006/07/04

fopen()でURLを開いたときのUserAgent

  php 
このエントリーをはてなブックマークに追加

NP_Trackbackをいじっていて気付いたんですが、phpにおいてfopen()でURLを開いたときにデフォルトではUserAgentがきちんとセットされていないものなんですね。で、リファレンスでfopenの項目をよく読んでみると、これを解決するためのヒントが隠されていました。

PHP: fopen - Manual

注意: サポートされているプロトコルのリストは付録Mにあります。 いくつかのプロトコル(wrappersにも関連する)は context かつ/または php.ini のオプションをサポートします。 使用するプロトコルについてセットされるオプションのリストについては それぞれのページを見てください (例えば、 php.ini 上の user_agentの値は httpラッパが使用します)。

ということで、さらにuser_agentの部分を詳しく調べてみました。

デフォルトはNULL

そうしたらデフォルト値がNULLになっていました。でも、PHP_INI_ALLなので、php.iniを使わなくても、.htaccessやini_set()を使って任意の値が設定できるようです。今回のNP_Trackbackについてはインストールするだけでちゃんとした値がセットされるようにしたいので、php_ini()を使う方法にしようと思います。

ファイルシステムおよびストリーム設定オプション(抜粋)

名前: user_agent
デフォルト: NULL
変更の可否: PHP_INI_ALL
変更履歴: PHP 4.3.0 から利用可能です。

具体的にはこんな感じで変更できるようです。

ini_set('user_agent', 'UserAgentHoge'); fopen ('http://example.com/', 'r');

たまにUAがNULLの不審なアクセスが結構あるんですが、それってPHPのfopen()だったなんていうことが結構あるのかもしれませんね。どうせならデフォルトをPHPとかにしておいてくれればよかったのにと個人的には思います。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/1485
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン