tornado获得客户端设备信息和ip地址

最初看到的关于如何获取客户端ip地址的博客是在Tornado获取客户端IP

然后 查看tornado源码,发现可以直接用self.request.remote_ip获得客户端地址:

    def __str__(self):
        if self.address_family in (socket.AF_INET, socket.AF_INET6):
            return self.remote_ip
        elif isinstance(self.address, bytes):
            # Python 3 with the -bb option warns about str(bytes),
            # so convert it explicitly.
            # Unix socket addresses are str on mac but bytes on linux.
            return native_str(self.address)
        else:
            return str(self.address)

    def _apply_xheaders(self, headers):
        """Rewrite the ``remote_ip`` and ``protocol`` fields."""
        # Squid uses X-Forwarded-For, others use X-Real-Ip
        ip = headers.get("X-Forwarded-For", self.remote_ip)
        ip = ip.split(‘,‘)[-1].strip()
        ip = headers.get("X-Real-Ip", ip)
        if netutil.is_valid_ip(ip):
            self.remote_ip = ip
        # AWS uses X-Forwarded-Proto
        proto_header = headers.get(
            "X-Scheme", headers.get("X-Forwarded-Proto",
                                    self.protocol))
        if proto_header in ("http", "https"):
            self.protocol = proto_header

    def _unapply_xheaders(self):
        """Undo changes from `_apply_xheaders`.

        Xheaders are per-request so they should not leak to the next
        request on the same connection.
        """
        self.remote_ip = self._orig_remote_ip
        self.protocol = self._orig_protocol

于是觉得可以这样子做:

‘‘‘ Copyright (c) [email protected](SNO13331087). All Rights Reserved. ‘‘‘
‘‘‘ get_user-agent_and_ip.py: catch the headers and ip of the client ‘‘‘
import tornado.httpserver
import tornado.ioloop
import tornado.web
import tornado.options
import os.path

from tornado.options import define, options
define("port", default=8888, help="run on the given port", type=int)

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write(self.request.headers[‘user-agent‘] +            "\nyour current ip is: "+self.request.remote_ip)

if __name__ == "__main__":
    application = tornado.web.Application([(r"/", MainHandler)], debug = True)
    http_server = tornado.httpserver.HTTPServer(application, xheaders=True)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

在本地的浏览器访问和使用手机该笔记本发射的wifi访问得到了如下结果:

时间: 2024-11-08 09:41:08

tornado获得客户端设备信息和ip地址的相关文章

DHCP自动分配地址;DHCP给指定的客户端分配指定的IP地址;

试验项目(目的):一.DHCP自动分配地址:二.DHCP给指定客户端分配指定地址:试验环境:VMware虚拟机中开启一台Linux系统作为服务器,开启一台Windows 7系统作为客户端:将DHCP服务软件安装在Linux上:提示--DHCP服务器软件:光盘中的dhcp-4.1.1-38.p1.el6.centos.x86_64.rpm主配置文件:/etc/dhcp/dhcpd.conf执行程序: /usr/sbin/dhcpd. /usr/sbin/dhcrelay服务脚本: /etc/ini

Remoting获取客户端的外网IP地址

其实在服务端Remoting可以像读取一个变量一样来获取到连接过来的客户端的IP,不过这个IP不是太容易的取到. 网上有一个解决方案就是使用配置文件来吸取IP地址,但是这个方案需要我们使用配置文件来使用Remoting,如果我们是代码形式的程序,那么怎样获取客户端IP呢. Remoting.WebService底层都是用Socket来实现,Socket本身很容易的可以获取到IP地址,所以理论上Remoting获取客户端IP是通过的. 我们可以从吸取器入手来获取,假如我们使用TCP通道来通信,在服

.NET获取客户端的操作系统、IP地址、浏览器版本

#region 获取操作系统版本号 /// <summary> /// 获取操作系统版本号 /// </summary> /// <returns></returns> public static string GetOSVersion() { //UserAgent var userAgent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"]; var os

iOS: 如何获取ios设备的当前IP地址

有的时候,我们项目上线后,需要根据ip地址去统计不同地区的用户情况,此时IP地址的收取显得尤其重要,一般情况下,在用户登录时去获取用户的ip是准确的,当然实时追踪ip的变化而统计是更安全可靠的. ip地址长度现在是有区别的,分为IPv4和IPv6.IPv4地址是类似 A.B.C.D 的格式,它是32位,用\".\"分成四段,用10进制表示:而IPv6地址类似X:X:X:X:X:X:X:X的格式,它是128位的,用\":\"分成8段,用16进制表示:可见,IPv6地址

Nginx 反向代理获取设备真实的IP地址

package com.das.common.util; import org.apache.commons.lang3.StringUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServ

Centos7修改网络配置信息(IP地址)

命令:nmtui 选择 Edit a connection 选择需要编辑的网卡 修改完成之后选择OK 然后一路退出 配置完成之后需要重启网卡服务 # 重启网卡 systemctl restart network 原文地址:https://www.cnblogs.com/wtil/p/12609677.html

mysql中的user表,可以存储了用户信息,以及ip地址等,可以用来重设密码,禁止或允许用户远程访问等

如题

获取客户端IP地址 via C#

获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己在项目中做过的事情,同时也想抛砖引玉.参考的博文及其作者在下文均有提及.待到自己以后对HTTP.TCP/IP等知识学深入了,一定再来这里深入讨论这个内容. 一.名词 首先说一下接下来要讲到的一些名词. 在Web开发中,我们大多都习惯使用HTTP请求头中的某些属性来获取客户端的IP地址,常见的属性是REMOTE_ADDR.

跟踪EBS客户端的IP地址

Meterlink参考文档: How to Track IP Address of the Form Session in Oracle application 11i (文档 ID 878931.1) 我用的EBS版本是:R12.1.3 一. 确认是否有启用OAM服务管理器: 备注:其实是否有启用OAM服务管理器对利用Form监控EBS客户端的IP地址是完全没关的. 这里放在前面,主要是要利用OAM其中一个Form监控功能,它会自动读取Form对应的进程的(有IP地址信息的)rti文件,并自动