Получение отрисованного JavaScript со страницы (Omniture pixel)? - PullRequest
0 голосов
/ 23 октября 2009

У меня есть некоторый код (кстати, это для Omniture SiteCatalyst), который отображает пиксель 1x1 на основе некоторых переменных объекта JavaScript, которые я установил в исходном коде страницы. JavaScript в конечном итоге создает img на основе скриптового кода, но img src не жестко запрограммирован в HTML. Как я могу узнать, что такое img src, учитывая URL страницы? Если я просто возьму страницу, я получу предварительно обработанный JavaScript.

EDIT

Например, допустим, у меня есть этот код для StackOverflow.html :

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

Как я могу получить StackOverflow.html и каким-то образом получить значение "2" вместо всего моего кода сценария?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 24 октября 2009

Если вы пытаетесь получить значение 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'));
0 голосов
/ 07 марта 2012

Я думаю, что лучший способ сделать это с помощью Selenium, а затем внедрить некоторый javascript на страницу, чтобы либо взломать DOM, либо получить значение из глобального окна, если это необходимо.

0 голосов
/ 03 марта 2011

Я бы использовал панель Net на firebug и фильтровал запросы изображений. Вы увидите, как оно исчезнет, ​​как только оно будет создано. Также, если вы делаете аналитические запросы, попробуйте установить плагин Omnibug firebug для отслеживания и разбивки запросов.

0 голосов
/ 23 октября 2009

Edit:

, чтобы ответить на ваш вопрос:

мне кажется, что ваша проблема в том, чтобы выяснить, как будет выглядеть страница после запуска JS на ней.

Нет простого способа сделать это, который даст вам 100% точные результаты, для этого вам нужно будет на самом деле запустить javascript и посмотреть, каковы результаты, что на самом деле непросто, когда вы не в браузере.

Теперь у вас есть несколько вариантов. Вы не упомянули, какой инструмент вы используете для захвата страницы, я предполагаю, что вы используете специальный скребок. Если вы хотите продолжать использовать скальпер, вы можете:

  • Изучите использование Rhino для оценки JS. Я не уверен, что это даст вам, вы можете исследовать это.
  • если document.write - единственный вызов, который вас волнует, вы можете проанализировать переменные, которые он использует, и затем попытаться оценить их значения. это потребует написания парсера, вероятно, трудно.
  • Лучшее, что вы можете сделать, это использовать инструмент функционального тестирования, такой как теллур или селен. Это даст вам доступ к странице, на которой JS уже запущен, и вы можете использовать мой оригинальный ответ, чтобы получить нужное вам значение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...