Files
cf-bypass-fast-fork/endpoints/cookie.js
estebanthilliez 772ed5a176
Some checks failed
CI / release (push) Failing after 1m21s
add cookie wait endpoint
2026-04-24 22:21:24 +02:00

63 lines
1.7 KiB
JavaScript

function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms))
}
function logBrowserCookies({ domain, cookieName, cookies }) {
console.log(
`[cookie] Browser cookies before return for ${domain} (${cookieName}): ${JSON.stringify(cookies)}`
)
}
async function waitForCookie({ domain, proxy, cookieName }, page) {
if (!domain) throw new Error("Missing domain parameter")
if (!cookieName) throw new Error("Missing cookieName parameter")
const timeout = global.timeOut || 60000
const pollInterval = 250
const startTime = Date.now()
if (proxy?.username && proxy?.password) {
await page.authenticate({
username: proxy.username,
password: proxy.password,
})
}
await page.goto(domain, { waitUntil: "domcontentloaded" })
const userAgent = await page.evaluate(() => navigator.userAgent)
while (Date.now() - startTime < timeout) {
const cookies = await page.cookies()
const match = cookies.find((cookie) => cookie.name === cookieName)
if (match) {
logBrowserCookies({ domain, cookieName, cookies })
return {
cookie_name: match.name,
cookie_value: match.value,
cookie_domain: match.domain,
cookie_path: match.path,
http_only: match.httpOnly,
secure: match.secure,
user_agent: userAgent,
elapsed_time: (Date.now() - startTime) / 1000,
}
}
await sleep(pollInterval)
}
const cookies = await page.cookies()
logBrowserCookies({ domain, cookieName, cookies })
return {
cookie_name: cookieName,
cookie_value: null,
user_agent: userAgent,
elapsed_time: (Date.now() - startTime) / 1000,
}
}
module.exports = waitForCookie