@skrillex1224/playwright-toolkit 2.1.170 → 2.1.171
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 +2 -1
- package/dist/browser.js +81 -0
- package/dist/browser.js.map +3 -3
- package/dist/index.cjs +57 -10
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +57 -10
- package/dist/index.js.map +3 -3
- package/index.d.ts +37 -0
- package/package.json +1 -1
- /package/dist/{proxy-meter.js → internals/proxy-meter.js} +0 -0
package/dist/index.cjs
CHANGED
|
@@ -573,7 +573,7 @@ var CrawlerError = class _CrawlerError extends Error {
|
|
|
573
573
|
// src/apify-kit.js
|
|
574
574
|
var import_serialize_error2 = require("serialize-error");
|
|
575
575
|
|
|
576
|
-
// src/proxy-meter-runtime.js
|
|
576
|
+
// src/internals/proxy-meter-runtime.js
|
|
577
577
|
var import_child_process = require("child_process");
|
|
578
578
|
var import_fs = require("fs");
|
|
579
579
|
var import_os = require("os");
|
|
@@ -643,6 +643,10 @@ var resolveResourceTypeMeta = (domain) => {
|
|
|
643
643
|
};
|
|
644
644
|
var resolveScriptPath = () => {
|
|
645
645
|
const baseDir = typeof __dirname !== "undefined" ? __dirname : import_path.default.dirname((0, import_url.fileURLToPath)(import_meta.url));
|
|
646
|
+
const internalCandidate = import_path.default.join(baseDir, "internals", "proxy-meter.js");
|
|
647
|
+
if ((0, import_fs.existsSync)(internalCandidate)) {
|
|
648
|
+
return internalCandidate;
|
|
649
|
+
}
|
|
646
650
|
return import_path.default.join(baseDir, "proxy-meter.js");
|
|
647
651
|
};
|
|
648
652
|
var pickFreePort = () => {
|
|
@@ -926,6 +930,12 @@ var getProxyMeterSnapshot = async (options = {}) => {
|
|
|
926
930
|
}
|
|
927
931
|
return snapshot;
|
|
928
932
|
};
|
|
933
|
+
var ProxyMeterRuntime = {
|
|
934
|
+
startProxyMeter,
|
|
935
|
+
recordProxyMeterResourceType,
|
|
936
|
+
stopProxyMeter,
|
|
937
|
+
getProxyMeterSnapshot
|
|
938
|
+
};
|
|
929
939
|
|
|
930
940
|
// src/apify-kit.js
|
|
931
941
|
var logger3 = createInternalLogger("ApifyKit");
|
|
@@ -1045,7 +1055,7 @@ async function createApifyKit() {
|
|
|
1045
1055
|
* @param {Object} data - 要推送的数据对象
|
|
1046
1056
|
*/
|
|
1047
1057
|
async pushSuccess(data) {
|
|
1048
|
-
const traffic = await getProxyMeterSnapshot({ finalize: true });
|
|
1058
|
+
const traffic = await ProxyMeterRuntime.getProxyMeterSnapshot({ finalize: true });
|
|
1049
1059
|
await Actor2.pushData({
|
|
1050
1060
|
// 固定为0
|
|
1051
1061
|
code: Code.Success,
|
|
@@ -1067,7 +1077,7 @@ async function createApifyKit() {
|
|
|
1067
1077
|
const isCrawlerError = CrawlerError.isCrawlerError(error);
|
|
1068
1078
|
const code = isCrawlerError ? error.code : Code.UnknownError;
|
|
1069
1079
|
const context = isCrawlerError ? error.context : {};
|
|
1070
|
-
const traffic = await getProxyMeterSnapshot({ finalize: true });
|
|
1080
|
+
const traffic = await ProxyMeterRuntime.getProxyMeterSnapshot({ finalize: true });
|
|
1071
1081
|
await Actor2.pushData({
|
|
1072
1082
|
// 如果是 CrawlerError,使用其 code,否则使用默认 Failed code
|
|
1073
1083
|
code,
|
|
@@ -1698,6 +1708,7 @@ var normalizeByPassDomains = (domains) => {
|
|
|
1698
1708
|
if (!Array.isArray(domains)) return [];
|
|
1699
1709
|
return domains.map((item) => String(item || "").trim()).filter(Boolean);
|
|
1700
1710
|
};
|
|
1711
|
+
var normalizeHostname = (value = "") => String(value || "").trim().toLowerCase();
|
|
1701
1712
|
var buildByPassDomainRule = (rawPattern) => {
|
|
1702
1713
|
const pattern = String(rawPattern || "").trim().toLowerCase();
|
|
1703
1714
|
if (!pattern) return null;
|
|
@@ -1718,7 +1729,7 @@ var buildByPassDomainRules = (domains = []) => {
|
|
|
1718
1729
|
var findMatchedByPassRule = (rules = [], requestUrl = "") => {
|
|
1719
1730
|
let hostname = "";
|
|
1720
1731
|
try {
|
|
1721
|
-
hostname = new URL(String(requestUrl || "")).hostname
|
|
1732
|
+
hostname = normalizeHostname(new URL(String(requestUrl || "")).hostname);
|
|
1722
1733
|
} catch {
|
|
1723
1734
|
return null;
|
|
1724
1735
|
}
|
|
@@ -1735,6 +1746,41 @@ var findMatchedByPassRule = (rules = [], requestUrl = "") => {
|
|
|
1735
1746
|
hostname
|
|
1736
1747
|
};
|
|
1737
1748
|
};
|
|
1749
|
+
var isDomainCoveredByByPass = (domain = "", rules = []) => {
|
|
1750
|
+
const hostname = normalizeHostname(domain);
|
|
1751
|
+
if (!hostname) return false;
|
|
1752
|
+
for (const rule of rules || []) {
|
|
1753
|
+
if (!rule || typeof rule.test !== "function") continue;
|
|
1754
|
+
if (rule.test(hostname)) return true;
|
|
1755
|
+
}
|
|
1756
|
+
return false;
|
|
1757
|
+
};
|
|
1758
|
+
var resolveRouteByProxy = ({
|
|
1759
|
+
requestUrl = "",
|
|
1760
|
+
enableProxy = false,
|
|
1761
|
+
byPassRules = []
|
|
1762
|
+
}) => {
|
|
1763
|
+
if (!enableProxy) {
|
|
1764
|
+
return { route: "direct", matchedRule: null, hostname: "" };
|
|
1765
|
+
}
|
|
1766
|
+
const matched = findMatchedByPassRule(byPassRules, requestUrl);
|
|
1767
|
+
if (!matched) {
|
|
1768
|
+
return { route: "proxy", matchedRule: null, hostname: "" };
|
|
1769
|
+
}
|
|
1770
|
+
if (matched.rule) {
|
|
1771
|
+
return { route: "direct", matchedRule: matched.rule, hostname: matched.hostname };
|
|
1772
|
+
}
|
|
1773
|
+
return { route: "proxy", matchedRule: null, hostname: matched.hostname };
|
|
1774
|
+
};
|
|
1775
|
+
var ByPass = {
|
|
1776
|
+
normalizeByPassDomains,
|
|
1777
|
+
normalizeHostname,
|
|
1778
|
+
buildByPassDomainRule,
|
|
1779
|
+
buildByPassDomainRules,
|
|
1780
|
+
findMatchedByPassRule,
|
|
1781
|
+
isDomainCoveredByByPass,
|
|
1782
|
+
resolveRouteByProxy
|
|
1783
|
+
};
|
|
1738
1784
|
|
|
1739
1785
|
// src/launch.js
|
|
1740
1786
|
var logger7 = createInternalLogger("Launch");
|
|
@@ -1752,7 +1798,7 @@ var resolveProxyLaunchOptions = (proxyConfiguration = {}) => {
|
|
|
1752
1798
|
if (!enableProxy || !proxyUrl) {
|
|
1753
1799
|
return { byPassDomains: [], enableProxy, proxyUrl };
|
|
1754
1800
|
}
|
|
1755
|
-
const byPassDomains = normalizeByPassDomains(config.by_pass_domains);
|
|
1801
|
+
const byPassDomains = ByPass.normalizeByPassDomains(config.by_pass_domains);
|
|
1756
1802
|
return { byPassDomains, enableProxy, proxyUrl };
|
|
1757
1803
|
};
|
|
1758
1804
|
var Launch = {
|
|
@@ -1770,8 +1816,8 @@ var Launch = {
|
|
|
1770
1816
|
postNavigationHooks = []
|
|
1771
1817
|
} = normalizedOptions;
|
|
1772
1818
|
const { byPassDomains, enableProxy, proxyUrl } = resolveProxyLaunchOptions(proxyConfiguration);
|
|
1773
|
-
const byPassRules = buildByPassDomainRules(byPassDomains);
|
|
1774
|
-
const proxyMeter = enableProxy && proxyUrl ? startProxyMeter({ proxyUrl, debugMode }) : null;
|
|
1819
|
+
const byPassRules = ByPass.buildByPassDomainRules(byPassDomains);
|
|
1820
|
+
const proxyMeter = enableProxy && proxyUrl ? ProxyMeterRuntime.startProxyMeter({ proxyUrl, debugMode }) : null;
|
|
1775
1821
|
const launchProxy = proxyMeter ? { server: proxyMeter.server } : null;
|
|
1776
1822
|
if (launchProxy && byPassDomains.length > 0) {
|
|
1777
1823
|
launchProxy.bypass = byPassDomains.join(",");
|
|
@@ -1825,9 +1871,9 @@ var Launch = {
|
|
|
1825
1871
|
const requestHandler = (req) => {
|
|
1826
1872
|
const requestUrl = req.url();
|
|
1827
1873
|
const resourceType = req.resourceType();
|
|
1828
|
-
const matched = byPassDomains.length > 0 ? findMatchedByPassRule(byPassRules, requestUrl) : null;
|
|
1829
|
-
if (launchProxy
|
|
1830
|
-
recordProxyMeterResourceType(requestUrl, resourceType);
|
|
1874
|
+
const matched = byPassDomains.length > 0 ? ByPass.findMatchedByPassRule(byPassRules, requestUrl) : null;
|
|
1875
|
+
if (launchProxy) {
|
|
1876
|
+
ProxyMeterRuntime.recordProxyMeterResourceType(requestUrl, resourceType);
|
|
1831
1877
|
}
|
|
1832
1878
|
if (!enableByPassLogger || byPassDomains.length === 0) return;
|
|
1833
1879
|
if (!matched || !matched.rule) return;
|
|
@@ -4181,6 +4227,7 @@ var usePlaywrightToolKit = () => {
|
|
|
4181
4227
|
Display,
|
|
4182
4228
|
Logger,
|
|
4183
4229
|
Share,
|
|
4230
|
+
ByPass,
|
|
4184
4231
|
$Internals: { LOG_TEMPLATES, stripAnsi }
|
|
4185
4232
|
};
|
|
4186
4233
|
};
|