2017-02-04 9 views
0

Я хочу получить исполняемые имена javaScript с некоторой веб-страницы.Как получить следующее имя javascripts в HTTP-запросе с помощью Node.js?

Есть ли способ в Node.js с использованием модуля request или другого?

request.get('http://google.com', function(err, res, body){ 
    ... console.log(res.executedScriptNames); 
}) 

how to get followed scripts name

+0

Вы можете использовать DOM парсер, чтобы найти тег сценария. Это позаботится обо всех статически вставленных тегах скрипта, но не найдет теги скриптов, которые вставляются через Javascript, когда страница действительно выполняется в браузере. – jfriend00

ответ

1

Вы можете узнать все сетевые события, которые возвращают содержание типа JavaScript, с помощью обезглавленный браузера. В приведенном ниже примере я буду использовать phantomjs для извлечения событий, которые вызвали ответ типа javascript на самой странице вопроса stackoverflow. Таким образом, в основном мы будем стараться, чтобы захватить эти события: enter image description here

$ cat example.js 

"use strict"; 
var page = require('webpage').create(), 
    system = require('system'), 
    address; 

address = 'http://stackoverflow.com/q/42036173/1005215'; 

page.onResourceReceived = function (res) { 
    if (res.contentType.match(/javascript/)) { 
     console.log(res.url) 
    } 
}; 

page.open(address, function (status) { 
    if (status !== 'success') { 
     console.log('FAIL to load the address'); 
    } 
    phantom.exit(); 
}); 

$ ./node_modules/phantomjs/bin/phantomjs example.js 
https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js 
https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js 
https://cdn.sstatic.net/Js/stub.en.js?v=fb1e02135f20 
https://cdn.sstatic.net/Js/stub.en.js?v=fb1e02135f20 
https://cdn.sstatic.net/clc/clc.min.js?v=e297fe5bed6f 
https://cdn.sstatic.net/clc/clc.min.js?v=e297fe5bed6f 
https://cdn.sstatic.net/Js/full-anon.en.js?v=a0fe0d0994a1 
https://cdn.sstatic.net/Js/full-anon.en.js?v=a0fe0d0994a1 
http://edge.quantserve.com/quant.js 
http://static.adzerk.net/ados.js 
http://edge.quantserve.com/quant.js 
http://static.adzerk.net/ados.js 
https://cdn.sstatic.net/Js/snippet-javascript.en.js?v=c681521379d1 
https://cdn.sstatic.net/Js/post-validation.en.js?v=fce27e94a6e2 
https://cdn.sstatic.net/Js/snippet-javascript.en.js?v=c681521379d1 
https://cdn.sstatic.net/Js/post-validation.en.js?v=fce27e94a6e2 
https://cdn.sstatic.net/Js/external-editor.en.js?v=fc20a49e5703 
https://www.google-analytics.com/analytics.js 
http://b.scorecardresearch.com/beacon.js 
https://cdn.sstatic.net/Js/external-editor.en.js?v=fc20a49e5703 
https://www.google-analytics.com/analytics.js 
http://b.scorecardresearch.com/beacon.js 
https://cdn.sstatic.net/Js/prettify-full.en.js?v=c8fdcebf5ffa 
https://cdn.sstatic.net/Js/prettify-full.en.js?v=c8fdcebf5ffa 
http://engine.adzerk.net/ados?t=1486193384630&request=%7B%22Placements%22:[%7B%22A%22:22,%22S%22:8277,%22D%22:%22adzerk1757851126%22,%22AT%22:4,%22Z%22:[43]%7D,%7B%22A%22:22,%22S%22:8277,%22D%22:%22adzerk8365673 
47%22,%22ATA%22:[5,17,2221],%22Z%22:[45]%7D],%22Keywords%22:%22javascript%2Cnode.js%2Crequest%22,%22Referrer%22:%22%22,%22IsAsync%22:true%7D 
http://engine.adzerk.net/ados?t=1486193384630&request=%7B%22Placements%22:[%7B%22A%22:22,%22S%22:8277,%22D%22:%22adzerk1757851126%22,%22AT%22:4,%22Z%22:[43]%7D,%7B%22A%22:22,%22S%22:8277,%22D%22:%22adzerk8365673 
47%22,%22ATA%22:[5,17,2221],%22Z%22:[45]%7D],%22Keywords%22:%22javascript%2Cnode.js%2Crequest%22,%22Referrer%22:%22%22,%22IsAsync%22:true%7D 
http://static.adzerk.net/Extensions/adFeedback.js 
http://static.adzerk.net/Extensions/adFeedback.js 
https://www.googletagservices.com/dcm/dcmads.js 
https://www.googletagservices.com/dcm/dcmads.js 
https://www.googletagservices.com/dcm/impl_v37.js 
https://www.googletagservices.com/dcm/impl_v37.js 
http://pagead2.googlesyndication.com/pagead/osd.js 
http://pagead2.googlesyndication.com/pagead/osd.js 
https://clc.stackoverflow.com/markup.js?omni=AndQltTPTNQIAAAAAM1rgQICAAAAAgAAAAAcAAAAfGphdmFzY3JpcHR8bm9kZS5qc3xyZXF1ZXN0fAAPFwvS4zhP5nDC&lw=460&zc=25&pf=9 
https://clc.stackoverflow.com/markup.js?omni=AndQltTPTNQIAAAAAM1rgQICAAAAAgAAAAAcAAAAfGphdmFzY3JpcHR8bm9kZS5qc3xyZXF1ZXN0fAAPFwvS4zhP5nDC&lw=460&zc=25&pf=9 
https://pagead2.googlesyndication.com/pagead/js/r20170130/r20110914/activeview/osd_listener.js 
https://pagead2.googlesyndication.com/pagead/js/r20170130/r20110914/activeview/osd_listener.js 
https://tpc.googlesyndication.com/sodar/akyi97Q8.js 
https://tpc.googlesyndication.com/sodar/akyi97Q8.js 
https://pagead2.googlesyndication.com/bg/Ro40R1A0hMb7Dr8cRp0qxN1ZFlZvSN3Q_N9oN3lQJ6s.js 
https://pagead2.googlesyndication.com/bg/Ro40R1A0hMb7Dr8cRp0qxN1ZFlZvSN3Q_N9oN3lQJ6s.js