【问题标题】:How can Javascript code can be executed in order to get useragent?如何执行 Javascript 代码以获取用户代理?
【发布时间】:2013-10-21 15:43:15
【问题描述】:

我有一个具有用户跟踪功能的电子邮件营销网站,这通常是我所做的。 我要求我的客户将此代码添加到他们的网站,以便跟踪客户的行为。

var _ssprt=('https:'==document.location.protocol?'https':'http');
var ig = navigator.userAgent.toLowerCase().indexOf('googlebot') > 0;
document.write('<img height="1" width="1" src="'+_ssprt+'://www.myurl.com/system/sitecode.php?t='+document.title+'&adres='+document.location.href+'&ua='+ig+'" hspace="0" />');

通常如果通过浏览器进入网站,我可以很容易地检测到它的用户代理。

但是,如果这是 GoogleBot ,由于它将网站作为源代码执行,它不会向我的主 url 发送任何数据。 它也无法执行 php。 因此,我看不到是否有任何 googlebot 进入该网站。

我使用此代码来获取用户代理

var ig = navigator.userAgent.toLowerCase().indexOf('googlebot') > 0;

我想我可以通过 htaccess 将我的 sitecode.php 重定向到 js。 所以它会表现得像 sitecode.js 我会将它包含在 script src code

我想知道如果我这样做了,googlebot 会执行那个 JS。

我正在尝试使用这段代码来执行此操作,但我无法成功。此外,我不确定 Google 是否会执行此操作并将用户代理数据发送给我。

RewriteEngine on
RewriteRule ^sitecode.js$ sitecode.php [QSA,L]

【问题讨论】:

  • 问题是人们放我代码的网站不是我的。像谷歌分析一样思考。如果有机会用机器人来做这件事,很高兴得到您的建议。
  • 您可以在 php 中使用 $_SERVER['HTTP_USER_AGENT'] 来检查“googlebot”吗?
  • 同样的问题是“Googlebot 无法执行 PHP”
  • 可靠地跟踪 googlebot 页面请求的唯一方法是从托管相关页面的服务器进行服务器端。您无法在该页面中插入 javascript 来跟踪这些类型的访问,因为 googlebot 不执行该脚本。
  • @SNaRe — 如果 Google Analytics 可以检测到 GoogleBot,为什么 GoogleBot 不出现在我的 Google Analytics 报告中?

标签: javascript jquery ajax googlebot


【解决方案1】:

navigator.userAgent 仅在浏览器环境中可用。 Googlebot 只是进行 HTTP 获取,它不运行客户端 JavaScript。就像使用 wget 或 curl 获取页面一样 - 您只需下载页面内容(源代码/HTML)而不执行其中的脚本。

要跟踪 googlebot 访问,您需要引入一些服务器端解决方案,但根据客户使用的服务器端技术,您需要提供 sn-ps 以支持多种服务器端技术。

【讨论】:

  • 但是在没有任何服务器站点解决方案的情况下,Google Analytics 和 Yandex 等其他分析服务如何做到这一点?
  • 如果您使用 curl 或 wget 获取页面,Google Analytics 也不会发送任何数据(试一试:wget http://yourpageurl)。它可能会记录 googlebot 的访问(我不确定是否如此),因为 google 本身正在发送 bot 请求,并且它知道何时何地访问哪些页面等。
  • 我故意在我之前的评论中写了“yandex”,因为我认为有人会说“这是谷歌”。他会想办法解决这个问题的。” Yandex 和任何其他分析软件无需任何服务器端解决方案即可检测到 GoogleBot
  • 我从未见过任何托管分析服务检测到任何搜索引擎索引机器人。
【解决方案2】:

我的解释是您确实想要检测您网页上的 GoogleBot 点击?或者至少检测它们,以便您可以在自己的代码中过滤掉它们?

GoogleBot 可以解释一些 JavaScript,但它不会将其作为浏览器执行。谷歌对 GoogleBot 在解释脚本方面所做的事情保持沉默。当用户禁用 JavaScript 时也会出现同样的问题,那么您将看不到他们的访问。

有一些方法可以通过 GoogleBot 制作AJAX content crawlable,但它也需要一些服务器代码。

不幸的是,确保跟踪所有访问者的最安全方法是使用服务器端代码。

可选-我建议您对此有所保留,因为我自己没有尝试过-您可以尝试在您身边添加一个img或隐藏链接到您的php页面,然后检查用户代理和引用者以获取该页面用户正在访问 - 但我不完全确定它会以这种方式工作,并且 GoogleBot 会发送引用的标头。也许其他人已经尝试过了?

【讨论】:

    【解决方案3】:

    我在这个网站上找到了回答我问题的答案。

    http://searchengineland.com/is-googlebot-skewing-google-analytics-data-22313

    后记:Google Analytics 在 cmets 中发布了回复:

    “官方的 Google 机器人不执行 Google Analytics JavaScript。我们不确定它到底是什么,它可能是任何人的机器人、某个实习生的实验或其他此类流量。” 我同意这个评论,因为官方的 Googlebot 读取 JavaScript 但不执行它。此外,它不存储和发送 cookie,这意味着 Paves/Visit 将恰好为 1,而在站点上的时间恰好为 0。最后,如果官方 Googlebot 确实执行了 JavaScript,我们将看到大量的访问。

    还需要注意的是,尽管我们使用 Google Analytics 作为示例,但我们指的是所有基于 JavaScript 的解决方案,包括 Omniture、Yahoo Web Analytics、WebTrends 等。

    请注意,此问题需要对 Google Analytics(分析)以及 Google 搜索如何使用 Googlebot 进行额外调查。

    【讨论】:

      猜你喜欢
      • 2017-05-09
      • 1970-01-01
      • 2012-05-17
      • 2012-03-16
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 1970-01-01
      相关资源
      最近更新 更多