Werkzeug: рдореЛрдЯреЛрд░реЛрд▓рд╛ рд╡рди рдореИрдХреНрд░реЛ рдПрдВрдбреНрд░реЙрдЗрдб рдлреЛрди рдХреЗ рд▓рд┐рдП рд╡реЗрд░реНрдХреЗрдЬрдЧ рдпреВрдЬрд░рдПрдЬреЗрдВрдЯ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдмрдВрдж рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рд╕рд┐рддре░ 2020  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pallets/werkzeug

рдореИрдВрдиреЗ рдПрдХ рдлреНрд▓рд╛рд╕реНрдХ рдРрдк рдореЗрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реВрдЪрдирд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП werkzeug рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреЛрдиреЛрдВ рдлреНрд▓рд╛рд╕реНрдХ рдЕрдиреБрд░реЛрдз рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди werkzeug useragent рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦрд╛ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдореИрдХреНрд░реЛ" (рдбрд┐рд╡рд╛рдЗрд╕ рдореЙрдбрд▓) рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореИрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд░рд╣реА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдкрд╖реНрдЯ "рд▓рд┐рдирдХреНрд╕" рдФрд░ / рдпрд╛ "рдПрдВрдбреНрд░реЙрдЗрдб 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 рдЗрд╕ useragent рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП "android" рд╣реЛрдЧрд╛ред

рдкрд░реНрдпрд╛рд╡рд░рдг: рд▓рд┐рдирдХреНрд╕

  • рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг: 3.7.3
  • рд╡рд░реНрдХрд░реНрдЬрд╝рдЧ рд╕рдВрд╕реНрдХрд░рдг: 1.01

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдШрд░ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╢рд╛рдпрдж рдЖрдк рдпреВрдП-рдкрд╛рд░реНрд╕рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рд▓реЛрдХрдкреНрд░рд┐рдп рдХреНрд░реЙрд╕ рднрд╛рд╖рд╛ рдХреЛрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯ рд╣реИ ред рдЕрдЬрдЧрд░ рд╕рдВрд╕реНрдХрд░рдг рдЕрдЬрдЧрд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдПрдХ рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд рд╕рд░рдгреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рд╣реА рдмрд╣реБрдд рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 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 рдкреИрдХреЗрдЬ рд░реЗрдЧреЗрдХреНрд╕ рдкреИрдЯрд░реНрди (рд╣рдорд╛рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рдорд╛рди, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдЧрд╣рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрдпреБрдХреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдХреЛ рдвреВрдВрдврддрд╛ рд╣реИред рдЙрдирдХреЗ рд░реЗрдЧреЗрдХреНрд╕ рдкреИрдЯрд░реНрди рдХреЛрдб рдХреА ~ 5500 рд▓рд╛рдЗрдиреЗрдВ рд▓реЗрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ ua-parser рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдкреВрд░реНрдг UserAgentParser рдкреЗрд╢рдХрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╡рд░реНрдХрд░реНрдЬрд╝рдЧ рдореЗрдВ рдЙрдирдХреЗ рдХреЛрдб рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдо рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдбрдореА рдФрд░ / рдпрд╛ рдбреЙрдХреНрд╕ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ UserAgentParser рдмреБрдирд┐рдпрд╛рджреА рд╣реИ рдФрд░ рдХрдИ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП # 1989 рдХреЛ рдЦреЛрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдмрд╛рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕