我有一些代码(顺便提一下,它是针对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”而不是我的所有脚本代码?
谢谢!
答案 0 :(得分:2)
如果您在客户端(即在浏览器中)运行脚本后尝试获取a
的值,则应该能够以正常方式检索它。
采取以下设置:
此文件是您的网页。它包含一些内容,一个插入图像的跟踪脚本和您自己的脚本。
<!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>
这是跟踪代码,可能由跟踪公司提供。
var id = '1234foobar';
var visitorUserAgent = encodeURIComponent(navigator.userAgent);
document.write(
'<img src="http://tracking.com/1x1.gif?id='
+ id + '&ua=' + visitorUserAgent + '" />'
);
如果您知道跟踪代码创建了哪些变量(如果有),您应该能够检索变量本身或至少检索跟踪代码创建的src
标记的img
属性。
var imgs = document.getElementsByTagName('img');
alert([id, visitorUserAgent, imgs[imgs.length - 1].src].join('\n'));
答案 1 :(得分:0)
编辑:
回答你重申的问题:
在我看来,你的问题是弄清楚在JS运行之后页面会是什么样子。
没有简单的方法可以为您提供100%准确的结果,因为您需要实际运行javascript并查看结果是什么,这在您不在浏览器中时非常不容易。
现在你有几种选择。你没有提到你用来抓取页面的工具,假设你使用的是定制的刮刀。如果你想继续使用疤痕,你可以:
答案 2 :(得分:0)
我会在firebug上使用Net面板并按图像请求过滤。你会看到它在创建的那一刻就消失了。此外,如果您要进行分析请求,请尝试安装Omnibug firebug插件来跟踪和分解请求。
答案 3 :(得分:0)
我认为最好的方法是使用Selenium,然后在页面中注入一些javascript来挖掘DOM,或者在适当的时候从全局窗口中检索值。