bypass anti debug of target site

This commit is contained in:
geekgeekrun
2026-01-10 17:16:23 +08:00
parent 418ca66a30
commit 206d50ca61
8 changed files with 450 additions and 223 deletions
+2 -1
View File
@@ -15,9 +15,10 @@
"dayjs": "^1.11.10", "dayjs": "^1.11.10",
"json5": "^2.2.3", "json5": "^2.2.3",
"minimist": "^1.2.8", "minimist": "^1.2.8",
"puppeteer": "20.1.0", "puppeteer": "24.19.0",
"puppeteer-extra": "3.3.6", "puppeteer-extra": "3.3.6",
"puppeteer-extra-plugin-stealth": "2.11.2", "puppeteer-extra-plugin-stealth": "2.11.2",
"@geekgeekrun/puppeteer-extra-plugin-laodeng": "workspace:*",
"rimraf": "^3.0.2", "rimraf": "^3.0.2",
"tapable": "^2.2.1" "tapable": "^2.2.1"
}, },
@@ -73,21 +73,26 @@ export const autoStartChatEventBus = new EventEmitter()
*/ */
let puppeteer let puppeteer
let StealthPlugin let StealthPlugin
let LaodengPlugin
export async function initPuppeteer () { export async function initPuppeteer () {
// production // production
const importResult = await Promise.all( const importResult = await Promise.all(
[ [
import('puppeteer-extra'), import('puppeteer-extra'),
import('puppeteer-extra-plugin-stealth') import('puppeteer-extra-plugin-stealth'),
import('@geekgeekrun/puppeteer-extra-plugin-laodeng')
] ]
) )
puppeteer = importResult[0].default puppeteer = importResult[0].default
StealthPlugin = importResult[1].default StealthPlugin = importResult[1].default
LaodengPlugin = importResult[2].default
puppeteer.use(StealthPlugin()) puppeteer.use(StealthPlugin())
puppeteer.use(LaodengPlugin())
return { return {
puppeteer, puppeteer,
StealthPlugin StealthPlugin,
LaodengPlugin
} }
} }
@@ -1472,6 +1477,7 @@ export async function mainLoop (hooks) {
} }
await setDomainLocalStorage(browser, localStoragePageUrl, bossLocalStorage) await setDomainLocalStorage(browser, localStoragePageUrl, bossLocalStorage)
await page.bringToFront() await page.bringToFront()
// __GGR_INJECT_ANTI_ANTI_DEBUGGER__
await hooks.mainFlowWillLaunch?.promise({ await hooks.mainFlowWillLaunch?.promise({
jobNotMatchStrategy, jobNotMatchStrategy,
jobNotActiveStrategy, jobNotActiveStrategy,
File diff suppressed because one or more lines are too long
+29
View File
@@ -0,0 +1,29 @@
{
"name": "@geekgeekrun/puppeteer-extra-plugin-laodeng",
"version": "0.0.1",
"description": "laodeng",
"main": "./index.js",
"author": "geekgeekrun",
"productName": "GeekGeekRun",
"homepage": "https://github.com/geekgeekrun",
"scripts": {},
"devDependencies": {
"puppeteer": "^24.19.0"
},
"dependencies": {
"puppeteer-extra": "^3.3.6",
"puppeteer-extra-plugin": "^3.2.3"
},
"peerDependencies": {
"playwright-extra": "*",
"puppeteer-extra": "*"
},
"peerDependenciesMeta": {
"puppeteer-extra": {
"optional": true
},
"playwright-extra": {
"optional": true
}
}
}
+4 -3
View File
@@ -33,6 +33,7 @@
"@geekgeekrun/dingtalk-plugin": "workspace:*", "@geekgeekrun/dingtalk-plugin": "workspace:*",
"@geekgeekrun/geek-auto-start-chat-with-boss": "workspace:*", "@geekgeekrun/geek-auto-start-chat-with-boss": "workspace:*",
"@geekgeekrun/launch-bosszhipin-login-page-with-preload-extension": "workspace:*", "@geekgeekrun/launch-bosszhipin-login-page-with-preload-extension": "workspace:*",
"@geekgeekrun/puppeteer-extra-plugin-laodeng": "workspace:*",
"@geekgeekrun/sqlite-plugin": "workspace:*", "@geekgeekrun/sqlite-plugin": "workspace:*",
"@geekgeekrun/utils": "workspace:*", "@geekgeekrun/utils": "workspace:*",
"JSONStream": "^1.3.5", "JSONStream": "^1.3.5",
@@ -43,7 +44,7 @@
"mitt": "^3.0.1", "mitt": "^3.0.1",
"node-machine-id": "^1.1.12", "node-machine-id": "^1.1.12",
"pinia": "^3.0.2", "pinia": "^3.0.2",
"puppeteer": "20.1.0", "puppeteer": "24.19.0",
"puppeteer-extra-plugin-stealth": "2.11.2", "puppeteer-extra-plugin-stealth": "2.11.2",
"uuid": "^11.1.0", "uuid": "^11.1.0",
"vuedraggable": "^4.1.0" "vuedraggable": "^4.1.0"
@@ -54,7 +55,7 @@
"@electron-toolkit/tsconfig": "^1.0.1", "@electron-toolkit/tsconfig": "^1.0.1",
"@inquirer/prompts": "^7.0.1", "@inquirer/prompts": "^7.0.1",
"@inquirer/select": "^4.0.1", "@inquirer/select": "^4.0.1",
"@puppeteer/browsers": "^2.0.0", "@puppeteer/browsers": "^2.11.0",
"@rushstack/eslint-patch": "^1.7.1", "@rushstack/eslint-patch": "^1.7.1",
"@types/node": "^18.19.9", "@types/node": "^18.19.9",
"@unocss/preset-attributify": "^0.58.5", "@unocss/preset-attributify": "^0.58.5",
@@ -88,4 +89,4 @@
"vue-router": "^4.2.5", "vue-router": "^4.2.5",
"vue-tsc": "^1.8.27" "vue-tsc": "^1.8.27"
} }
} }
@@ -8,6 +8,8 @@ export interface BrowserInfo {
executablePath: string executablePath: string
} }
const CONFIG_VSERION = 2
const runtimeFolderPath = path.join(os.homedir(), '.geekgeekrun') const runtimeFolderPath = path.join(os.homedir(), '.geekgeekrun')
export const lastUsedBrowserRecordFilePath = path.join( export const lastUsedBrowserRecordFilePath = path.join(
runtimeFolderPath, runtimeFolderPath,
@@ -28,8 +30,13 @@ export const getLastUsedAndAvailableBrowser = async (): Promise<BrowserInfo | nu
} }
try { try {
const fileContent = (await fsPromise.readFile(lastUsedBrowserRecordFilePath)).toString() const fileContent = (await fsPromise.readFile(lastUsedBrowserRecordFilePath)).toString()
const [path, browser] = fileContent.split('\n').map((it) => it.trim()) const [path, browser, configVersion] = fileContent.split('\n').map((it) => it.trim())
if (!path || !fs.existsSync(path)) { if (
!path ||
!fs.existsSync(path) ||
!Number(configVersion) ||
Number(configVersion) < CONFIG_VSERION
) {
await removeLastUsedAndAvailableBrowserPath() await removeLastUsedAndAvailableBrowserPath()
return null return null
} }
@@ -57,7 +64,7 @@ export const saveLastUsedAndAvailableBrowserInfo = async (browserInfo: BrowserIn
} }
await fsPromise.writeFile( await fsPromise.writeFile(
lastUsedBrowserRecordFilePath, lastUsedBrowserRecordFilePath,
[browserInfo.executablePath, browserInfo.browser].join('\n') [browserInfo.executablePath, browserInfo.browser, CONFIG_VSERION].join('\n')
) )
} catch { } catch {
console.warn('lastUsedBrowserRecordFile write error') console.warn('lastUsedBrowserRecordFile write error')
@@ -16,7 +16,7 @@ const getPuppeteerManagerModule = async () => {
return puppeteerManager return puppeteerManager
} }
const EXPECT_CHROMIUM_BUILD_ID = '113.0.5672.63' const EXPECT_CHROMIUM_BUILD_ID = '139.0.7258.154'
const cacheDir = path.join(os.homedir(), '.geekgeekrun', 'cache') const cacheDir = path.join(os.homedir(), '.geekgeekrun', 'cache')
const getExpectCachedPuppeteerExecutable = async (): Promise<BrowserInfo> => { const getExpectCachedPuppeteerExecutable = async (): Promise<BrowserInfo> => {
+373 -213
View File
File diff suppressed because it is too large Load Diff