2010-01-12 55 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