@skrillex1224/playwright-toolkit 2.1.22 → 2.1.24
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/README.md +11 -17
- package/dist/index.cjs +254 -165
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +254 -165
- package/dist/index.js.map +3 -3
- package/index.d.ts +28 -10
- package/package.json +2 -4
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
npm install @skrillex1224/playwright-toolkit
|
|
9
9
|
|
|
10
10
|
# 反检测所需的依赖
|
|
11
|
-
npm install playwright
|
|
11
|
+
npm install playwright ghost-cursor-playwright delay
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
## 🚀 快速开始
|
|
@@ -16,34 +16,30 @@ npm install playwright-extra puppeteer-extra-plugin-stealth ghost-cursor-playwri
|
|
|
16
16
|
```javascript
|
|
17
17
|
import { Actor } from 'apify';
|
|
18
18
|
import { PlaywrightCrawler } from 'crawlee';
|
|
19
|
-
import { chromium } from 'playwright
|
|
20
|
-
import stealthPlugin from 'puppeteer-extra-plugin-stealth';
|
|
19
|
+
import { chromium } from 'playwright';
|
|
21
20
|
|
|
22
21
|
import { usePlaywrightToolKit } from '@skrillex1224/playwright-toolkit';
|
|
23
22
|
|
|
24
23
|
await Actor.init();
|
|
25
24
|
|
|
26
25
|
// 初始化工具箱
|
|
27
|
-
const { ApifyKit: KitHook, Launch,
|
|
26
|
+
const { ApifyKit: KitHook, Launch, AntiDetect, Humanize, Captcha, LiveView, Constants } = usePlaywrightToolKit();
|
|
28
27
|
|
|
29
28
|
// ⚠️ ApifyKit 需要异步初始化
|
|
30
29
|
const ApifyKit = await KitHook.useApifyKit();
|
|
31
30
|
|
|
32
|
-
// 创建 Stealth 浏览器
|
|
33
|
-
const stealthChromium = Launch.createStealthChromium(chromium, stealthPlugin);
|
|
34
|
-
|
|
35
31
|
// LiveView
|
|
36
32
|
const { startLiveViewServer, takeLiveScreenshot } = LiveView.useLiveView();
|
|
37
33
|
|
|
38
34
|
const crawler = new PlaywrightCrawler({
|
|
39
35
|
launchContext: {
|
|
40
|
-
launcher:
|
|
36
|
+
launcher: chromium,
|
|
41
37
|
launchOptions: Launch.getAdvancedLaunchOptions(),
|
|
42
38
|
},
|
|
43
39
|
preNavigationHooks: [
|
|
44
40
|
async ({ page }) => {
|
|
45
|
-
//
|
|
46
|
-
await
|
|
41
|
+
// 统一反爬:时区/语言/权限/视口
|
|
42
|
+
await AntiDetect.applyPage(page);
|
|
47
43
|
|
|
48
44
|
// 验证码监控
|
|
49
45
|
Captcha.useCaptchaMonitor(page, {
|
|
@@ -83,7 +79,7 @@ await Actor.exit();
|
|
|
83
79
|
|
|
84
80
|
| 层次 | 问题 | 解决方案 |
|
|
85
81
|
|------|------|----------|
|
|
86
|
-
| **指纹层** |
|
|
82
|
+
| **指纹层** | UA/屏幕/语言/时区一致性 | Crawlee `useFingerprints` + `AntiDetect` |
|
|
87
83
|
| **行为层** | 机械输入/点击/滚动 | `ghost-cursor-playwright` + Humanize |
|
|
88
84
|
| **页面层** | 验证码/风控检测 | Captcha 监控器 |
|
|
89
85
|
|
|
@@ -91,14 +87,13 @@ await Actor.exit();
|
|
|
91
87
|
|
|
92
88
|
| 模块 | 方法 | 说明 |
|
|
93
89
|
|------|------|------|
|
|
94
|
-
| `Launch` | `createStealthChromium(chromium, stealthPlugin)` | 注册 Stealth 插件 |
|
|
95
90
|
| `Launch` | `getAdvancedLaunchOptions()` | 增强版启动参数 |
|
|
96
91
|
| `Launch` | `getLaunchOptions()` | 基础启动参数 |
|
|
97
92
|
| `Launch` | `getFingerprintGeneratorOptions()` | 指纹生成器选项 |
|
|
98
|
-
| `
|
|
99
|
-
| `
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
93
|
+
| `AntiDetect` | `applyPage(page, options?)` | 应用时区/语言/权限/视口 |
|
|
94
|
+
| `AntiDetect` | `applyContext(context, options?)` | 仅应用 Context 设置 |
|
|
95
|
+
| `AntiDetect` | `syncViewportWithScreen(page)` | 同步视口与屏幕 |
|
|
96
|
+
| `AntiDetect` | `getTlsFingerprintOptions(userAgent?)` | got-scraping TLS 指纹 |
|
|
102
97
|
| `Humanize` | `initializeCursor(page)` | 初始化 Cursor (必须先调用) |
|
|
103
98
|
| `Humanize` | `jitterMs(base, jitterPercent?)` | 生成带抖动的毫秒数 (同步,返回 number) |
|
|
104
99
|
| `Humanize` | `humanType(page, selector, text, options?)` | 人类化输入 (baseDelay=180ms ±40%) |
|
|
@@ -226,4 +221,3 @@ const base64Image = await Utils.fullPageScreenshot(page);
|
|
|
226
221
|
## 📄 License
|
|
227
222
|
|
|
228
223
|
ISC
|
|
229
|
-
|