ফ্লাস্কের সাহায্যে আমি কীভাবে ব্যবহারকারী এজেন্ট পেতে পারি?


107

আমি ফ্লাস্কের সাথে ব্যবহারকারীর এজেন্টের অ্যাক্সেস পাওয়ার চেষ্টা করছি, তবে আমি হয় এটিতে নথিটি পাই না, বা এটি আমাকে জানায় না।

উত্তর:


176
from flask import request
request.headers.get('User-Agent')

আপনি request.user_agentঅবজেক্টটি ব্যবহার করতে পারেন যা ব্যবহারকারীর স্ট্রিংয়ের উপর ভিত্তি করে তৈরি করা নিম্নলিখিত বৈশিষ্ট্যগুলি রয়েছে:

  • প্ল্যাটফর্ম (উইন্ডোজ, লিনাক্স, ম্যাকোস, ইত্যাদি)
  • ব্রাউজার (ক্রোম, ফায়ারফক্স, এমসি ইত্যাদি)
  • সংস্করণ
  • ভাষা
  • স্ট্রিং ( == request.headers.get('User-Agent'))


19

আপনি যদি ব্যবহার

request.headers.get('User-Agent')

আপনি পেতে পারেন: মজিলা / 5.0 (উইন্ডোজ এনটি 6.1; ডাব্লুডাব্লু 64) অ্যাপলওয়েবকিট / 537.36 (কেএইচটিএমএল, গেকোর মতো) ক্রোম / 45.0.2454.101 সাফারি / 537.36

আপনি যদি ব্যবহার

request.user_agent

আপনি এই মত পেতে পারেন:

  • ব্যবহারকারী_এজেন্ট.প্ল্যাটফর্ম: উইন্ডোজ
  • ব্যবহারকারী_এজেন্ট.ব্রোজার: ক্রোম
  • user_agent.version: 45.0.2454.101
  • ব্যবহারকারী_এজেন্ট.এলংয়েজ: কিছুই নয়
  • user_agent.string: মজিলা / 5.0 (উইন্ডোজ এনটি 6.1; WOW64) অ্যাপলওয়েবকিট / 537.36 (কেএইচটিএমএল, গেকোর মতো) ক্রোম / 45.0.2454.101 সাফারি / 537.36

ভাষা কেন কিছুই নয়? ভাষা পাওয়ার সহজ উপায় কি আছে?
— ফ্যামিনেটর

@ ফ্যামিনেটর যদি ক্লায়েন্টের ব্রাউজারটি ভাষা ক্ষেত্র সেট না করে তবে সার্ভারের পক্ষে এটি পাওয়ার কোনও উপায় নেই, সুতরাং এটি কেবল কিছুই দেখায় না।
— 12: 26 এ ffledgling

1

ইউএতে সাধারণত ভাষা থাকে না। আপনি যদি ব্রাউজারে ভাষা সেট করতে চান তবে আপনি ব্যবহার করতে পারেন

request.accept_languages

এটি আপনাকে ভাষার তালিকা দেবে। যেমন

LanguageAccept([('en-US', 1), ('en', 0.5)])

প্রথম মানটি অ্যাক্সেস করতে, আপনি ব্যবহার করতে পারেন

request.accept_languages[0][0]

যার ফলে স্ট্রিং হবে

'en-US'

'গ্রহণ_ভাষ্য' শিরোনাম সম্পর্কে বিশদ তথ্য: https://www.w3.org/ আন্তর্জাতিক / স্নাতকোত্তর / কোএ্যাং- ব্যক্তিগতত্বসমূহ


0

প্রশ্নটি আরও অনেক তথ্যের জন্য প্রার্থনা করে। এই গ্রন্থাগারটি ফ্লাস্কের বাইরে প্রচুর তথ্য সংগ্রহের বিলকে ফিট করে বলে মনে হয় এবং অ্যাপ্লিকেশন প্রসঙ্গে এই তথ্যটি পাওয়ার জন্য উদাহরণ রয়েছে।

https://pythonhosted.org/Flask-Track-Usage/

ব্যবহার এই বিন্যাসে সংরক্ষণ করা হয়:

[
    {
            '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,
    },
    {
        ....
    }
]

এখানে লাইব্রেরির একটি স্থান যেখানে ডেটা সংগ্রহ করা হয়েছে:

https://github.com/ashcrow/flask-track-usage/blob/master/src/flask_track_usage/ init .py 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
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.