Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google analytics非法cookie破坏Python后端_Javascript_Python_Cookies_Google Analytics_Web.py - Fatal编程技术网

Javascript Google analytics非法cookie破坏Python后端

Javascript Google analytics非法cookie破坏Python后端,javascript,python,cookies,google-analytics,web.py,Javascript,Python,Cookies,Google Analytics,Web.py,在发布到feedburner的订阅源中,我在跟踪设置订阅源:${feedUri}${feedName}中的活动名称中有俄语字符。问题是,它的结果是由Google Analytics设置的不正确的utmz cookie,并且不能由我的后端(即web.py)处理 此错误发生在Firefox中,我已成功用以下代码修复此错误: def myinternalerror(): try: web.cookies() except CookieError: if

在发布到feedburner的订阅源中,我在跟踪设置
订阅源:${feedUri}${feedName}
中的活动名称中有俄语字符。问题是,它的结果是由Google Analytics设置的不正确的utmz cookie,并且不能由我的后端(即web.py)处理

此错误发生在Firefox中,我已成功用以下代码修复此错误:

def myinternalerror():
    try:
        web.cookies()
    except CookieError:
        if not "cookie_err" in web.input():
            web.setcookie("__utmz", None, domain=web.ctx.host)
            raise web.seeother(web.changequery(cookie_err=1))
    return web.internalerror(render.site.e500())
app.internalerror = myinternalerror
但今天我甚至在Chrome浏览器中也得到了“cookie\u err=1”重定向。我在其他一些基于web.py和Analytics的网站上尝试了这个方法,它们都会引发内部服务器错误。这个错误会一直持续到非法cookie被删除,这对于普通访问者来说是很难做到的

我想知道我应该考虑哪些其他的选择。可能是Python Cookie模块不正确,或者是浏览器的bug让不正确的Cookie进入。这些东西可以用于恶意目的,因为有许多Python网站使用Google Analytics和Cookie模块

这是一个跟踪查询。这是一个跟踪查询。这是一个跟踪查询。这是一个跟踪查询。这是一个跟踪查询。这是一个跟踪查询。这是一个跟踪查询。这是一个跟踪查询:以下是跟踪查询:::<代码>的代码。这是一个来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,来源,运动运动,运动,运动,运动,运动,运动,运动,运动,运动,运动,运动,运动,运动,运动%D0%BE%D0%B4%D0%B0%29

不正确的utmz cookie值为
37098290.1322168259.5.3。utmcsr=feedburner | utmccn=Feed:%20cafenovru%20(ППзззззззззззззззззззз


非法cookie是由Analytics javascript在第一页访问时设置的,后续请求中会出现服务器端错误。

这听起来像是UTF-8编码问题。更糟糕的是,您可能正在使用KOI8-R或Windows 1251

在任何情况下,都有避免问题的方法。一种方法是在发送cookie字符串之前对其进行Base64编码,这样就可以安全地隐藏西里尔字符


但是看看你的代码。如果您在写入cookie字符串之前没有对其进行UTF-8编码,那么这也可能解决问题。当我查看字符串时,它似乎是成对的代码,第一个代码总是D0或D1。这表明您在使用16位Unicode字符编译的Python上使用原始Unicode,或者对字符串使用UCS-2编码而不是UTF-8

我知道这可能不是您想要的答案,但解决此错误的最佳方法是从升级到。Analytics.js是Google Analytics web tracking library的最新版本,是Google的一部分。Analytics.js只编写一个cookie,因此完全避免了这个问题

这个bug的棘手问题是它已经存在很长一段时间了,很多GA用户都有现成的解决方法。现在修复它会破坏很多这样的网站,所以我认为谷歌不太可能对此采取任何行动,特别是因为analytics.js已经修复了这个问题,而ga.js

再一次,我知道这不是你想要的答案,但我只想重申,自己为这个问题实施任何解决方案都很可能是一种巨大的时间浪费。无论如何,您必须很快升级,这样您的解决方案就没有必要了

以下是analytics.js如何使用Cookie的更多信息:

问题是Cookie已损坏(此Cookie是合法的),但除了修复Cookie之外,没有其他解决方案。因此,应该修复的是Python模块?是的,Cookie模块需要增强以支持更现代的RFC。是否有符合Cookie的模块修复此问题?我没有设置此Cookie,这是由谷歌分析JavaScript在浏览器中完成的。我可能应该说得更具体一些,我不完全确定所讨论的cookie是否来自分析。另外——我想一劳永逸地解决这个问题——而不是在我已经升级到分析的GA的具体案例中。js@julkiewicz我不清楚您在寻找什么,因为webpy现在有自己的逻辑来解决python默认cookie解析中的这个问题@lossleader我使用Pyramid,显然一个无效的cookie(由第三方设置)会导致应用程序中出现异常。我正在寻找一种方法来解决这个问题。@julkiewicz查看Pyland的webob/cookies.py项目(pyramid使用该项目),它重新创建了解析,主要实现了与默认解析器相同的错误。所以它实际上是一个单独的(尽管可能是剪切粘贴的)bug。@lossleader是否有任何方法可以将默认cookie模块切换到其他模块,或者是自己修补它的唯一选项?如果我知道怎么做,我完全愿意修补它(我使用的是VirtualNV)。
def myinternalerror():
    try:
        web.cookies()
    except CookieError:
        if not "cookie_err" in web.input():
            web.setcookie("__utmz", None, domain=web.ctx.host)
            raise web.seeother(web.changequery(cookie_err=1))
    return web.internalerror(render.site.e500())
app.internalerror = myinternalerror