Werkzeug: Motorola One MacroAndroidフォンのWerkzeugユーザーエージェント解析がオフになっています

作成日 2020年09月03日  ·  8コメント  ·  ソース: pallets/werkzeug

フラスコアプリでこれに気づきましたが、werkzeugを使用してユーザーエージェント情報を解析し、フラスコリクエストオブジェクトとスタンドアロンのwerkzeugユーザーエージェントパーサーの両方で同じ動作が見られました。

「macro」(デバイスモデル)の部分文字列「mac」の存在がそれを捨てているように見えます。 ただし、それは明確な「Linux」や「Android9」で上書きする必要があると思います。

>>> from werkzeug.useragents import UserAgent
>>> UserAgent("Mozilla/5.0 (Linux; Android 9; motorola one macro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.111 Mobile Safari/537.36").platform
'macos'

このuseragent文字列のplatformは「android」であると思います。

環境:Linux

  • Pythonバージョン:3.7.3
  • Werkzeugバージョン:1.01
bug user-agent

最も参考になるコメント

これを社内で行うのではなく、 ua-parserライブラリへの依存関係を追加することを検討できます。 私はプロジェクトのレビューを行い、非常に大きなテストセットを持つ非常に人気のあるクロスランゲージコアに基づいています。 Pythonバージョンは非常に幅広いPythonバージョンをサポートしており、コード自体はかなり安定しているはずです。

全てのコメント8件

問題は、 UserAgentParserがキーワードを素朴に検索してプラットフォームを見つけることです。

関連するコードスニペットは次のとおりです。

    platforms: Any = (
        (" cros ", "chromeos"),
        ("iphone|ios", "iphone"),
        ("ipad", "ipad"),
        (r"darwin|mac|os\s*x", "macos"),
        ("win", "windows"),
        (r"android", "android"),
        ...

あなたの場合、 "darwin|mac|os\s*x"は、 "android"が検索される前に、一致するものを見つけます。 私がユーザーエージェントヘッダーについて見てきたことから、それらは大きく異なる可能性があります。 おそらく、より多くの経験を持っている人は、より良い正規表現パターンを提案することができます。 私たちの単純なキーワード検索では不十分であり、あなたのような見過ごされているバグがもっとあるのではないかと心配しています。

これを社内で行うのではなく、 ua-parserライブラリへの依存関係を追加することを検討できます。 私はプロジェクトのレビューを行い、非常に大きなテストセットを持つ非常に人気のあるクロスランゲージコアに基づいています。 Pythonバージョンは非常に幅広いPythonバージョンをサポートしており、コード自体はかなり安定しているはずです。

あなたがそれをクラックしたくないのでなければ、私はPRを提供します。 良い解決策のようです。

ひびを入れたいと思います。 ありがとう!

ラッド! ありがとう!

このエージェントのマッチング方法を修正するためにマッチングルールを調整するPRを検討できてうれしいですが、これに対する依存関係は追加しません。

ua-parserパッケージは、正規表現パターンを使用して適切なユーザーエージェントを見つけます(私たちのアプローチに似ていますが、明らかにより徹底的です)。 それらの正規表現パターンは、最大5500行のコードを使用します

ua-parserを依存関係として追加するか、コードの一部をWerkzeugに含めることなく、完全なUserAgentParserを提供できないことは明らかだと思います。

または、readmeやドキュメントにメッセージを追加して、 UserAgentParserが基本的であり、多くのシナリオで機能しないことを説明することもできます。

このプラットフォーム文字列に対処するために#1989を開きましたが、ここでの残りの会話の完全な修正にはほど遠いです。

このページは役に立ちましたか?
0 / 5 - 0 評価