Próbuję uzyskać dostęp do agenta użytkownika za pomocą Flaska, ale albo nie mogę znaleźć dokumentacji na jego temat, albo nic mi nie mówi.
Próbuję uzyskać dostęp do agenta użytkownika za pomocą Flaska, ale albo nie mogę znaleźć dokumentacji na jego temat, albo nic mi nie mówi.
Odpowiedzi:
from flask import request
request.headers.get('User-Agent')
Możesz także użyć request.user_agent
obiektu, który zawiera następujące atrybuty, które są tworzone na podstawie ciągu useragent:
== request.headers.get('User-Agent')
)flask.request.user_agent.string
Jeśli użyjesz
request.headers.get('User-Agent')
możesz dostać: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, jak Gecko) Chrome / 45.0.2454.101 Safari / 537.36
Jeśli użyjesz
request.user_agent
możesz otrzymać taki:
UA zwykle nie zawiera języka. Jeśli chcesz ustawić język w przeglądarce, możesz użyć
request.accept_languages
To da ci listę języków. Na przykład
LanguageAccept([('en-US', 1), ('en', 0.5)])
Aby uzyskać dostęp do pierwszej wartości, możesz użyć
request.accept_languages[0][0]
co spowoduje string
'en-US'
Szczegółowe informacje o nagłówku „accept_language”: https://www.w3.org/International/questions/qa-lang-priorities
Pytanie prosi o dużo więcej informacji. Wydaje się, że ta biblioteka pasuje do zbierania dużej ilości informacji z kolby i zawiera przykładowe wywołania wyciągania tych informacji z kontekstu aplikacji.
https://pythonhosted.org/Flask-Track-Usage/
Wykorzystanie jest przechowywane w tym formacie:
[
{
'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,
},
{
....
}
]
Oto jedno z miejsc w bibliotece, w którym gromadzone są dane:
https://github.com/ashcrow/flask-track-usage/blob/master/src/flask_track_usage/ init .py wokół linii 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
}