@skrillex1224/playwright-toolkit 3.0.18 → 3.0.21
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/dist/browser.js +13 -232
- package/dist/browser.js.map +3 -3
- package/dist/index.cjs +78 -12
- package/dist/index.cjs.map +2 -2
- package/dist/index.js +78 -12
- package/dist/index.js.map +2 -2
- package/index.d.ts +5 -0
- package/package.json +1 -9
- package/scripts/postinstall.js +0 -203
package/dist/index.cjs
CHANGED
|
@@ -154,6 +154,7 @@ var createActorInfo = (info) => {
|
|
|
154
154
|
const buildLandingUrl = ({ protocol: protocol2, domain: domain2, path: path4 }) => {
|
|
155
155
|
const safeProtocol = String(protocol2).trim();
|
|
156
156
|
const safeDomain = normalizeDomain(domain2);
|
|
157
|
+
if (!safeDomain) return "";
|
|
157
158
|
const safePath = normalizePath(path4);
|
|
158
159
|
return `${safeProtocol}://${safeDomain}${safePath}`;
|
|
159
160
|
};
|
|
@@ -361,6 +362,18 @@ var ActorInfo = {
|
|
|
361
362
|
prefix: "",
|
|
362
363
|
xurl: []
|
|
363
364
|
}
|
|
365
|
+
}),
|
|
366
|
+
// 通用网页抓取 Actor:入口 URL 来自 query,因此这里只声明统一的 Actor 元信息。
|
|
367
|
+
webpage: createActorInfo({
|
|
368
|
+
key: "webpage",
|
|
369
|
+
name: "\u901A\u7528\u7F51\u9875",
|
|
370
|
+
domain: "",
|
|
371
|
+
path: "/",
|
|
372
|
+
share: {
|
|
373
|
+
mode: "dom",
|
|
374
|
+
prefix: "",
|
|
375
|
+
xurl: []
|
|
376
|
+
}
|
|
364
377
|
})
|
|
365
378
|
};
|
|
366
379
|
|
|
@@ -2793,33 +2806,86 @@ var toFiniteNumber = (value, fallback = 0) => {
|
|
|
2793
2806
|
const number = Number(value);
|
|
2794
2807
|
return Number.isFinite(number) ? number : fallback;
|
|
2795
2808
|
};
|
|
2796
|
-
var
|
|
2809
|
+
var resolveCloakRawMouseMove = (page) => {
|
|
2810
|
+
const rawMove = page?._original?.mouseMove;
|
|
2811
|
+
return typeof rawMove === "function" ? rawMove : null;
|
|
2812
|
+
};
|
|
2813
|
+
var syncCloakCursorPoint = (page, point) => {
|
|
2814
|
+
const cursor = page?._humanCursor;
|
|
2815
|
+
if (!cursor || !Number.isFinite(point?.x) || !Number.isFinite(point?.y)) {
|
|
2816
|
+
return;
|
|
2817
|
+
}
|
|
2818
|
+
cursor.x = point.x;
|
|
2819
|
+
cursor.y = point.y;
|
|
2820
|
+
cursor.initialized = true;
|
|
2821
|
+
};
|
|
2822
|
+
var isCloakHumanizedPage = (page) => Boolean(
|
|
2823
|
+
resolveCloakRawMouseMove(page) && page?._humanCursor
|
|
2824
|
+
);
|
|
2825
|
+
var resolveDragTiming = (page, options = {}) => {
|
|
2826
|
+
const cloakFastPath = isCloakHumanizedPage(page);
|
|
2827
|
+
return {
|
|
2828
|
+
preferRawMouseMove: cloakFastPath,
|
|
2829
|
+
initialDelayMs: options.initialDelayMs ?? (cloakFastPath ? 50 : 250),
|
|
2830
|
+
holdDelayMs: options.holdDelayMs ?? (cloakFastPath ? 70 : 350),
|
|
2831
|
+
liftDelayMs: options.liftDelayMs ?? (cloakFastPath ? 50 : 250),
|
|
2832
|
+
stepDelayMs: options.stepDelayMs ?? (cloakFastPath ? 20 : 90),
|
|
2833
|
+
finalMoveDelayMs: options.finalMoveDelayMs ?? (cloakFastPath ? 15 : 35),
|
|
2834
|
+
beforeReleaseDelayMs: options.beforeReleaseDelayMs ?? (cloakFastPath ? 20 : 100),
|
|
2835
|
+
afterReleaseDelayMs: options.afterReleaseDelayMs ?? (cloakFastPath ? 40 : 100)
|
|
2836
|
+
};
|
|
2837
|
+
};
|
|
2838
|
+
var dispatchMouseMove = async (page, point, options = {}) => {
|
|
2839
|
+
const { preferRaw = false, ...mouseOptions } = options;
|
|
2840
|
+
if (preferRaw) {
|
|
2841
|
+
const rawMove = resolveCloakRawMouseMove(page);
|
|
2842
|
+
if (rawMove) {
|
|
2843
|
+
await rawMove(point.x, point.y, mouseOptions);
|
|
2844
|
+
syncCloakCursorPoint(page, point);
|
|
2845
|
+
return;
|
|
2846
|
+
}
|
|
2847
|
+
}
|
|
2848
|
+
await page.mouse.move(point.x, point.y, mouseOptions);
|
|
2849
|
+
};
|
|
2797
2850
|
var dispatchMouseStart = (page, options = {}) => page.mouse.down(options);
|
|
2798
2851
|
var dispatchMouseEnd = (page, options = {}) => page.mouse.up(options);
|
|
2799
2852
|
var dragWithMouse = async (page, points, options = {}) => {
|
|
2800
|
-
|
|
2801
|
-
await
|
|
2853
|
+
const timing = resolveDragTiming(page, options);
|
|
2854
|
+
await dispatchMouseMove(page, points.start, {
|
|
2855
|
+
steps: 8,
|
|
2856
|
+
preferRaw: timing.preferRawMouseMove
|
|
2857
|
+
});
|
|
2858
|
+
await waitFor(page, timing.initialDelayMs);
|
|
2802
2859
|
await dispatchMouseStart(page);
|
|
2803
|
-
await waitFor(page,
|
|
2804
|
-
await dispatchMouseMove(page, points.lift, {
|
|
2805
|
-
|
|
2860
|
+
await waitFor(page, timing.holdDelayMs);
|
|
2861
|
+
await dispatchMouseMove(page, points.lift, {
|
|
2862
|
+
steps: 6,
|
|
2863
|
+
preferRaw: timing.preferRawMouseMove
|
|
2864
|
+
});
|
|
2865
|
+
await waitFor(page, timing.liftDelayMs);
|
|
2806
2866
|
for (let step = 1; step <= points.steps; step += 1) {
|
|
2807
2867
|
const progress = step / points.steps;
|
|
2808
2868
|
const easedProgress = 1 - (1 - progress) * (1 - progress);
|
|
2809
2869
|
await dispatchMouseMove(page, {
|
|
2810
2870
|
x: points.lift.x + (points.end.x - points.lift.x) * easedProgress,
|
|
2811
2871
|
y: points.lift.y + (points.end.y - points.lift.y) * easedProgress
|
|
2812
|
-
}, {
|
|
2813
|
-
|
|
2872
|
+
}, {
|
|
2873
|
+
steps: 2,
|
|
2874
|
+
preferRaw: timing.preferRawMouseMove
|
|
2875
|
+
});
|
|
2876
|
+
await waitFor(page, timing.stepDelayMs);
|
|
2814
2877
|
}
|
|
2815
2878
|
const finalMoveRepeats = Math.max(0, Math.floor(toFiniteNumber(options.finalMoveRepeats)));
|
|
2816
2879
|
for (let repeat = 0; repeat < finalMoveRepeats; repeat += 1) {
|
|
2817
|
-
await dispatchMouseMove(page, points.end, {
|
|
2818
|
-
|
|
2880
|
+
await dispatchMouseMove(page, points.end, {
|
|
2881
|
+
steps: 1,
|
|
2882
|
+
preferRaw: timing.preferRawMouseMove
|
|
2883
|
+
});
|
|
2884
|
+
await waitFor(page, timing.finalMoveDelayMs);
|
|
2819
2885
|
}
|
|
2820
|
-
await waitFor(page,
|
|
2886
|
+
await waitFor(page, timing.beforeReleaseDelayMs);
|
|
2821
2887
|
await dispatchMouseEnd(page);
|
|
2822
|
-
await waitFor(page,
|
|
2888
|
+
await waitFor(page, timing.afterReleaseDelayMs);
|
|
2823
2889
|
return true;
|
|
2824
2890
|
};
|
|
2825
2891
|
var dragWithTouch = async (page, points, options = {}) => {
|