2010-01-12 101 views
0

我接到陌生斷開的鏈接報告:中斷請求(或Django中的「斷開鏈接」報告)?

Subject: Broken link on googleads.g.doubleclick.net 

Referrer: (url on **my** site!) 
Requested URL: /pagead/ads?(...) 
User agent: (...) 
IP address: (some foreign country) 

所以我看了看CommonMiddleware,負責發送這些報告。 它是這樣的(Django 1.1 license適用於此;)):

if response.status_code == 404: 
     if settings.SEND_BROKEN_LINK_EMAILS: 
      # If the referrer was from an internal link or a non-search-engine site, 
      # send a note to the managers. 
      domain = request.get_host() 
      referer = request.META.get('HTTP_REFERER', None) 
      is_internal = _is_internal_request(domain, referer) 
      path = request.get_full_path() 
      if referer and not _is_ignorable_404(path) and (is_internal or '?' not in referer): 
       ua = request.META.get('HTTP_USER_AGENT', '<none>') 
       ip = request.META.get('REMOTE_ADDR', '<none>') 
       mail_managers("Broken %slink on %s" % ((is_internal and 'INTERNAL ' or ''), domain), 
        "Referrer: %s\nRequested URL: %s\nUser agent: %s\nIP address: %s\n" \ 
           % (referer, request.get_full_path(), ua, ip)) 

的代碼是如此簡單,這是相當明顯的是,在電子郵件,我收到引薦被換與主機請求URL。我不確定它是什麼意思 - 如果它是一些黑客試用版,Django中的一些錯誤或者我的代碼中的一些錯誤(僅供參考:Django尚未修補,其他broken link電子郵件都是正確的)。

你知道這裏有什麼可能是錯誤的嗎?

+0

你是說從你的Django發佈的代碼是壞了?它看起來不錯,我... – 2010-01-12 12:42:45

+0

不,我說的是相反的 - Django代碼似乎是完全確定的,但由於某種原因,我收到referrer與主機交換..無論如何,昨天發生了類似的事情第二次,什麼是有趣的是,它來自同一個IP。黑客是否有可能交換這些字段,並且與Django無關? – 2010-01-14 22:15:39

回答

0

它沒有交換。推薦鏈接是您的網站,因爲您的網站上有點擊,比如http://www.reddit.com/domain/googleads.g.doubleclick.net

一切都很好,報告可能會讓您感到困惑,因爲它嘗試點擊的網址看起來像一個外部域名。這裏是關於這個問題的一些線索,實際上你並不是唯一一個被這樣的鏈接命中的人(谷歌「googleads.g.doubleclick.net」得到了超過半密耳的結果,大多數網站有奇怪的錯誤)

if我錯了,在網址上提供一些更多的細節,但我認爲這裏一切都很好。

http://www.google.com/support/googleanalytics/bin/answer.py?hlrm=pl&answer=55581 http://www.google.com/support/forum/p/Google+Analytics/thread?tid=200cb2d4021f93ce&hl=en

+0

我知道* googleads.g.doubleclick.net *是完全有效的* referrer *,但我將它作爲我網站上的網址路徑。而在HTTP_REFERER中也有我自己的內部URL。 – 2010-01-18 21:36:17