Werkzeug: تحليل وكيل مستخدم Werkzeug متوقف عن هاتف Motorola One Macro Android

تم إنشاؤها على ٣ سبتمبر ٢٠٢٠  ·  8تعليقات  ·  مصدر: pallets/werkzeug

لقد لاحظت هذا في تطبيق flask ولكن ذلك يستخدم werkzeug لتحليل معلومات وكيل المستخدم ورأيت نفس السلوك في كل من كائن طلب flask ومحلل مستخدم werkzeug المستقل.

يبدو أن وجود السلسلة الفرعية "mac" في "الماكرو" (طراز الجهاز) يؤدي إلى إزالتها. ومع ذلك ، أشعر أنه يجب تجاوز ذلك من خلال "Linux" و / أو "Android 9".

>>> 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'

أتوقع أن يكون platform لسلسلة وكيل المستخدم هذه "android".

البيئة: لينكس

  • إصدار Python: 3.7.3
  • إصدار Werkzeug: 1.01
bug user-agent

التعليق الأكثر فائدة

بدلاً من القيام بذلك داخليًا ، ربما يمكنك التفكير في إضافة التبعية إلى مكتبة مجموعة اختبار كبيرة جدًا. يدعم إصدار 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" . من خلال ما رأيته من رؤوس وكيل المستخدم ، يمكن أن تختلف بشكل كبير. ربما يمكن للشخص الذي لديه خبرة أكبر أن يقترح أنماطًا أفضل للتعبير العادي. أنا قلق من أن بحثنا البسيط عن الكلمات الرئيسية غير كافٍ وأنه قد يكون هناك المزيد من الأخطاء غير الملحوظة مثل حالتك.

بدلاً من القيام بذلك داخليًا ، ربما يمكنك التفكير في إضافة التبعية إلى مكتبة مجموعة اختبار كبيرة جدًا. يدعم إصدار python مجموعة كبيرة جدًا من إصدارات python ويجب أن يكون الكود نفسه مستقرًا جدًا.

سوف أعرض على العلاقات العامة إلا إذا كنت تريد أن تتدخل في ذلك. يبدو أنه حل جيد.

أود أن أتصدى لها. شكرا!

راد! شكرا!

يسعدني التفكير في العلاقات العامة التي تعدل قواعد المطابقة لإصلاح كيفية مطابقة هذا الوكيل ، لكننا لن نضيف تبعية لذلك.

تعثر الحزمة ua-parser على وكيل المستخدم المناسب باستخدام أنماط regex (على غرار نهجنا ، ولكن من الواضح أنه أكثر شمولاً). تأخذ أنماط regex الخاصة بهم حوالي 5500 سطر من التعليمات البرمجية .

أعتقد أنه من الواضح أنه لا يمكننا تقديم UserAgentParser كاملًا بدون إضافة ua-parser كتبعية أو تضمين أجزاء من الكود الخاص بهم في Werkzeug.

بدلاً من ذلك ، يمكننا إضافة رسالة في الملف التمهيدي و / أو المستندات لتوضيح أن UserAgentParser أساسي ولن يعمل في العديد من السيناريوهات.

لقد فتحت # 1989 لمعالجة سلسلة النظام الأساسي هذه ولكنها بعيدة كل البعد عن الإصلاح الكامل لبقية المحادثة هنا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

ngaya-ll picture ngaya-ll  ·  8تعليقات

paihu picture paihu  ·  7تعليقات

golf-player picture golf-player  ·  10تعليقات

KangOl picture KangOl  ·  16تعليقات

abathur picture abathur  ·  13تعليقات