@shriyanss/js-recon 1.2.2-alpha.8 → 1.3.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +69 -0
- package/build/analyze/engine/astEngine.js +32 -26
- package/build/analyze/engine/astEngine.js.map +1 -1
- package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js.map +1 -1
- package/build/analyze/helpers/schemas.js +1 -0
- package/build/analyze/helpers/schemas.js.map +1 -1
- package/build/endpoints/next_js/client_jsFilesHref.js +4 -2
- package/build/endpoints/next_js/client_jsFilesHref.js.map +1 -1
- package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -1
- package/build/endpoints/next_js/client_subsequentRequests.js +12 -4
- package/build/endpoints/next_js/client_subsequentRequests.js.map +1 -1
- package/build/globalConfig.js +1 -1
- package/build/index.js +22 -2
- package/build/index.js.map +1 -1
- package/build/lazyLoad/downloadFilesUtil.js +74 -80
- package/build/lazyLoad/downloadFilesUtil.js.map +1 -1
- package/build/lazyLoad/downloadLoadedJsUtil.js +1 -1
- package/build/lazyLoad/downloadLoadedJsUtil.js.map +1 -1
- package/build/lazyLoad/globals.js +32 -1
- package/build/lazyLoad/globals.js.map +1 -1
- package/build/lazyLoad/index.js +53 -128
- package/build/lazyLoad/index.js.map +1 -1
- package/build/lazyLoad/next_js/NextJsCrawler.js +248 -0
- package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -0
- package/build/lazyLoad/next_js/next_GetJSScript.js +9 -8
- package/build/lazyLoad/next_js/next_GetJSScript.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_SubsequentRequests.js +4 -2
- package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -1
- package/build/lazyLoad/next_js/next_bruteForceJsFiles.js +8 -3
- package/build/lazyLoad/next_js/next_bruteForceJsFiles.js.map +1 -1
- package/build/lazyLoad/next_js/next_getClientSidePaths.js +83 -0
- package/build/lazyLoad/next_js/next_getClientSidePaths.js.map +1 -0
- package/build/lazyLoad/next_js/next_promiseResolve.js +54 -45
- package/build/lazyLoad/next_js/next_promiseResolve.js.map +1 -1
- package/build/lazyLoad/nuxt_js/nuxt_astParse.js.map +1 -1
- package/build/lazyLoad/react/react_getScriptTags.js +29 -0
- package/build/lazyLoad/react/react_getScriptTags.js.map +1 -0
- package/build/lazyLoad/react/react_sourcemapUrls.js +44 -0
- package/build/lazyLoad/react/react_sourcemapUrls.js.map +1 -0
- package/build/lazyLoad/react/react_webpackChunkPaths.js +188 -0
- package/build/lazyLoad/react/react_webpackChunkPaths.js.map +1 -0
- package/build/lazyLoad/techDetect/checkAngularJS.js +70 -0
- package/build/lazyLoad/techDetect/checkAngularJS.js.map +1 -0
- package/build/lazyLoad/techDetect/checkNextJS.js +45 -0
- package/build/lazyLoad/techDetect/checkNextJS.js.map +1 -0
- package/build/lazyLoad/techDetect/checkNuxtJS.js +39 -0
- package/build/lazyLoad/techDetect/checkNuxtJS.js.map +1 -0
- package/build/lazyLoad/techDetect/checkReact.js +44 -0
- package/build/lazyLoad/techDetect/checkReact.js.map +1 -0
- package/build/lazyLoad/techDetect/checkSvelte.js +69 -0
- package/build/lazyLoad/techDetect/checkSvelte.js.map +1 -0
- package/build/lazyLoad/techDetect/checkVueJS.js +118 -0
- package/build/lazyLoad/techDetect/checkVueJS.js.map +1 -0
- package/build/lazyLoad/techDetect/index.js +14 -254
- package/build/lazyLoad/techDetect/index.js.map +1 -1
- package/build/lazyLoad/vue/vue_RuntimeJs.js +122 -54
- package/build/lazyLoad/vue/vue_RuntimeJs.js.map +1 -1
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js +6 -0
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js.map +1 -1
- package/build/lazyLoad/vue/vue_discoverJsFiles.js +68 -0
- package/build/lazyLoad/vue/vue_discoverJsFiles.js.map +1 -0
- package/build/lazyLoad/vue/vue_getClientSidePaths.js +122 -0
- package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -0
- package/build/lazyLoad/vue/vue_jsImports.js +40 -29
- package/build/lazyLoad/vue/vue_jsImports.js.map +1 -1
- package/build/lazyLoad/vue/vue_pageSrc.js +60 -0
- package/build/lazyLoad/vue/vue_pageSrc.js.map +1 -0
- package/build/lazyLoad/vue/vue_reconstructSourceMaps.js +8 -0
- package/build/lazyLoad/vue/vue_reconstructSourceMaps.js.map +1 -1
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +136 -0
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -0
- package/build/lazyLoad/vue/vue_severalJsFilesHome.js +57 -0
- package/build/lazyLoad/vue/vue_severalJsFilesHome.js.map +1 -0
- package/build/lazyLoad/vue/vue_viteMapDeps.js +89 -0
- package/build/lazyLoad/vue/vue_viteMapDeps.js.map +1 -0
- package/build/map/index.js +19 -0
- package/build/map/index.js.map +1 -1
- package/build/map/next_js/getExports.js +3 -1
- package/build/map/next_js/getExports.js.map +1 -1
- package/build/map/next_js/getTurbopackConnections.js +255 -0
- package/build/map/next_js/getTurbopackConnections.js.map +1 -0
- package/build/map/next_js/getWebpackConnections.js +3 -4
- package/build/map/next_js/getWebpackConnections.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js +14 -10
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js.map +1 -1
- package/build/map/next_js/resolveFetch.js +2 -1
- package/build/map/next_js/resolveFetch.js.map +1 -1
- package/build/map/next_js/utils.js.map +1 -1
- package/build/map/vue_js/getViteConnections.js +293 -0
- package/build/map/vue_js/getViteConnections.js.map +1 -0
- package/build/map/vue_js/interactive.js +39 -0
- package/build/map/vue_js/interactive.js.map +1 -0
- package/build/map/vue_js/interactive_helpers/commandHandler.js +285 -0
- package/build/map/vue_js/interactive_helpers/commandHandler.js.map +1 -0
- package/build/map/vue_js/interactive_helpers/commandHelpers.js +39 -0
- package/build/map/vue_js/interactive_helpers/commandHelpers.js.map +1 -0
- package/build/map/vue_js/interactive_helpers/helpMenu.js +11 -0
- package/build/map/vue_js/interactive_helpers/helpMenu.js.map +1 -0
- package/build/mcp/cli.js +381 -0
- package/build/mcp/cli.js.map +1 -0
- package/build/mcp/commands.js +147 -0
- package/build/mcp/commands.js.map +1 -0
- package/build/mcp/config.js +68 -0
- package/build/mcp/config.js.map +1 -0
- package/build/mcp/index.js +29 -0
- package/build/mcp/index.js.map +1 -0
- package/build/mcp/providers.js +153 -0
- package/build/mcp/providers.js.map +1 -0
- package/build/mcp/tools.js +185 -0
- package/build/mcp/tools.js.map +1 -0
- package/build/run/index.js +35 -16
- package/build/run/index.js.map +1 -1
- package/build/utility/makeReq.js +25 -55
- package/build/utility/makeReq.js.map +1 -1
- package/build/utility/puppeteerInstance.js +5 -0
- package/build/utility/puppeteerInstance.js.map +1 -0
- package/contributing/nextjs.md +410 -0
- package/package.json +11 -4
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import makeRequest from "../../utility/makeReq.js";
|
|
11
|
+
const checkReact = ($, url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
+
let detected = false;
|
|
13
|
+
let evidence = "";
|
|
14
|
+
// to detect react, first go through all the <script src>
|
|
15
|
+
for (const el of $("script").get()) {
|
|
16
|
+
const attribs = el.attribs;
|
|
17
|
+
if (attribs) {
|
|
18
|
+
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
19
|
+
if (attrName === "src") {
|
|
20
|
+
// get the src
|
|
21
|
+
const src = attrValue;
|
|
22
|
+
// get the content of the src file
|
|
23
|
+
const res = yield makeRequest(src, {});
|
|
24
|
+
const body = yield res.text();
|
|
25
|
+
// check if the body contains "react" or "react-dom"
|
|
26
|
+
if (body.includes("__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED") &&
|
|
27
|
+
body.includes("__REACT_DEVTOOLS_GLOBAL_HOOK__")) {
|
|
28
|
+
detected = true;
|
|
29
|
+
evidence = `Found "__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED" and "__REACT_DEVTOOLS_GLOBAL_HOOK__" in ${src}`;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
else if (body.includes("__reactRouterVersion")) {
|
|
33
|
+
detected = true;
|
|
34
|
+
evidence = `Found "__reactRouterVersion" in ${src}`;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return { detected, evidence };
|
|
42
|
+
});
|
|
43
|
+
export { checkReact };
|
|
44
|
+
//# sourceMappingURL=checkReact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkReact.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/checkReact.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAGnD,MAAM,UAAU,GAAG,CAAO,CAAqB,EAAE,GAAW,EAAoD,EAAE;IAC9G,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,yDAAyD;IAEzD,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3B,IAAI,OAAO,EAAE,CAAC;YACV,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1D,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;oBACrB,cAAc;oBACd,MAAM,GAAG,GAAG,SAAS,CAAC;oBAEtB,kCAAkC;oBAClC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACvC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;oBAE9B,oDAAoD;oBACpD,IACI,IAAI,CAAC,QAAQ,CAAC,oDAAoD,CAAC;wBACnE,IAAI,CAAC,QAAQ,CAAC,gCAAgC,CAAC,EACjD,CAAC;wBACC,QAAQ,GAAG,IAAI,CAAC;wBAChB,QAAQ,GAAG,sGAAsG,GAAG,EAAE,CAAC;wBACvH,MAAM;oBACV,CAAC;yBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;wBAC/C,QAAQ,GAAG,IAAI,CAAC;wBAChB,QAAQ,GAAG,mCAAmC,GAAG,EAAE,CAAC;wBACpD,MAAM;oBACV,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC,CAAA,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Detects if a webpage uses Svelte/SvelteKit by checking for Svelte-specific attributes.
|
|
12
|
+
*
|
|
13
|
+
* Looks for svelte- prefixed class names, IDs, and SvelteKit-specific attributes
|
|
14
|
+
* like data-sveltekit-reload to identify Svelte applications.
|
|
15
|
+
*
|
|
16
|
+
* @param $ - The Cheerio API object containing the parsed HTML
|
|
17
|
+
* @returns Promise that resolves to an object with detection status and evidence
|
|
18
|
+
*/
|
|
19
|
+
export const checkSvelte = ($) => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
let detected = false;
|
|
21
|
+
let evidence = "";
|
|
22
|
+
// go through the page source, and check for all the class names of all HTML tags
|
|
23
|
+
$("*").each((_, el) => {
|
|
24
|
+
const tag = $(el).get(0).tagName;
|
|
25
|
+
const attribs = el.attribs;
|
|
26
|
+
if (attribs) {
|
|
27
|
+
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
28
|
+
if (attrName === "class") {
|
|
29
|
+
// @ts-ignore
|
|
30
|
+
if (attrValue.includes("svelte-")) {
|
|
31
|
+
detected = true;
|
|
32
|
+
evidence = `${attrName} :: ${attrValue}`;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
// now, search for the svelte- id of all elements
|
|
39
|
+
$("*").each((_, el) => {
|
|
40
|
+
const tag = $(el).get(0).tagName;
|
|
41
|
+
const attribs = el.attribs;
|
|
42
|
+
if (attribs) {
|
|
43
|
+
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
44
|
+
if (attrName === "id") {
|
|
45
|
+
// @ts-ignore
|
|
46
|
+
if (attrValue.includes("svelte-")) {
|
|
47
|
+
detected = true;
|
|
48
|
+
evidence = `${attrName} :: ${attrValue}`;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// now, check for the data-sveltekit-reload attribute
|
|
55
|
+
$("*").each((_, el) => {
|
|
56
|
+
const tag = $(el).get(0).tagName;
|
|
57
|
+
const attribs = el.attribs;
|
|
58
|
+
if (attribs) {
|
|
59
|
+
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
60
|
+
if (attrName === "data-sveltekit-reload") {
|
|
61
|
+
detected = true;
|
|
62
|
+
evidence = `${attrName} :: ${attrValue}`;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
return { detected, evidence };
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=checkSvelte.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkSvelte.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/checkSvelte.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAO,CAAC,EAAE,EAAE;IACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,iFAAiF;IACjF,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3B,IAAI,OAAO,EAAE,CAAC;YACV,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1D,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACvB,aAAa;oBACb,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBAChC,QAAQ,GAAG,IAAI,CAAC;wBAChB,QAAQ,GAAG,GAAG,QAAQ,OAAO,SAAS,EAAE,CAAC;oBAC7C,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,iDAAiD;IACjD,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3B,IAAI,OAAO,EAAE,CAAC;YACV,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACpB,aAAa;oBACb,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBAChC,QAAQ,GAAG,IAAI,CAAC;wBAChB,QAAQ,GAAG,GAAG,QAAQ,OAAO,SAAS,EAAE,CAAC;oBAC7C,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,qDAAqD;IACrD,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3B,IAAI,OAAO,EAAE,CAAC;YACV,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1D,IAAI,QAAQ,KAAK,uBAAuB,EAAE,CAAC;oBACvC,QAAQ,GAAG,IAAI,CAAC;oBAChB,QAAQ,GAAG,GAAG,QAAQ,OAAO,SAAS,EAAE,CAAC;gBAC7C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC,CAAA,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import makeRequest from "../../utility/makeReq.js";
|
|
11
|
+
/**
|
|
12
|
+
* Checks if a webpage uses Vue.js by iterating through all HTML tags and checking if any attribute name starts with "data-v-".
|
|
13
|
+
* @returns {Promise<{detected: boolean, evidence: string}>}
|
|
14
|
+
* A promise that resolves to an object with two properties:
|
|
15
|
+
* - detected: A boolean indicating whether Vue.js was detected.
|
|
16
|
+
* - evidence: A string with the evidence of the detection, or an empty string
|
|
17
|
+
* if Vue.js was not detected.
|
|
18
|
+
*/
|
|
19
|
+
const checkVueJS = ($, url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
let detected = false;
|
|
21
|
+
let evidence = "";
|
|
22
|
+
$("*").each((_, el) => {
|
|
23
|
+
const tag = $(el).get(0).tagName;
|
|
24
|
+
const attribs = el.attribs;
|
|
25
|
+
if (attribs) {
|
|
26
|
+
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
27
|
+
if (attrName.startsWith("data-v-")) {
|
|
28
|
+
detected = true;
|
|
29
|
+
evidence = `${tag} :: ${attrName}`;
|
|
30
|
+
}
|
|
31
|
+
else if (attrName.startsWith("data-vue-")) {
|
|
32
|
+
detected = true;
|
|
33
|
+
evidence = `${tag} :: ${attrName}`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
if (detected) {
|
|
39
|
+
return { detected, evidence };
|
|
40
|
+
}
|
|
41
|
+
// now, iterate through all the script tags, and find something like `app.js`
|
|
42
|
+
let appJsURL;
|
|
43
|
+
$("script").each((_, el) => {
|
|
44
|
+
const tag = $(el).get(0).tagName;
|
|
45
|
+
const attribs = el.attribs;
|
|
46
|
+
if (attribs) {
|
|
47
|
+
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
48
|
+
if (attrName === "src") {
|
|
49
|
+
// @ts-ignore
|
|
50
|
+
if (attrValue.includes("app.js")) {
|
|
51
|
+
// get the URL of the app.js file
|
|
52
|
+
// @ts-ignore
|
|
53
|
+
if (attrValue.startsWith("/")) {
|
|
54
|
+
// @ts-ignore
|
|
55
|
+
appJsURL = new URL(attrValue, url).href;
|
|
56
|
+
// @ts-ignore
|
|
57
|
+
}
|
|
58
|
+
else if (attrValue.startsWith("http")) {
|
|
59
|
+
// @ts-ignore
|
|
60
|
+
appJsURL = attrValue;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// @ts-ignore
|
|
64
|
+
appJsURL = new URL(attrValue, url).href;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
if (appJsURL) {
|
|
72
|
+
const appJsContent = yield makeRequest(appJsURL).then((res) => res.text());
|
|
73
|
+
if (appJsContent) {
|
|
74
|
+
if (appJsContent.includes("Vue.component(")) {
|
|
75
|
+
detected = true;
|
|
76
|
+
evidence = `${appJsURL} :: Vue.component()`;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (detected) {
|
|
81
|
+
return { detected, evidence };
|
|
82
|
+
}
|
|
83
|
+
// collect script[src] and link[rel="modulepreload"][href] URLs
|
|
84
|
+
const assetURLs = [];
|
|
85
|
+
$("script[src]").each((_, el) => {
|
|
86
|
+
const src = $(el).attr("src");
|
|
87
|
+
if (src) {
|
|
88
|
+
try {
|
|
89
|
+
assetURLs.push(new URL(src, url).href);
|
|
90
|
+
}
|
|
91
|
+
catch (_a) { }
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
$('link[rel="modulepreload"][href]').each((_, el) => {
|
|
95
|
+
const href = $(el).attr("href");
|
|
96
|
+
if (href) {
|
|
97
|
+
try {
|
|
98
|
+
assetURLs.push(new URL(href, url).href);
|
|
99
|
+
}
|
|
100
|
+
catch (_a) { }
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
for (const assetURL of assetURLs) {
|
|
104
|
+
try {
|
|
105
|
+
const res = yield makeRequest(assetURL);
|
|
106
|
+
if (!res)
|
|
107
|
+
continue;
|
|
108
|
+
const content = yield res.text();
|
|
109
|
+
if (content && content.toLowerCase().includes("__vue")) {
|
|
110
|
+
return { detected: true, evidence: `__vue in ${assetURL}` };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (_a) { }
|
|
114
|
+
}
|
|
115
|
+
return { detected, evidence };
|
|
116
|
+
});
|
|
117
|
+
export { checkVueJS };
|
|
118
|
+
//# sourceMappingURL=checkVueJS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkVueJS.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/checkVueJS.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,260 +10,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import chalk from "chalk";
|
|
11
11
|
import * as cheerio from "cheerio";
|
|
12
12
|
import makeRequest from "../../utility/makeReq.js";
|
|
13
|
-
import puppeteer from "
|
|
13
|
+
import puppeteer from "../../utility/puppeteerInstance.js";
|
|
14
14
|
import * as globalsUtil from "../../utility/globals.js";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* if Next.js was not detected.
|
|
22
|
-
*/
|
|
23
|
-
const checkNextJS = ($) => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
-
let detected = false;
|
|
25
|
-
let evidence = "";
|
|
26
|
-
// iterate through each HTML tag, and file tag value that starts with `/_next/`
|
|
27
|
-
$("*").each((_, el) => {
|
|
28
|
-
const tag = $(el).get(0).tagName;
|
|
29
|
-
// check the value of three attributes
|
|
30
|
-
const src = $(el).attr("src");
|
|
31
|
-
const srcSet = $(el).attr("srcset");
|
|
32
|
-
const imageSrcSet = $(el).attr("imageSrcSet");
|
|
33
|
-
if (src || srcSet || imageSrcSet) {
|
|
34
|
-
if (src && src.includes("/_next/")) {
|
|
35
|
-
detected = true;
|
|
36
|
-
evidence = `${tag} :: ${src}`;
|
|
37
|
-
}
|
|
38
|
-
else if (srcSet && srcSet.includes("/_next/")) {
|
|
39
|
-
detected = true;
|
|
40
|
-
evidence = `${tag} :: ${srcSet}`;
|
|
41
|
-
}
|
|
42
|
-
else if (imageSrcSet && imageSrcSet.includes("/_next/")) {
|
|
43
|
-
detected = true;
|
|
44
|
-
evidence = `${tag} :: ${imageSrcSet}`;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
return { detected, evidence };
|
|
49
|
-
});
|
|
50
|
-
/**
|
|
51
|
-
* Checks if a webpage uses Vue.js by iterating through all HTML tags and checking if any attribute name starts with "data-v-".
|
|
52
|
-
* @returns {Promise<{detected: boolean, evidence: string}>}
|
|
53
|
-
* A promise that resolves to an object with two properties:
|
|
54
|
-
* - detected: A boolean indicating whether Vue.js was detected.
|
|
55
|
-
* - evidence: A string with the evidence of the detection, or an empty string
|
|
56
|
-
* if Vue.js was not detected.
|
|
57
|
-
*/
|
|
58
|
-
const checkVueJS = ($, url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
|
-
let detected = false;
|
|
60
|
-
let evidence = "";
|
|
61
|
-
$("*").each((_, el) => {
|
|
62
|
-
const tag = $(el).get(0).tagName;
|
|
63
|
-
const attribs = el.attribs;
|
|
64
|
-
if (attribs) {
|
|
65
|
-
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
66
|
-
if (attrName.startsWith("data-v-")) {
|
|
67
|
-
detected = true;
|
|
68
|
-
evidence = `${tag} :: ${attrName}`;
|
|
69
|
-
}
|
|
70
|
-
else if (attrName.startsWith("data-vue-")) {
|
|
71
|
-
detected = true;
|
|
72
|
-
evidence = `${tag} :: ${attrName}`;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
if (detected) {
|
|
78
|
-
return { detected, evidence };
|
|
79
|
-
}
|
|
80
|
-
// now, iterate through all the script tags, and find something like `app.js`
|
|
81
|
-
let appJsURL;
|
|
82
|
-
$("script").each((_, el) => {
|
|
83
|
-
const tag = $(el).get(0).tagName;
|
|
84
|
-
const attribs = el.attribs;
|
|
85
|
-
if (attribs) {
|
|
86
|
-
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
87
|
-
if (attrName === "src") {
|
|
88
|
-
// @ts-ignore
|
|
89
|
-
if (attrValue.includes("app.js")) {
|
|
90
|
-
// get the URL of the app.js file
|
|
91
|
-
// @ts-ignore
|
|
92
|
-
if (attrValue.startsWith("/")) {
|
|
93
|
-
// @ts-ignore
|
|
94
|
-
appJsURL = new URL(attrValue, url).href;
|
|
95
|
-
// @ts-ignore
|
|
96
|
-
}
|
|
97
|
-
else if (attrValue.startsWith("http")) {
|
|
98
|
-
// @ts-ignore
|
|
99
|
-
appJsURL = attrValue;
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
// @ts-ignore
|
|
103
|
-
appJsURL = new URL(attrValue, url).href;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
if (appJsURL) {
|
|
111
|
-
const appJsContent = yield makeRequest(appJsURL).then((res) => res.text());
|
|
112
|
-
if (appJsContent) {
|
|
113
|
-
if (appJsContent.includes("Vue.component(")) {
|
|
114
|
-
detected = true;
|
|
115
|
-
evidence = `${appJsURL} :: Vue.component()`;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return { detected, evidence };
|
|
120
|
-
});
|
|
121
|
-
/**
|
|
122
|
-
* Detects if a webpage uses Nuxt.js by checking for "/_nuxt" paths in src or href attributes.
|
|
123
|
-
*
|
|
124
|
-
* @param $ - The Cheerio API object containing the parsed HTML
|
|
125
|
-
* @returns Promise that resolves to an object with detection status and evidence
|
|
126
|
-
*/
|
|
127
|
-
const checkNuxtJS = ($) => __awaiter(void 0, void 0, void 0, function* () {
|
|
128
|
-
let detected = false;
|
|
129
|
-
let evidence = "";
|
|
130
|
-
// go through the page source, and check for "/_nuxt" in the src or href attribute
|
|
131
|
-
$("*").each((_, el) => {
|
|
132
|
-
// @ts-ignore
|
|
133
|
-
const tag = $(el).get(0).tagName;
|
|
134
|
-
// @ts-ignore
|
|
135
|
-
const attribs = el.attribs;
|
|
136
|
-
if (attribs) {
|
|
137
|
-
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
138
|
-
if (attrName === "src" || attrName === "href") {
|
|
139
|
-
// @ts-ignore
|
|
140
|
-
if (attrValue.includes("/_nuxt")) {
|
|
141
|
-
detected = true;
|
|
142
|
-
evidence = `${attrName} :: ${attrValue}`;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
return { detected, evidence };
|
|
149
|
-
});
|
|
150
|
-
/**
|
|
151
|
-
* Detects if a webpage uses Svelte/SvelteKit by checking for Svelte-specific attributes.
|
|
152
|
-
*
|
|
153
|
-
* Looks for svelte- prefixed class names, IDs, and SvelteKit-specific attributes
|
|
154
|
-
* like data-sveltekit-reload to identify Svelte applications.
|
|
155
|
-
*
|
|
156
|
-
* @param $ - The Cheerio API object containing the parsed HTML
|
|
157
|
-
* @returns Promise that resolves to an object with detection status and evidence
|
|
158
|
-
*/
|
|
159
|
-
const checkSvelte = ($) => __awaiter(void 0, void 0, void 0, function* () {
|
|
160
|
-
let detected = false;
|
|
161
|
-
let evidence = "";
|
|
162
|
-
// go through the page source, and check for all the class names of all HTML tags
|
|
163
|
-
$("*").each((_, el) => {
|
|
164
|
-
const tag = $(el).get(0).tagName;
|
|
165
|
-
const attribs = el.attribs;
|
|
166
|
-
if (attribs) {
|
|
167
|
-
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
168
|
-
if (attrName === "class") {
|
|
169
|
-
// @ts-ignore
|
|
170
|
-
if (attrValue.includes("svelte-")) {
|
|
171
|
-
detected = true;
|
|
172
|
-
evidence = `${attrName} :: ${attrValue}`;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
// now, search for the svelte- id of all elements
|
|
179
|
-
$("*").each((_, el) => {
|
|
180
|
-
const tag = $(el).get(0).tagName;
|
|
181
|
-
const attribs = el.attribs;
|
|
182
|
-
if (attribs) {
|
|
183
|
-
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
184
|
-
if (attrName === "id") {
|
|
185
|
-
// @ts-ignore
|
|
186
|
-
if (attrValue.includes("svelte-")) {
|
|
187
|
-
detected = true;
|
|
188
|
-
evidence = `${attrName} :: ${attrValue}`;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
});
|
|
194
|
-
// now, check for the data-sveltekit-reload attribute
|
|
195
|
-
$("*").each((_, el) => {
|
|
196
|
-
const tag = $(el).get(0).tagName;
|
|
197
|
-
const attribs = el.attribs;
|
|
198
|
-
if (attribs) {
|
|
199
|
-
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
200
|
-
if (attrName === "data-sveltekit-reload") {
|
|
201
|
-
detected = true;
|
|
202
|
-
evidence = `${attrName} :: ${attrValue}`;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
});
|
|
207
|
-
return { detected, evidence };
|
|
208
|
-
});
|
|
209
|
-
const checkAngularJS = ($, url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
210
|
-
let detected = false;
|
|
211
|
-
let evidence = "";
|
|
212
|
-
// to detect angular js, first check if it has something like `main-*.js` or `main.js` in script src
|
|
213
|
-
let hasMainJs = false;
|
|
214
|
-
let mainJsURL = undefined;
|
|
215
|
-
$("script").each((_, el) => {
|
|
216
|
-
const tag = $(el).get(0).tagName;
|
|
217
|
-
const attribs = el.attribs;
|
|
218
|
-
if (attribs) {
|
|
219
|
-
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
220
|
-
if (attrName === "src") {
|
|
221
|
-
// @ts-ignore
|
|
222
|
-
if (attrValue.includes("main-")) {
|
|
223
|
-
hasMainJs = true;
|
|
224
|
-
// if the url starts with `main-...`, then build the full url
|
|
225
|
-
if (!attrValue.startsWith("http")) {
|
|
226
|
-
mainJsURL = new URL(attrValue, url).href;
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
mainJsURL = attrValue;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
// now, get the contents of the main.js file
|
|
237
|
-
if (hasMainJs) {
|
|
238
|
-
const mainJsRes = yield makeRequest(mainJsURL, {});
|
|
239
|
-
const mainJsBody = yield mainJsRes.text();
|
|
240
|
-
// check if the traces of angular js are present
|
|
241
|
-
// using regex for this, as this is simple and fast
|
|
242
|
-
// check: isAngularZone(), "isAngularZone", this.ngZone
|
|
243
|
-
// if lazyload enabled, need to check routerlink: `["routerLink",`
|
|
244
|
-
const isAngularZoneRegex = /isAngularZone\(\)/;
|
|
245
|
-
const isAngularZoneRegex2 = /"isAngularZone"/;
|
|
246
|
-
const ngZoneRegex = /this\.ngZone/;
|
|
247
|
-
const routerLinkRegex = /"routerLink"/;
|
|
248
|
-
if (isAngularZoneRegex.test(mainJsBody)) {
|
|
249
|
-
detected = true;
|
|
250
|
-
evidence = "isAngularZone()";
|
|
251
|
-
}
|
|
252
|
-
else if (isAngularZoneRegex2.test(mainJsBody)) {
|
|
253
|
-
detected = true;
|
|
254
|
-
evidence = '"isAngularZone"';
|
|
255
|
-
}
|
|
256
|
-
else if (ngZoneRegex.test(mainJsBody)) {
|
|
257
|
-
detected = true;
|
|
258
|
-
evidence = "this.ngZone";
|
|
259
|
-
}
|
|
260
|
-
else if (routerLinkRegex.test(mainJsBody)) {
|
|
261
|
-
detected = true;
|
|
262
|
-
evidence = "routerLink";
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
return { detected, evidence };
|
|
266
|
-
});
|
|
15
|
+
import { checkNextJS } from "./checkNextJS.js";
|
|
16
|
+
import { checkNuxtJS } from "./checkNuxtJS.js";
|
|
17
|
+
import { checkSvelte } from "./checkSvelte.js";
|
|
18
|
+
import { checkVueJS } from "./checkVueJS.js";
|
|
19
|
+
import { checkAngularJS } from "./checkAngularJS.js";
|
|
20
|
+
import { checkReact } from "./checkReact.js";
|
|
267
21
|
/**
|
|
268
22
|
* Detects the front-end framework used in a webpage.
|
|
269
23
|
* It does this by iterating through all HTML tags and checking if any attribute name starts with "data-v-".
|
|
@@ -280,7 +34,6 @@ const frameworkDetect = (url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
280
34
|
const res = yield makeRequest(url, {});
|
|
281
35
|
// get the page source in the browser
|
|
282
36
|
const browser = yield puppeteer.launch({
|
|
283
|
-
headless: true,
|
|
284
37
|
args: globalsUtil.getDisableSandbox() ? ["--no-sandbox", "--disable-setuid-sandbox"] : [],
|
|
285
38
|
});
|
|
286
39
|
const page = yield browser.newPage();
|
|
@@ -316,11 +69,13 @@ const frameworkDetect = (url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
316
69
|
const result_checkVueJS = yield checkVueJS($, url);
|
|
317
70
|
const result_checkSvelte = yield checkSvelte($);
|
|
318
71
|
const result_checkAngular = yield checkAngularJS($, url);
|
|
72
|
+
const result_checkReact = yield checkReact($, url);
|
|
319
73
|
// now, also check with the res response
|
|
320
74
|
let result_checkNextJS_res = { detected: false, evidence: "" };
|
|
321
75
|
let result_checkVueJS_res = { detected: false, evidence: "" };
|
|
322
76
|
let result_checkSvelte_res = { detected: false, evidence: "" };
|
|
323
77
|
let result_checkAngularJS_res = { detected: false, evidence: "" };
|
|
78
|
+
let result_checkReact_res = { detected: false, evidence: "" };
|
|
324
79
|
let $res;
|
|
325
80
|
// if network error was caused, then return
|
|
326
81
|
if (res === null) {
|
|
@@ -333,6 +88,7 @@ const frameworkDetect = (url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
333
88
|
result_checkVueJS_res = yield checkVueJS($res, url);
|
|
334
89
|
result_checkSvelte_res = yield checkSvelte($res);
|
|
335
90
|
result_checkAngularJS_res = yield checkAngularJS($res, url);
|
|
91
|
+
result_checkReact_res = yield checkReact($res, url);
|
|
336
92
|
}
|
|
337
93
|
if (result_checkNextJS.detected === true || result_checkNextJS_res.detected === true) {
|
|
338
94
|
const evidence = result_checkNextJS.evidence !== "" ? result_checkNextJS.evidence : result_checkNextJS_res.evidence;
|
|
@@ -358,6 +114,10 @@ const frameworkDetect = (url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
358
114
|
const evidence = result_checkAngular.evidence !== "" ? result_checkAngular.evidence : result_checkAngularJS_res.evidence;
|
|
359
115
|
return { name: "angular", evidence };
|
|
360
116
|
}
|
|
117
|
+
else if (result_checkReact.detected === true || result_checkReact_res.detected === true) {
|
|
118
|
+
const evidence = result_checkReact.evidence !== "" ? result_checkReact.evidence : result_checkReact_res.evidence;
|
|
119
|
+
return { name: "react", evidence };
|
|
120
|
+
}
|
|
361
121
|
return null;
|
|
362
122
|
});
|
|
363
123
|
export default frameworkDetect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/index.ts"],"names":[],"mappings":"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"}
|