根据HTTP header收集客户端相关信息 --- tornado demo
理解:当客户端访问服务器时,会给服务器发送相关信息。
tornado程序中,可在“处理请求类”(继承自tornado.web.RequestHandler)的请求函数中使用self.request.headers获得HTTP header客户端相关信息(包括"User-Agent")
User-Agent说明:HTTP客户端运行的浏览器类型的详细信息。通过该头部信息,web服务器可以判断到当前HTTP请求的客户端浏览器类别。
tornado程序:
1 import tornado.httpserver 2 import tornado.ioloop 3 import tornado.options 4 import tornado.web 5 6 from tornado.options import define, options 7 define("port", default=8000, help="run on the given port", type=int) 8 9 class IndexHandler(tornado.web.RequestHandler): 10 def get(self): 11 self.write("hello world") 12 print self.request.headers 13 14 15 if __name__ == "__main__": 16 tornado.options.parse_command_line() 17 app = tornado.web.Application(handlers=[(r"/", IndexHandler)], debug=True) 18 http_server = tornado.httpserver.HTTPServer(app) 19 http_server.listen(options.port) 20 tornado.ioloop.IOLoop.instance().start()
运行上面的程序后可以在浏览器中输入:http://localhost:8000访问
访问成功后,会在tornado程序中输出
这是因为self.request.headers返回的是一个字典类型,用键值对的方式保存客户端的信息。
例如:
分析其中的‘User-Agent’:
Mozilla/5.0 : 先前用以指示与Mozilla排版引擎的兼容性
(Windows NT 6.3; WOW64) : 浏览器所运行于的系统的详细信息
AppleWebKit/537.36 : 浏览器所使用的平台
(KHTML, like Gecko) : 浏览器平台的细节
Chrome/38.0.2125.111 Safari/537.36 : 被浏览器用于指示特定的直接由浏览器提供或者通过第三方提供的可用的增强功能。
参考资料:http://en.wikipedia.org/wiki/User_agent 英文版
http://zh.wikipedia.org/wiki/%E7%94%A8%E6%88%B7%E4%BB%A3%E7%90%86 中文版