繁体   English   中英

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

[英]Fetching rendered JavaScript from a page (Omniture 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”,而不是所有脚本代码?

谢谢!

如果你想获得的价值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

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

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

编辑:

回答您重述的问题:

在我看来,您的问题是弄清楚在JS上运行后页面的外观。

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

现在您有几个选择。 您没有提到要使用哪种工具来抓取页面,除非您使用的是自定义构建的刮板。 如果您想继续使用围巾,则可以:

  • 研究使用犀牛评估JS。 我不确定这会给您带来什么,您可以对此进行研究。
  • 如果document.write是您唯一关心的调用,则可以解析其使用的变量,然后尝试评估它们的值。 这将需要编写一个解析器,可能很困难。
  • 最好的办法是使用诸如碲或硒之类的功能测试工具。 这将使您能够访问已运行JS的页面,并且可以使用我的原始答案来获取所需的值。

我将在Firebug上使用“网络”面板,并按图像请求进行过滤。 创建后,您就会看到它消失了。 另外,如果您要发出分析请求,请尝试安装Omnibug firebug插件以跟踪和分解请求。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM