Tôi đang cố gắng truy cập tác nhân người dùng bằng Flask, nhưng tôi không thể tìm thấy tài liệu về nó hoặc nó không cho tôi biết.
Tôi đang cố gắng truy cập tác nhân người dùng bằng Flask, nhưng tôi không thể tìm thấy tài liệu về nó hoặc nó không cho tôi biết.
Câu trả lời:
from flask import request
request.headers.get('User-Agent')
Bạn cũng có thể sử dụng request.user_agent
đối tượng chứa các thuộc tính sau được tạo dựa trên chuỗi useragent:
== request.headers.get('User-Agent')
)flask.request.user_agent.string
Nếu bạn dùng
request.headers.get('User-Agent')
bạn có thể nhận được: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, như Gecko) Chrome / 45.0.2454.101 Safari / 537.36
Nếu bạn dùng
request.user_agent
bạn có thể nhận được như thế này:
UA thường không chứa ngôn ngữ. Nếu bạn muốn đặt ngôn ngữ trong trình duyệt, bạn có thể sử dụng
request.accept_languages
Nó sẽ cung cấp cho bạn danh sách các ngôn ngữ. Ví dụ
LanguageAccept([('en-US', 1), ('en', 0.5)])
Để truy cập giá trị đầu tiên, bạn có thể sử dụng
request.accept_languages[0][0]
điều này sẽ dẫn đến chuỗi
'en-US'
Thông tin chi tiết về tiêu đề 'accept_language': https://www.w3.org/International/questions/qa-lang-priorities
Câu hỏi đòi hỏi nhiều thông tin hơn. Thư viện này dường như phù hợp với dự luật thu thập nhiều thông tin từ bình và có các lệnh gọi ví dụ để lấy thông tin này ra khỏi ngữ cảnh ứng dụng.
https://pythonhosted.org/Flask-Track-Usage/
Việc sử dụng được lưu trữ ở định dạng này:
[
{
'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,
},
{
....
}
]
Đây là một trong những nơi trong thư viện nơi dữ liệu được thu thập:
https://github.com/ashcrow/flask-track-usage/blob/master/src/flask_track_usage/ init .py quanh dòng 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
}