2011-11-24 12 views
13

Nel feed che viene pubblicato su feedburner ho caratteri russi nel nome della campagna nelle impostazioni di tracciamento Feed: ${feedUri} ${feedName}. Il problema è che risulta come un cookie __utmz errato impostato da Google Analytics e non può essere elaborato dal mio back-end (che è web.py).Cookie analitici Google interrompe il back-end Python

File "/home/dw0rm/lib/ve/lib/python2.7/site-packages/web/session.py", line 96, in _load 
    self.session_id = web.cookies().get(cookie_name) 
    File "/home/dw0rm/lib/ve/lib/python2.7/site-packages/web/webapi.py", line 359, in cookies 
    cookie.load(ctx.env.get('HTTP_COOKIE', '')) 
    File "/usr/local/lib/python2.7/Cookie.py", line 627, in load 
    self.__ParseString(rawdata) 
    File "/usr/local/lib/python2.7/Cookie.py", line 660, in __ParseString 
    self.__set(K, rval, cval) 
    File "/usr/local/lib/python2.7/Cookie.py", line 580, in __set 
    M.set(key, real_value, coded_value) 
    File "/usr/local/lib/python2.7/Cookie.py", line 455, in set 
    raise CookieError("Illegal key value: %s" % key) 
CookieError: Illegal key value:)|utmcmd 

Questo errore si è verificato in Firefox, e sono riuscito a risolvere il problema con questo codice:

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 

Ma oggi ho ottenuto questo "cookie_err = 1" redirect anche in Chrome. Ho provato questo su altri siti che sono basati su web.py e Analytics, e tutti aumentano l'errore interno del server. E questo errore continua fino a quando non viene rimosso il cookie illegale, che è una cosa difficile da fare da un visitatore abituale.

Voglio sapere quali altre opzioni dovrei prendere in considerazione. Forse il modulo Cookie Python non è corretto, oppure è un bug del browser che consente di inserire cookie errati. Questo materiale può essere utilizzato per scopi dannosi, perché ci sono molti siti Web Python che utilizzano Google Analytics e il modulo Cookie.

Questo sta monitorando interrogazione: utm_source=feedburner&utm_medium=twitter&utm_campaign=Feed%3A+cafenovru+%28%D0%9E%D0%BF%D0%B8%D1%81%D1%8C+%D1%82%D1%80%D0%B0%D0%BF%D0%B5%D0%B7%D0%BD%D1%8B%D1%85+%D0%92%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B3%D0%BE+%D0%9D%D0%BE%D0%B2%D0%B3%D0%BE%D1%80%D0%BE%D0%B4%D0%B0%29

errato valore __utmz cookie è 37098290.1322168259.5.3.utmcsr=feedburner|utmccn=Feed:%20cafenovru%20(Опись%20трапезных%20Великого%20Новгорода)|utmcmd=twitter

biscotto illegale è impostato dal Analytics javascript sulla prima pagina di accesso, ed appare l'errore lato server durante le richieste successive.

+0

Il problema è che il cookie è rotto (questo cookie è legale), ma non c'è davvero una soluzione diversa dalla correzione Cookie. –

+0

Quindi il modulo Python dovrebbe essere riparato? –

+2

sì, il modulo Cookie deve essere migliorato per supportare RFC più moderni. –

risposta

5

So che questa probabilmente non è la risposta che stai cercando, ma la soluzione migliore per questo bug è semplicemente aggiornare da ga.js a analytics.js. Analytics.js è la versione più recente della libreria di tracciamento web di Google Analytics e fa parte di universal analytics. Analytics.js scrive solo un singolo cookie, quindi evita completamente questo problema.

Il problema complesso di questo bug è in circolazione da molto tempo e molti utenti GA dispongono di soluzioni alternative esistenti. Per risolvere il problema ora si rompono molti di questi siti, quindi penso che sia improbabile che Google farà qualcosa al riguardo, specialmente dal momento che analytics.js ha già risolto questo problema, e ga.js will soon be deprecated.

Ancora una volta, so che questa non è la risposta che stai cercando, ma voglio solo ribadire che l'implementazione di una soluzione alternativa per questo problema sarà molto probabilmente un'enorme perdita di tempo. Dovrai eseguire l'aggiornamento a breve, comunque, e quindi la tua soluzione non sarebbe stata necessaria.

Ecco alcune ulteriori informazioni su come l'analisi.js utilizza i cookie: https://developers.google.com/analytics/devguides/collection/analyticsjs/domains

+0

Probabilmente avrei dovuto essere più specifico, non sono completamente sicuro che il cookie in questione provenga da Analytics. Inoltre - Voglio risolvere il problema una volta per tutte - non nel caso specifico di GA che ho già aggiornato a analytics.js – julkiewicz

+0

@julkiewicz Non sono chiaro su cosa stai cercando poiché webpy ora ha la sua logica per aggirare questo problema nell'analisi dei cookie predefinita di python. https://github.com/webpy/webpy/issues/148 – lossleader

+0

@lossleader Io uso Pyramid dove apparentemente un singolo cookie non valido (impostato da una terza parte) può causare un'eccezione nell'applicazione. Sto cercando un modo per aggirare questo. – julkiewicz

1

Questo puzza come un problema di codifica UTF-8. O peggio, potresti usare KOI8-R o Windows 1251.

In ogni caso, ci sono modi per evitare problemi. Un modo è per Base64 codificare la stringa di cookie prima di inviarla, in questo modo i caratteri cirillici sono nascosti in modo sicuro.

Ma date un'occhiata al vostro codice. Se non si utilizza la codifica UTF-8 della stringa di cookie prima di scriverlo, è possibile che ciò risolva il problema. Quando guardo attraverso la stringa sembra essere una coppia di codici con il primo codice sempre D0 o D1. Ciò suggerisce che si sta utilizzando Unicode non elaborato su un Python compilato con caratteri Unicode a 16 bit o utilizzando la codifica UCS-2 per la stringa anziché UTF-8.

+0

Non sto impostando questo cookie, è fatto da Google Analytics JavaScript nel browser. –

Problemi correlati