Werkzeug: Penguraian agen pengguna Werkzeug dinonaktifkan untuk ponsel Android Motorola One Macro

Dibuat pada 3 Sep 2020  ·  8Komentar  ·  Sumber: pallets/werkzeug

Saya melihat ini di aplikasi flask tetapi yang menggunakan werkzeug untuk mengurai info agen pengguna dan melihat perilaku yang sama di kedua objek permintaan flask dan parser werkzeug useragent mandiri.

Sepertinya kehadiran substring "mac" di "makro" (model perangkat) membuatnya gagal. Namun, saya merasa itu harus diganti dengan "Linux" dan / atau "Android 9" yang jelas.

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

Saya mengharapkan platform untuk string agen pengguna ini menjadi "android".

Lingkungan: Linux

  • Versi Python: 3.7.3
  • Versi Werkzeug: 1.01
bug user-agent

Komentar yang paling membantu

Daripada melakukan ini sendiri, mungkin Anda bisa mempertimbangkan untuk menambahkan ketergantungan pada pustaka ua-parser . Saya melakukan peninjauan terhadap proyek tersebut dan didasarkan pada inti lintas bahasa yang cukup populer yang memiliki set pengujian yang sangat besar. Versi python mendukung beragam versi python dan kodenya sendiri harus cukup stabil.

Semua 8 komentar

Masalahnya adalah UserAgentParser menemukan platform dengan mencari kata kunci secara naif.

Berikut cuplikan kode yang relevan:

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

Dalam kasus Anda, "darwin|mac|os\s*x" menemukan kecocokan sebelum "android" dicari. Dari apa yang saya lihat tentang header agen pengguna, mereka dapat sangat bervariasi. Mungkin seseorang yang memiliki lebih banyak pengalaman dapat menyarankan pola ekspresi reguler yang lebih baik. Saya khawatir pencarian kata kunci sederhana kami tidak memadai dan mungkin ada lebih banyak bug yang tidak diketahui seperti milik Anda.

Daripada melakukan ini sendiri, mungkin Anda bisa mempertimbangkan untuk menambahkan ketergantungan pada pustaka ua-parser . Saya melakukan peninjauan terhadap proyek tersebut dan didasarkan pada inti lintas bahasa yang cukup populer yang memiliki set pengujian yang sangat besar. Versi python mendukung beragam versi python dan kodenya sendiri harus cukup stabil.

Saya akan menawarkan PR kecuali jika Anda ingin menerobosnya. Sepertinya solusi yang bagus.

Saya ingin mengambil celah itu. Terima kasih!

Rad! Terima kasih!

Saya senang untuk mempertimbangkan PR yang menyesuaikan aturan pencocokan untuk memperbaiki bagaimana agen ini dicocokkan, tetapi kami tidak akan menambahkan ketergantungan untuk ini.

Paket ua-parser menemukan agen pengguna yang sesuai dengan menggunakan pola regex (mirip dengan pendekatan kami, tetapi jelas lebih menyeluruh). Pola regex mereka mengambil ~ 5500 baris kode .

Saya pikir sudah jelas bahwa kami tidak dapat menawarkan UserAgentParser tanpa menambahkan ua-parser sebagai ketergantungan atau menyertakan bagian dari kode mereka ke dalam Werkzeug.

Alternatifnya, kami dapat menambahkan pesan di readme dan / atau dokumen untuk menjelaskan bahwa UserAgentParser adalah dasar dan tidak akan berfungsi di banyak skenario.

Saya telah membuka # 1989 untuk mengatasi string platform ini tetapi masih jauh dari perbaikan lengkap untuk sisa percakapan di sini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat