J'essaie d'obtenir un accès à l'agent utilisateur avec Flask, mais je ne trouve pas la documentation ou elle ne me le dit pas.
from flask import request
request.headers.get('User-Agent')
Vous pouvez également utiliser l'objet request.user_agent
qui contient les attributs suivants, créés en fonction de la chaîne useragent:
== request.headers.get('User-Agent')
)flask.request.user_agent.string
Si tu utilises
request.headers.get('User-Agent')
vous pouvez obtenir: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/45.0.2454.101 Safari/537.36
Si tu utilises
request.user_agent
vous pouvez obtenir comme ça:
UA ne contient généralement pas de langue. Si vous souhaitez obtenir la langue définie dans le navigateur, vous pouvez utiliser
request.accept_languages
Cela vous donnera une liste de langues. Par exemple.
LanguageAccept([('en-US', 1), ('en', 0.5)])
Pour accéder à la première valeur, vous pouvez utiliser
request.accept_languages[0][0]
ce qui entraînera une chaîne
'en-US'
Informations détaillées sur l'en-tête 'accept_language ": https://www.w3.org/International/questions/qa-lang-priorities
La question demande beaucoup plus d'informations. Cette bibliothèque semble faire l’objet de la collecte d’une grande quantité d’informations en flacon et propose des exemples d’appel pour extraire ces informations du contexte de l’application.
https://pythonhosted.org/Flask-Track-Usage/
L'utilisation est stockée dans ce format:
[
{
'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,
},
{
....
}
]
Voici l'un des endroits de la bibliothèque où les données sont collectées:
https://github.com/ashcrow/flask-track-usage/blob/master/src/flask_track_usage/init .py autour de la ligne 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
}