mirror of
https://github.com/tanjiro517/cf-bypass-fast.git
synced 2025-12-05 22:18:01 +01:00
80 lines
2.2 KiB
JavaScript
80 lines
2.2 KiB
JavaScript
async function cloudflare(data, page) {
|
|
return new Promise(async (resolve, reject) => {
|
|
if (!data.domain) return reject(new Error("Missing domain parameter"))
|
|
|
|
const startTime = Date.now()
|
|
let isResolved = false
|
|
let userAgent = null
|
|
|
|
const cl = setTimeout(() => {
|
|
if (!isResolved) {
|
|
isResolved = true
|
|
const elapsedTime = (Date.now() - startTime) / 1000
|
|
resolve({
|
|
cf_clearance: null,
|
|
user_agent: userAgent,
|
|
elapsed_time: elapsedTime,
|
|
})
|
|
}
|
|
}, 20000)
|
|
|
|
try {
|
|
if (data.proxy?.username && data.proxy?.password) {
|
|
await page.authenticate({
|
|
username: data.proxy.username,
|
|
password: data.proxy.password,
|
|
})
|
|
}
|
|
|
|
page.removeAllListeners("request")
|
|
page.removeAllListeners("response")
|
|
await page.setRequestInterception(true)
|
|
|
|
page.on("request", async (req) => {
|
|
try {
|
|
await req.continue()
|
|
} catch (_) {}
|
|
})
|
|
|
|
page.on("response", async (res) => {
|
|
try {
|
|
const url = res.url()
|
|
if (url.includes("/cdn-cgi/challenge-platform/")) {
|
|
const headers = res.headers()
|
|
if (headers["set-cookie"]) {
|
|
const match = headers["set-cookie"].match(/cf_clearance=([^;]+)/)
|
|
if (match) {
|
|
const cf_clearance = match[1]
|
|
const userAgent = (await res.request().headers())["user-agent"]
|
|
const elapsedTime = (Date.now() - startTime) / 1000
|
|
|
|
if (!isResolved) {
|
|
isResolved = true
|
|
clearTimeout(cl)
|
|
|
|
resolve({
|
|
cf_clearance,
|
|
user_agent: userAgent,
|
|
elapsed_time: elapsedTime,
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} catch (_) {}
|
|
})
|
|
|
|
await page.goto(data.domain, { waitUntil: "domcontentloaded" })
|
|
userAgent = await page.evaluate(() => navigator.userAgent)
|
|
} catch (err) {
|
|
if (!isResolved) {
|
|
isResolved = true
|
|
clearTimeout(cl)
|
|
reject(err)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
module.exports = cloudflare
|