从页面中获取呈现的JavaScript(Omniture像素)?

时间:2009-10-23 15:01:01

标签: javascript testing tracking pixel

我有一些代码(顺便提一下,它是针对Omniture SiteCatalyst)根据我在页面源代码中设置的一些JavaScript对象变量呈现1x1像素。 JavaScript最终会根据脚本代码创建一个img,但img src并没有硬编码到HTML中。在给定页面的URL的情况下,如何确定img src是什么?如果我只是抓住页面,我将获得预渲染的JavaScript。

修改

例如,假设我有 StackOverflow.html 的代码:

<html>
<script type="text/javascript">
a = 2
document.write(a)
</script>
</html>

如何获取 StackOverflow.html 并以某种方式获取值“2”而不是我的所有脚本代码?

谢谢!

4 个答案:

答案 0 :(得分:2)

如果您在客户端(即在浏览器中)运行脚本后尝试获取a的值,则应该能够以正常方式检索它。

采取以下设置:

的index.html

此文件是您的网页。它包含一些内容,一个插入图像的跟踪脚本和您自己的脚本。

<!doctype html>
<html>
<head><title>My Page</title></head>
<body>
  <p>My Content<p>
  <!-- Start tracking code -->
  <script src="tracking.js"></script>
  <!-- End tracking code -->
  <script src="mycode.js"></script>
</body>
</html>

tracking.js

这是跟踪代码,可能由跟踪公司提供。

var id = '1234foobar';
var visitorUserAgent = encodeURIComponent(navigator.userAgent);
document.write(
  '<img src="http://tracking.com/1x1.gif?id='
  + id + '&ua=' + visitorUserAgent + '" />'
);

mycode.js

如果您知道跟踪代码创建了哪些变量(如果有),您应该能够检索变量本身或至少检索跟踪代码创建的src标记的img属性。

var imgs = document.getElementsByTagName('img');
alert([id, visitorUserAgent, imgs[imgs.length - 1].src].join('\n'));

答案 1 :(得分:0)

编辑:

回答你重申的问题:

在我看来,你的问题是弄清楚在JS运行之后页面会是什么样子。

没有简单的方法可以为您提供100%准确的结果,因为您需要实际运行javascript并查看结果是什么,这在您不在浏览器中时非常不容易。

现在你有几种选择。你没有提到你用来抓取页面的工具,假设你使用的是定制的刮刀。如果你想继续使用疤痕,你可以:

  • 研究使用rhino来评估JS。我不确定这会给你什么,你可以研究一下。
  • 如果document.write是您唯一关心的调用,则可以解析它使用的变量,然后尝试评估它们的值。这将需要编写一个解析器,可能很难。
  • 你能做的最好的事情就是使用像碲或硒这样的功能测试工具。这将使您可以访问已经运行JS的页面,并且您可以使用我的原始答案来获得所需的值。

答案 2 :(得分:0)

我会在firebug上使用Net面板并按图像请求过滤。你会看到它在创建的那一刻就消失了。此外,如果您要进行分析请求,请尝试安装Omnibug firebug插件来跟踪和分解请求。

答案 3 :(得分:0)

我认为最好的方法是使用Selenium,然后在页面中注入一些javascript来挖掘DOM,或者在适当的时候从全局窗口中检索值。