@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.js
CHANGED
|
@@ -127,6 +127,7 @@ var createActorInfo = (info) => {
|
|
|
127
127
|
const buildLandingUrl = ({ protocol: protocol2, domain: domain2, path: path4 }) => {
|
|
128
128
|
const safeProtocol = String(protocol2).trim();
|
|
129
129
|
const safeDomain = normalizeDomain(domain2);
|
|
130
|
+
if (!safeDomain) return "";
|
|
130
131
|
const safePath = normalizePath(path4);
|
|
131
132
|
return `${safeProtocol}://${safeDomain}${safePath}`;
|
|
132
133
|
};
|
|
@@ -334,6 +335,18 @@ var ActorInfo = {
|
|
|
334
335
|
prefix: "",
|
|
335
336
|
xurl: []
|
|
336
337
|
}
|
|
338
|
+
}),
|
|
339
|
+
// 通用网页抓取 Actor:入口 URL 来自 query,因此这里只声明统一的 Actor 元信息。
|
|
340
|
+
webpage: createActorInfo({
|
|
341
|
+
key: "webpage",
|
|
342
|
+
name: "\u901A\u7528\u7F51\u9875",
|
|
343
|
+
domain: "",
|
|
344
|
+
path: "/",
|
|
345
|
+
share: {
|
|
346
|
+
mode: "dom",
|
|
347
|
+
prefix: "",
|
|
348
|
+
xurl: []
|
|
349
|
+
}
|
|
337
350
|
})
|
|
338
351
|
};
|
|
339
352
|
|
|
@@ -2765,33 +2778,86 @@ var toFiniteNumber = (value, fallback = 0) => {
|
|
|
2765
2778
|
const number = Number(value);
|
|
2766
2779
|
return Number.isFinite(number) ? number : fallback;
|
|
2767
2780
|
};
|
|
2768
|
-
var
|
|
2781
|
+
var resolveCloakRawMouseMove = (page) => {
|
|
2782
|
+
const rawMove = page?._original?.mouseMove;
|
|
2783
|
+
return typeof rawMove === "function" ? rawMove : null;
|
|
2784
|
+
};
|
|
2785
|
+
var syncCloakCursorPoint = (page, point) => {
|
|
2786
|
+
const cursor = page?._humanCursor;
|
|
2787
|
+
if (!cursor || !Number.isFinite(point?.x) || !Number.isFinite(point?.y)) {
|
|
2788
|
+
return;
|
|
2789
|
+
}
|
|
2790
|
+
cursor.x = point.x;
|
|
2791
|
+
cursor.y = point.y;
|
|
2792
|
+
cursor.initialized = true;
|
|
2793
|
+
};
|
|
2794
|
+
var isCloakHumanizedPage = (page) => Boolean(
|
|
2795
|
+
resolveCloakRawMouseMove(page) && page?._humanCursor
|
|
2796
|
+
);
|
|
2797
|
+
var resolveDragTiming = (page, options = {}) => {
|
|
2798
|
+
const cloakFastPath = isCloakHumanizedPage(page);
|
|
2799
|
+
return {
|
|
2800
|
+
preferRawMouseMove: cloakFastPath,
|
|
2801
|
+
initialDelayMs: options.initialDelayMs ?? (cloakFastPath ? 50 : 250),
|
|
2802
|
+
holdDelayMs: options.holdDelayMs ?? (cloakFastPath ? 70 : 350),
|
|
2803
|
+
liftDelayMs: options.liftDelayMs ?? (cloakFastPath ? 50 : 250),
|
|
2804
|
+
stepDelayMs: options.stepDelayMs ?? (cloakFastPath ? 20 : 90),
|
|
2805
|
+
finalMoveDelayMs: options.finalMoveDelayMs ?? (cloakFastPath ? 15 : 35),
|
|
2806
|
+
beforeReleaseDelayMs: options.beforeReleaseDelayMs ?? (cloakFastPath ? 20 : 100),
|
|
2807
|
+
afterReleaseDelayMs: options.afterReleaseDelayMs ?? (cloakFastPath ? 40 : 100)
|
|
2808
|
+
};
|
|
2809
|
+
};
|
|
2810
|
+
var dispatchMouseMove = async (page, point, options = {}) => {
|
|
2811
|
+
const { preferRaw = false, ...mouseOptions } = options;
|
|
2812
|
+
if (preferRaw) {
|
|
2813
|
+
const rawMove = resolveCloakRawMouseMove(page);
|
|
2814
|
+
if (rawMove) {
|
|
2815
|
+
await rawMove(point.x, point.y, mouseOptions);
|
|
2816
|
+
syncCloakCursorPoint(page, point);
|
|
2817
|
+
return;
|
|
2818
|
+
}
|
|
2819
|
+
}
|
|
2820
|
+
await page.mouse.move(point.x, point.y, mouseOptions);
|
|
2821
|
+
};
|
|
2769
2822
|
var dispatchMouseStart = (page, options = {}) => page.mouse.down(options);
|
|
2770
2823
|
var dispatchMouseEnd = (page, options = {}) => page.mouse.up(options);
|
|
2771
2824
|
var dragWithMouse = async (page, points, options = {}) => {
|
|
2772
|
-
|
|
2773
|
-
await
|
|
2825
|
+
const timing = resolveDragTiming(page, options);
|
|
2826
|
+
await dispatchMouseMove(page, points.start, {
|
|
2827
|
+
steps: 8,
|
|
2828
|
+
preferRaw: timing.preferRawMouseMove
|
|
2829
|
+
});
|
|
2830
|
+
await waitFor(page, timing.initialDelayMs);
|
|
2774
2831
|
await dispatchMouseStart(page);
|
|
2775
|
-
await waitFor(page,
|
|
2776
|
-
await dispatchMouseMove(page, points.lift, {
|
|
2777
|
-
|
|
2832
|
+
await waitFor(page, timing.holdDelayMs);
|
|
2833
|
+
await dispatchMouseMove(page, points.lift, {
|
|
2834
|
+
steps: 6,
|
|
2835
|
+
preferRaw: timing.preferRawMouseMove
|
|
2836
|
+
});
|
|
2837
|
+
await waitFor(page, timing.liftDelayMs);
|
|
2778
2838
|
for (let step = 1; step <= points.steps; step += 1) {
|
|
2779
2839
|
const progress = step / points.steps;
|
|
2780
2840
|
const easedProgress = 1 - (1 - progress) * (1 - progress);
|
|
2781
2841
|
await dispatchMouseMove(page, {
|
|
2782
2842
|
x: points.lift.x + (points.end.x - points.lift.x) * easedProgress,
|
|
2783
2843
|
y: points.lift.y + (points.end.y - points.lift.y) * easedProgress
|
|
2784
|
-
}, {
|
|
2785
|
-
|
|
2844
|
+
}, {
|
|
2845
|
+
steps: 2,
|
|
2846
|
+
preferRaw: timing.preferRawMouseMove
|
|
2847
|
+
});
|
|
2848
|
+
await waitFor(page, timing.stepDelayMs);
|
|
2786
2849
|
}
|
|
2787
2850
|
const finalMoveRepeats = Math.max(0, Math.floor(toFiniteNumber(options.finalMoveRepeats)));
|
|
2788
2851
|
for (let repeat = 0; repeat < finalMoveRepeats; repeat += 1) {
|
|
2789
|
-
await dispatchMouseMove(page, points.end, {
|
|
2790
|
-
|
|
2852
|
+
await dispatchMouseMove(page, points.end, {
|
|
2853
|
+
steps: 1,
|
|
2854
|
+
preferRaw: timing.preferRawMouseMove
|
|
2855
|
+
});
|
|
2856
|
+
await waitFor(page, timing.finalMoveDelayMs);
|
|
2791
2857
|
}
|
|
2792
|
-
await waitFor(page,
|
|
2858
|
+
await waitFor(page, timing.beforeReleaseDelayMs);
|
|
2793
2859
|
await dispatchMouseEnd(page);
|
|
2794
|
-
await waitFor(page,
|
|
2860
|
+
await waitFor(page, timing.afterReleaseDelayMs);
|
|
2795
2861
|
return true;
|
|
2796
2862
|
};
|
|
2797
2863
|
var dragWithTouch = async (page, points, options = {}) => {
|