在node.js中使用wappalyzer和puppeteer

stszievb  于 2023-10-17  发布在  Node.js
关注(0)|答案(2)|浏览(143)

我试图建立一个刮刀自动监控网络项目。
到目前为止一切顺利,脚本正在运行,但现在我想添加一个功能,自动分析我在项目中使用的库。这项工作最强大的脚本是wappalyser。他们有一个node包(https://www.npmjs.com/package/wappalyzer),它写的是你可以把它和pupperteer结合使用。
我设法运行pupperteer并在控制台中记录站点的源代码,但我没有正确的方法将源代码传递给wappalyzer分析函数。
你们能给我点提示吗?
我尝试了这段代码,但我得到了一个TypeError:url.split不是函数

function getLibarys(url) {

  (async () => {
    const browser = await puppeteer.launch({ headless: true });
    const page = await browser.newPage();
    await page.goto(url);

// get source code with puppeteer
const html = await page.content();

const wappalyzer = new Wappalyzer();

(async function () {
  try {
    await wappalyzer.init()

    // Optionally set additional request headers
    const headers = {}

    const site = await wappalyzer.open(page, headers)

    // Optionally capture and output errors
    site.on('error', console.error)

    const results = await site.analyze()

    console.log(JSON.stringify(results, null, 2))
  } catch (error) {
    console.error(error)
  }

  await wappalyzer.destroy()
})()
await browser.close()
  })()
}
fykwrbwg

fykwrbwg1#

通过使用wappalyzer的示例代码修复了它。

function getLibarys(url) {

const Wappalyzer = require('wappalyzer');

 
  const options = {
    debug: false,
    delay: 500,
    headers: {},
    maxDepth: 3,
    maxUrls: 10,
    maxWait: 5000,
    recursive: true,
    probe: true,
    proxy: false,
    userAgent: 'Wappalyzer',
    htmlMaxCols: 2000,
    htmlMaxRows: 2000,
    noScripts: false,
    noRedirect: false,
  };
  
  const wappalyzer = new Wappalyzer(options)
  
  ;(async function() {
    try {
      await wappalyzer.init()

  // Optionally set additional request headers
  const headers = {}

  const site = await wappalyzer.open(url, headers)

  // Optionally capture and output errors
  site.on('error', console.error)

  const results = await site.analyze()

  console.log(JSON.stringify(results, null, 2))
} catch (error) {
  console.error(error)
}

await wappalyzer.destroy()
  })()
}
brjng4g3

brjng4g32#

我不知道你是否还需要一个答案。但这是wappalyzer的一位合作者告诉我的:
通常你会这样运行Wappalyzer:

const Wappalyzer = require('wappalyzer')

const wappalyzer = new Wappalyzer()

await wappalyzer.init() // Launches a Puppeteer instance

const site = await wappalyzer.open(url)

如果你想使用你自己的浏览器示例,你可以跳过wappalyzer.init()并将示例分配给wappalyzer.browser:

const Wappalyzer = require('wappalyzer')

const wappalyzer = new Wappalyzer()

wappalyzer.browser = await puppeteer.launch() // Use your own Puppeteer launch logic

const site = await wappalyzer.open(url)

你可以找到讨论here。希望这对你有帮助。

相关问题