Ich versuche mit Flask auf den Benutzeragenten zuzugreifen, aber ich kann die Dokumentation nicht finden oder es sagt mir nichts.
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:
== request.headers.get('User-Agent')
)flask.request.user_agent.string
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:
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
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
}