webentwicklung-frage-antwort-db.com.de

Wie bekomme ich den User Agent mit Flask?

Ich versuche mit Flask auf den Benutzeragenten zuzugreifen, aber ich kann die Dokumentation nicht finden oder es sagt mir nichts.

92
repalviglator
from flask import request
request.headers.get('User-Agent')

Sie können auch das Objekt request.user_agent verwenden, das die folgenden Attribute enthält, die basierend auf der Useragent-Zeichenfolge erstellt werden:

  • plattform (Windows, Linux, Macos usw.)
  • browser (Chrome, Firefox, Msie usw.)
  • ausführung
  • sprache
  • zeichenfolge (== request.headers.get('User-Agent'))
155
ThiefMaster
flask.request.user_agent.string
21

Wenn du benutzt

request.headers.get('User-Agent')

sie können erhalten: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/45.0.2454.101 Safari/537.36

Wenn du benutzt

request.user_agent

sie können so bekommen:

  • user_agent.platform: windows
  • user_agent.browser: chrome
  • user_agent.version: 45.0.2454.101
  • user_agent.language: Keine
  • user_agent.string: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/45.0.2454.101 Safari/537.36
16
wyx

UA enthält normalerweise keine Sprache. Wenn Sie die Sprache im Browser einstellen möchten, können Sie verwenden 

request.accept_languages

Es wird Ihnen eine Liste von Sprachen geben. Z.B. 

LanguageAccept([('en-US', 1), ('en', 0.5)])

Um auf den ersten Wert zuzugreifen, können Sie verwenden

request.accept_languages[0][0]

was zu einer Zeichenfolge führt

'en-US'

Detaillierte Informationen zum Header "accept_language": https://www.w3.org/International/questions/qa-lang-priorities

1
jud

Die Frage bittet um viel mehr Informationen. Diese Bibliothek scheint der Rechnung des Sammelns vieler Informationen aus der Flasche zu genügen, und es gibt beispielhafte Aufrufe, um diese Informationen aus dem Anwendungskontext herauszuholen.

https://pythonhosted.org/Flask-Track-Usage/

Die Nutzung wird in diesem Format gespeichert:

[
    {
            'url': str,
            'user_agent': {
                'browser': str,
                'language': str,
                'platform': str,
                'version': str,
            },
            'blueprint': str,
            'view_args': dict or None
            'status': int,
            'remote_addr': str,
            'xforwardedfor': str,
            'authorization': bool
            'ip_info': str or None,
            'path': str,
            'speed': float,
            'date': datetime,
    },
    {
        ....
    }
]

Hier ist einer der Orte in der Bibliothek, wo die Daten gesammelt werden:

https://github.com/ashcrow/flask-track-usage/blob/master/src/flask_track_usage/init .py um die Zeile 158

    data = {
        'url': ctx.request.url,
        'user_agent': ctx.request.user_agent,
        'server_name': ctx.app.name,
        'blueprint': ctx.request.blueprint,
        'view_args': ctx.request.view_args,
        'status': response.status_code,
        'remote_addr': ctx.request.remote_addr,
        'xforwardedfor': ctx.request.headers.get(
            'X-Forwarded-For', None),
        'authorization': bool(ctx.request.authorization),
        'ip_info': None,
        'path': ctx.request.path,
        'speed': float(speed),
        'date': int(time.mktime(current_time.timetuple())),
        'content_length': response.content_length,
        'request': "{} {} {}".format(
            ctx.request.method,
            ctx.request.url,
            ctx.request.environ.get('SERVER_PROTOCOL')
        ),
        'url_args': dict(
            [(k, ctx.request.args[k]) for k in ctx.request.args]
        ),
        'username': None,
        'track_var': g.track_var
    }
0
phyatt