12

ユーザー エージェント文字列を分析して、それらがモバイル デバイスによって生成されたかどうかを判断する方法を探しています。これは Java ベースであり、統計を生成するための Hadoop での大規模なバッチ ログ ファイル分析で使用できる必要があります (つまり、Web サービスは適切ではありません)。

私はWURFLを見たことがありますが、バイナリ モバイル/モバイルではない応答が必要なだけであることを考えると、ライセンス料は法外に思えます。

これまでのところ、私はUADetectorを使用してきましたが、これは私が必要としているものとほぼ同じです。ただし、いくつかの制限に遭遇しました。私のテストでは、ユーザー エージェントがモバイル デバイスからのものであると判断するのに十分な情報を提供する多くのユーザー エージェント文字列を見つけましたが、UADetector によって UNKNOWN として報告されました。

たとえば、標準化が不十分な Android アプリは、UA 文字列「Android」を送信できます。モバイル デバイスから送信されたことを知るにはこれで十分ですが、UADetector はこの UserAgentType を MOBILE_BROWSER ではなく UNKNOWN として報告します。

Apache Mobile FilterLite Device Detectionは正しいことを行いますが、Java から使用できるものが必要です。

誰もがより良い解決策を推奨できますか?

4

5 に答える 5

6

私は、モバイル デバイスを検出するための無料のオープン ソース クロスプラットフォーム ライブラリである MobileESP プロジェクトの創設者であり、維持管理者でもあります。まだまだ大活躍です!:-)

www.mobileesp.org

MobileESPは、バイナリの「is mobile」応答のみを返します。iOS、Android、Windows Phone などのプラットフォーム別、または「iPhone Tier」スマートフォンとタブレットなどのデバイス カテゴリ別に検出できます。API ページを簡単に確認してください。

ご存じかもしれませんが、useragent 文字列はさまざまです。ブラウザがデバイスに同梱されている場合、製造元がカスタマイズする場合があります。たとえば、HTC は多くの場合、ネイティブ Android ブラウザーのユーザーエージェント文字列をカスタマイズします。

Google は、OEM がユーザー エージェントをカスタマイズする方法に関する推奨事項を提供します。デバイスを電話と見なす必要がある場合は、文字列に「モバイル」要素という単語を含めることをお勧めします。ただし、デバイスをタブレットと見なす必要がある場合は、文字列に "mobile"を含めないでください。もちろん、この推奨事項への準拠は大きく異なります。

Opera や Maxthon などのサード パーティのブラウザは、useragent 文字列に好きなものを入れることができます。名前のない特定の「新しい」ブラウザは、各プラットフォームのユーザーエージェント文字列に正しい情報を入れるという非常に貧弱な仕事をしています (たとえば、Android と iOS のバージョン)。これらのブラウザーから多くのトラフィックを取得し、プラットフォームおよびソフトウェア リビジョンごとに正確なユーザー エージェント値を追跡することに投資したい場合を除き、できることはあまりありません。

とにかく、MobileESP は、ページが提供されるときにページごとに検出を行うというビジョンを持って作成されました。私は意図的にコードを非常に読みやすくカスタマイズしやすいように書きました。

バッチ処理を行うには、次のようにします。

1.) コンストラクターで、initDeviceScan() メソッドをコメントアウトします。これは、一括処理には必要ありません。

2.) UserAgent と空の文字列をコンストラクタ (UAgentInfo()) に渡します。

3.) 次に、興味のある検出メソッドを実行します。ユーザーのスキャンに基づいて、時間を節約するためにそれらを実行する順序を慎重に検討してください。

たとえば、ほとんどのユーザーが iPhone を使用しており、それが関心のある検出基準の 1 つである場合は、最初にそのチェックを実行します。この例の場合、BlackBerry メソッドを最初に実行しないことは間違いありません。

私の連絡先情報は、ソース コードと Web サイトにあります。質問がある場合、またはバグに遭遇した場合は、メモを送ってください。MobileESP.org の Web サイトでいくつかのヒントを確認してください。

Aniket さん、あなたのプロジェクトの成功をお祈りします。

  • アンソニー
于 2013-12-09T01:45:44.267 に答える
4

別のスレッドでは、次のライブラリを使用することを提案しています:

https://github.com/ahand/mobileesp/blob/master/Java/UAgentInfo.java

これは問題ないようです。

于 2013-09-17T09:10:28.767 に答える
2

JSP (Tomcat 用) で Apache Mobile Filter の値を読み取る方法は?

mod_jk を設定する必要がある httpd.conf ファイルの前に、次のように追加します。

JkEnvVar AMF_IS_MOBILE undefined

Java コードは次のとおりです。

request.getAttribute("AMF_IS_MOBILE")

から: http://wiki.apachemobilefilter.org

于 2013-03-12T22:40:05.093 に答える
0

iPhone、Android、およびその他のモバイルデバイスを検出するためJava user-agentに使用できます。Spring を使用している場合は、必要に応じて以下のコードをカスタマイズできます。

@Override
public ModelAndView redirectToAppstore(HttpServletRequest request) {
    String userAgent = request.getHeader("user-agent").toLowerCase();
    String iphoneStoreUrl = "IPONE_STORE_URL";
    String androidStoreUrl = "ANDROID_STORE_URL";
    if (userAgent.contains("iphone"))
        return new ModelAndView("redirect:" + iphoneStoreUrl);
    else if (userAgent.contains("android"))
        return new ModelAndView("redirect:" + androidStoreUrl);

    return new ModelAndView("redirect:/");
}
于 2016-04-11T05:22:13.853 に答える