2009-05-29 14 views
45

任意のヘルパーライブラリ解析HTTP User-Agent文字列確実</p> <ol> <li>ブラウザ</li> <li>ブラウザのバージョン</li> <li>OS</li> </ol> <p>それともを検出するために、PythonでのUser-Agent文字列を解析するための最良の方法は何

+0

機能の検出のためのブラウザのOSとバージョンによりますが、それは良い戦略ではありません。どのような問題を解決しようとしていますか? –

+1

私たちのウェブアプリケーション用の簡単なチケットレポーターフォームがあります。そして、私たちは頻繁にユーザーにbroswer/OSなどを尋ねるので、事前に検出してユーザーに確認するようにしてください。 これは簡単ではないが、ユーザーエージェントをダンプするだけですが、ユーザーが別のブラウザを使用してチケットを送信している可能性があるので、質問する必要があります。 – Shekhar

+0

Pythonにフォームをレンダリングさせ、Javascriptを使用して入力フィールドの値を現在のOSの値に変更することができます。 – NerdyNick

答えて

66

少し遅くなることがあります。)

は、最後に私は、すなわち自分自身を書く提案#1で行くことにしました。私はその結果に満足しています。それはここに私がなど

パッチを適用送る/変更/自由にお使いください - Hicro Keeさんによって>http://pypi.python.org/pypi/httpagentparser

+0

これは携帯電話で特にうまく機能していないようです。特に、ブラックベリーは検出されません。 (あなたはそれを書くために私の+1を持っていますが) –

+4

@Jason Sundramエージェントの文字列と期待される結果を提供することによって助けてくれれば、ブラックベリー、その他のものをサポートすることができます。 https://github.com/shon/httpagentparser/issues – Shekhar

+0

私は比較に興味がありましたが、それは公正な点です。引っ込められた –

2

しかし、Python側でこれをすべて解析したい場合は、XML/INIファイルはhttp://browsers.garykeith.com/downloads.aspで提供され、ユーザーエージェントのルックアップを行います。これは、phpのget_browser()関数で使用されるのと同じファイルです。

3

Th Browser Cap Parserが有効です。それは自分の質問に答えるけれども...

10

UASparser for Python 。バージョン・チェッキングを使用してリモート・サーバーからデータファイルとキャッシュを自動更新します。

+0

私はUA Parserもお勧めします。 – Dexter

6

the full corpus of Firefox User Agentsに対してこれらの提案を実行したところ、比較のためにバージョン番号の解析が非常に悪いことがわかりました。

これが必要な場合は、プロジェクトの一部であったUAparserをご覧ください。 Documentation here.

+6

私はもっと最新のバージョンがこのレポにあると思う:https://github.com/tobie/ua-parser – mbarkhau

8

Werkzeugには、ユーザーエージェントの構文解析が組み込まれています。

http://werkzeug.pocoo.org/docs/0.10/utils/#module-werkzeug.useragents

+0

興味深い。 私はすぐにコードをチェックしました。これは、本当にシンプルで素敵なコードです。基本的に、エージェント文字列と照合する一連の正規表現です。興味深いのは、それがどのように実行されるかです。 Werkzeugの1つのプラス点は、httpagentparaserの利点はosのバージョンも検出するという点で、言語を検出することです。 – Shekhar

+0

リンクがありません、更新する必要があります – Siddharth

5

この質問に対する他の応答は今かなり古いです。私はブラウザユーザーエージェントの解析の新しい標準がBrowserscopeのuser agent parserだと信じています。 まったく同じマッチングパターンmany other languagesと便利に利用できるまた

。 JavaScriptでいくつかのUA文字列を解析し、解析の一貫性を心配する必要はありません。

関連する問題

 関連する問題