Saya mencoba mendapatkan akses ke agen pengguna dengan Flask, tapi saya tidak bisa menemukan dokumentasinya, atau tidak memberitahu saya.
Saya mencoba mendapatkan akses ke agen pengguna dengan Flask, tapi saya tidak bisa menemukan dokumentasinya, atau tidak memberitahu saya.
Jawaban:
from flask import request
request.headers.get('User-Agent')
Anda juga dapat menggunakan request.user_agent
objek yang berisi atribut berikut yang dibuat berdasarkan string agen pengguna:
== request.headers.get('User-Agent')
)flask.request.user_agent.string
Jika Anda menggunakan
request.headers.get('User-Agent')
Anda mungkin mendapatkan: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, seperti Gecko) Chrome / 45.0.2454.101 Safari / 537.36
Jika Anda menggunakan
request.user_agent
Anda mungkin mendapatkan seperti ini:
UA biasanya tidak mengandung bahasa. Jika Anda ingin mengatur bahasa di browser, Anda dapat menggunakan
request.accept_languages
Ini akan memberi Anda daftar bahasa. Misalnya
LanguageAccept([('en-US', 1), ('en', 0.5)])
Untuk mengakses nilai pertama, Anda dapat menggunakan
request.accept_languages[0][0]
yang akan menghasilkan string
'en-US'
Informasi mendetail tentang header 'accept_language ": https://www.w3.org/International/questions/qa-lang-priorities
Pertanyaan itu membutuhkan lebih banyak informasi. Perpustakaan ini tampaknya sesuai dengan tagihan mengumpulkan banyak informasi dari labu, dan memiliki contoh panggilan untuk mengeluarkan informasi ini dari konteks aplikasi.
https://pythonhosted.org/Flask-Track-Usage/
Penggunaan disimpan dalam format ini:
[
{
'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,
},
{
....
}
]
Berikut adalah salah satu tempat di perpustakaan tempat data dikumpulkan:
https://github.com/ashcrow/flask-track-usage/blob/master/src/flask_track_usage/ init .py di sekitar baris 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
}