我有一个节点服务器。我将Url传递给请求,然后提取带有cherio的约束。现在,我想做的就是检测该网页是否正在使用Google Analytics(分析)。我该怎么办?
request({uri: URL}, function(error, response, body)
{
if (!error)
{
const $ = cheerio.load(body);
const usesAnalytics = body.includes('googletag') || body.includes('analytics.js') || body.includes('ga.js');
const isUsingGA = ?;
}
}
他们从官方分析网站说,您可以找到一些表明GA处于活动状态的字符串。我尝试扫描这些内容,但是即使该页面正在运行GA,它们也始终返回false。我将其包含在上面的代码中。
我查看了使用它的网站,但在索引中看不到任何暗示他们正在使用它的内容。只有当我去找他们的消息来源并看到他们正在使用它时,它才会出现。我如何在节点中检测到这个?
答案 0 :(得分:0)
我有Node脚本,该脚本使用Puppeteer监视从网站发送的请求。
我前段时间写过这篇文章,因此某些部分可能与您无关,但是您可以:
'use strict';
const puppeteer = require('puppeteer');
function getGaTag(lookupDomain){
return new Promise((resolve) => {
(async() => {
var result = [];
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', request => {
const url = request.url();
const regexp = /(UA|YT|MO)-\d+-\d+/i;
// look for tracking script
if (url.match(/^https?:\/\/www\.google-analytics\.com\/(r\/)?collect/i)) {
console.log(url.match(regexp));
console.log('\n');
result.push(url.match(regexp)[0]);
}
request.continue();
});
try {
await page.goto(lookupDomain);
await page.waitFor(9000);
} catch (err) {
console.log("Couldn't fetch page " + err);
}
await browser.close();
resolve(result);
})();
})
}
getGaTag('https://store.google.com/').then(result => {
console.log(result)
})
运行node ga-check.js
现在将返回查找域[ 'UA-54090495-1' ]
上的Google Analytucs跟踪器的UA ID,在本例中为https://store.google.com
希望这会有所帮助!