fix: improve error handling in CF bypass to prevent server crashes
CI / check (push) Successful in 24s
CI / deploy (push) Successful in 43s
CI / release (push) Skipped

This commit is contained in:
openhands committed 2026-08-04 18:28:35 +02:00
1 parent c565351c2f
commit 7137b046d7
1 file changed
+11 -3
+11 -3
View File
@@ -7,6 +7,7 @@ let browser: any = null;
async function getBrowser() {
if (browser) return browser;
try {
const puppeteer = await import("puppeteer-extra");
const StealthPlugin = await import("puppeteer-extra-plugin-stealth");
puppeteer.default.use(StealthPlugin.default());
@@ -21,18 +22,23 @@ async function getBrowser() {
],
});
return browser;
} catch (e) {
throw new Error(`Cloudflare bypass unavailable: ${(e as Error).message}`);
}
}
export async function fetchWithCfBypass(
url: string,
timeout = 30000,
): Promise<string> {
const b = await getBrowser();
const page = await b.newPage();
let b: any;
let page: any;
try {
b = await getBrowser();
page = await b.newPage();
await page.setUserAgent(UA);
await page.setDefaultTimeout(timeout);
try {
const response = await page.goto(url, {
waitUntil: "networkidle2",
timeout,
@@ -66,6 +72,7 @@ export async function fetchWithCfBypass(
const finalBody = await page.content();
return finalBody;
} finally {
if (page) {
try {
await page.close();
} catch {
@@ -73,6 +80,7 @@ export async function fetchWithCfBypass(
}
}
}
}
export async function fetchJsonWithCfBypass<T = unknown>(
url: string,