【问题标题】:Log user browser id on each visit in python tornado在 python tornado 中每次访问时记录用户浏览器 ID
【发布时间】:2016-01-17 04:28:01
【问题描述】:

我有一个运行良好的 JS、html 和 CSS 组合,并为用户提供了一个交互式网页。我可以使用 python -m SimpleHTTPServer 为它们提供服务,这很棒。现在,我想衡量我网站的用户数量。为此,我假设我需要一些服务器代码。所以,我转向 python Tornado。我对应该使用哪种 HTTP 协议来发送它感到困惑。大多数样板代码都有这样实现的 GET 和 POST 方法:

class MainHandler(tornado.web.RequestHandler):

def get(self):

    self.render("index.html")

#
# HTTP *POST* HANDLER
#
def post(self):
    print "Post received"
    post_body = self.get_argument("body")
    if post_body:
        print "post body : %s..." % post_body[0:400]

而且我知道 tornado 有这些我们很好的异步版本。其中哪一个最适合向服务器指示具有特定浏览器 cookie 的用户访问了该页面?如果答案是 GET,我将如何将该请求与第一次加载页面的 GET 请求区分开来?

此外,还有什么比独特的浏览器 cookie 更能区分不涉及创建帐户的用户的吗?

【问题讨论】:

    标签: python post tornado


    【解决方案1】:

    要从位置栏/链接浏览器导航到站点,请使用 GET。可以通过检测cookie in RequestHandler来区分访问:

    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            if self.get_cookie('visited'):
                # this is not first visit
                print('not first visit')
            else:
                self.set_cookie('visited', '1'):
                # first visit
                print('for the first time')
            self.render("index.html")
    

    cookie 似乎是正确的方法。当然,用户可以修改/删除 cookie。其他方法,如基于 ip + user_agent 的识别,也有缺点 - 共享 ip 失败。

    最后,如果您计划为主页设计一个简单的计数器,请自行尝试实现它。但如果不是,真正功能齐全的解决方案,解决与您(以及您将面临的其他问题)相同的问题,是使用适当的工具 - 看看piwik(开源)或谷歌分析,clicky。 ..

    【讨论】:

      猜你喜欢
      • 2013-05-21
      • 1970-01-01
      • 2010-09-08
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      相关资源
      最近更新 更多