2011-11-24 31 views
13

Trong nguồn cấp dữ liệu của tôi được xuất bản lên feedburner Tôi có các ký tự tiếng Nga trong tên chiến dịch trong cài đặt theo dõi Feed: ${feedUri} ${feedName}. Vấn đề là kết quả là cookie __utmz không chính xác do Google Analytics đặt và không thể được xử lý bởi chương trình phụ trợ của tôi (đó là web.py). xảy raGoogle Analytics cookie bất hợp pháp phá vỡ chương trình phụ trợ 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 

Lỗi này trong Firefox, và tôi đã cố gắng sửa chữa nó với mã này:

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 

Nhưng hôm nay tôi nhận được điều này "cookie_err = 1" chuyển hướng ngay cả trong Chrome. Tôi đã thử điều này trên một số trang web khác dựa trên web.py và Analytics và tất cả chúng đều làm tăng lỗi máy chủ nội bộ. Và lỗi này giữ cho đến khi cookie bất hợp pháp bị xóa, đó là điều khó thực hiện bởi khách truy cập thường xuyên.

Tôi muốn biết các tùy chọn khác mà tôi nên cân nhắc. Có lẽ mô-đun Python Cookie không chính xác, hoặc đó là lỗi của trình duyệt cho phép trong cookie không chính xác. Công cụ này có thể được sử dụng cho mục đích độc hại, bởi vì có nhiều trang web Python sử dụng mô-đun Google Analytics và Cookie.

này đang theo dõi truy vấn: 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

không đúng giá trị cookie __utmz là 37098290.1322168259.5.3.utmcsr=feedburner|utmccn=Feed:%20cafenovru%20(Опись%20трапезных%20Великого%20Новгорода)|utmcmd=twitter

Cookie bất hợp pháp được thiết lập bởi Analytics javascript trên truy cập trang đầu tiên và lỗi phía máy chủ xuất hiện trên yêu cầu tiếp theo.

+0

Vấn đề là Cookie bị hỏng (cookie này là hợp pháp), nhưng không có giải pháp nào khác ngoài việc khắc phục Cookie. –

+0

Vì vậy, nó là mô-đun Python cần được cố định? –

+2

có, mô-đun Cookie cần được tăng cường để hỗ trợ RFC hiện đại hơn. –

Trả lời

5

Tôi biết điều này có lẽ không phải là câu trả lời bạn đang tìm kiếm, nhưng giải pháp tốt nhất cho lỗi này là chỉ cần nâng cấp từ ga.js đến analytics.js. Analytics.js là phiên bản mới nhất của thư viện theo dõi web Google Analytics và là một phần của universal analytics. Analytics.js chỉ ghi một cookie duy nhất, do đó, nó hoàn toàn tránh được vấn đề này.

Vấn đề phức tạp với lỗi này là lỗi của nó đã xảy ra trong một thời gian dài và nhiều người dùng GA đã có cách giải quyết hiện tại. Để khắc phục nó ngay bây giờ sẽ phá vỡ rất nhiều trang web đó, vì vậy tôi cho rằng Google sẽ không làm bất kỳ điều gì, đặc biệt là kể từ khi analytics.js đã khắc phục sự cố này và ga.js will soon be deprecated.

Một lần nữa, tôi biết đây không phải là câu trả lời bạn đang tìm kiếm, nhưng tôi chỉ muốn nhắc lại rằng việc thực hiện bất kỳ giải pháp nào cho vấn đề này sẽ rất có thể là một sự lãng phí thời gian. Bạn sẽ sớm phải nâng cấp và sau đó giải pháp thay thế của bạn sẽ không cần thiết.

Dưới đây là một số thông tin khác về cách phân tích.js sử dụng cookie: https://developers.google.com/analytics/devguides/collection/analyticsjs/domains

+0

Tôi có lẽ phải cụ thể hơn, tôi không hoàn toàn chắc chắn nếu cookie được đề cập đến từ Analytics. Ngoài ra - Tôi muốn giải quyết vấn đề một lần và cho tất cả - không phải trong trường hợp cụ thể của GA mà tôi đã nâng cấp lên analytics.js – julkiewicz

+0

@julkiewicz Tôi không rõ ràng về những gì bạn đang tìm kiếm vì webpy giờ đây có logic riêng của mình làm việc xung quanh vấn đề này trong phân tích cú pháp cookie mặc định python. https://github.com/webpy/webpy/issues/148 – lossleader

+0

@lossleader Tôi sử dụng Kim tự tháp mà dường như một cookie không hợp lệ duy nhất (do bên thứ ba đặt) có thể gây ra ngoại lệ trong ứng dụng. Tôi đang tìm kiếm một cách xung quanh đó. – julkiewicz

1

Điều này có mùi giống với vấn đề mã hóa UTF-8. Hoặc tệ hơn, bạn có thể đang sử dụng KOI8-R hoặc Windows 1251.

Trong mọi trường hợp, có nhiều cách để tránh sự cố. Một cách là Base64 mã hóa chuỗi cookie của bạn trước khi gửi, theo cách đó các ký tự Cyrillic được ẩn an toàn.

Nhưng hãy xem mã của bạn. Nếu bạn không mã hóa UTF-8 chuỗi cookie trước khi ghi nó ra, điều đó cũng có thể giải quyết được vấn đề. Khi tôi xem xét chuỗi, nó có vẻ là cặp mã với mã đầu tiên luôn là D0 hoặc D1. Điều đó gợi ý rằng bạn đang sử dụng Unicode thô trên một Python được biên dịch với các ký tự Unicode 16 bit hoặc sử dụng mã hóa UCS-2 cho chuỗi thay vì UTF-8.

+0

Tôi không đặt cookie này, nó được thực hiện bởi JavaScript của Google Analytics trong trình duyệt. –

Các vấn đề liên quan