获取Flask请求的引用URL

34

当用户访问我们的网站并注册时,我如何捕获他们来自哪个网站的信息?

无论是搜索引擎、公关网站等,我不在乎他们在我们网站上访问了哪个页面,我只想知道哪些营销活动为我们带来了最多的注册。

我知道Google Analytics 可能可以做到这一点,但我也想有一些内部的参考资料。

2个回答

45

request.referrer 的值包含请求的来源URL,但由于各种原因,客户端可能并未发送这个信息。

该属性的值取自于 Referer(不是拼写错误!)头部:

referrer = request.headers.get("Referer")

或者,使用 Flask 的快捷方式:

referrer = request.referrer

参见此教程以了解示例。


4

感谢被接受的答案,我已经设置了我的应用程序来捕获外部引荐并将其存储在session中。然后当用户注册时,我会将该值与用户一起保存。

from flask import request, g
from werkzeug.urls import url_parse

def referral():
    url = request.referrer

    # if domain is not mine, save it in the session
    if url and url_parse(url).host != "example.com":
        session["url"] = url

    return session.get("url")

@app.before_request
def before_request():
    g.user = current_user
    g.url = referral()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接