python从请求中获取IP、浏览器信息、设备信息、操作系统信息
from user_agents import parse
def get_request_message(request):
if request.method == "GET":
# 获取IP
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') # 判断是否使用代理
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0] # 使用代理获取真实的ip
else:
ip = request.META.get('REMOTE_ADDR') # 未使用代理获取IP
user_agent = request.headers.get('User-Agent')
user_agent = parse(user_agent)
# 获取浏览器信息
browser_data = user_agent.browser
browser = f"{browser_data.family}" + "(" + f"{browser_data.version_string}" + ")"
# print(f"Browser: {browser_data.family}, Version: {browser_data.version_string}")
# 获取设备信息
device_data = user_agent.device
device = f"{device_data.family}" + " " + f"{device_data.brand}" + "(" + f"{device_data.model}" + ")"
# print(f"Device: {device_data.family}, Model: {device_data.model}, Brand: {device_data.brand}")
# device = device_data['Device'].family
# 获取操作系统信息
operating_system_data = user_agent.os
# print(f"OS: {operating_system_data.family}, Version: {operating_system_data.version_string}")
operating_system = f"{operating_system_data.family}" + " " + f"{operating_system_data.version_string}"
print("IP:", ip,"浏览器信息:", browser, "设备信息:", device, "操作系统信息:", operating_system)
return HttpResponse(json.dumps(response_message(200, 'success')),
content_type="application/json")
else:
return HttpResponse(json.dumps(response_message(40001, 'error request method')),
content_type="application/json")
从浏览器请求:
请求结果: