Pergunta

Eu tenho algum código (aliás, é por Omniture) que torna um pixel 1x1 com base em algumas variáveis ??de objeto JavaScript I definidos no código fonte da página. O JavaScript eventualmente, cria uma img baseado no código de script, mas o img src não é embutida no HTML. Como posso descobrir o que o img src é, dada a URL de uma página? Se eu simplesmente pegar a página, Vou pegar o JavaScript pré-renderizados.

Editar

Por exemplo, digamos que eu tenho esse código para StackOverflow.html :

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

Como posso buscar StackOverflow.html e de alguma forma obter o valor "2" em vez de todo o meu código de script?

Obrigado!

Foi útil?

Solução 4

Eu acho que a melhor maneira de fazer isso é com Selênio, em seguida, injetar um pouco de javascript na página para uma ou outra mina do DOM, ou recuperar o valor da janela mundial se for o caso.

Outras dicas

Se você está tentando obter o valor de a depois que o script foi executado no lado do cliente (ou seja, no navegador), você deve apenas ser capaz de recuperá-lo de uma forma normal.

Tome a seguinte configuração:

index.html

Este arquivo é a sua página web. Ele contém algum conteúdo, um script de rastreamento que insere uma imagem e seu próprio script.

<!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

Este é o código de acompanhamento, presumivelmente fornecido pela empresa de rastreamento.

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

mycode.js

Se você sabe quais variáveis ??(se houver) do código de acompanhamento cria, você deve ser capaz de recuperar-se ou pelo menos o atributo src da tag img as variáveis ??que o código de acompanhamento cria.

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

Editar:

para responder a sua pergunta atualizado:

parece-me que o seu problema é descobrir o que a página vai ficar depois da JS é executado nele.

Não há nenhuma maneira simples de fazer isso que lhe dará 100% de resultados precisos, para que você vai precisar para realmente executar o javascript e ver quais são os resultados, que é realmente não-fácil quando você não é em um navegador.

Agora você tem várias opções. Voc no mencionar qual ferramenta você está usando para pegar a página, doente supor que você está usando um costume construído raspador. Se você quiser continuar usando o scarper você pode:

  • olhar em usar rinoceronte para avaliar a JS. Não tenho a certeza que isso vai lhe dar, você pode pesquisar isso.
  • se document.write é a única chamar você se preocupa, você pode analisar as variáveis ??que utiliza, e, em seguida, tentar avaliar seus valores. isso exigirá escrever um parser, provavelmente difícil.
  • melhor coisa que você pode fazer é usar uma ferramenta de teste funcional, como telúrio ou selênio. Isto lhe dará acesso à página onde a JS já foi executado, e você pode usar a minha resposta original para obter o valor que você precisa.

Gostaria de usar o painel de líquido no firebug e filtrar por pedidos de imagem. Você verá que sair do momento em que é criado. Além disso, se você está fazendo de análise solicitações, tente instalar o Omnibug firebug plugin para rastrear e pausa solicitações para baixo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top