From c8ad3387c53903eb9c6637e3464538d85011bc23 Mon Sep 17 00:00:00 2001 From: MemeCornucopia <148788549+MemeCornucopia@users.noreply.github.com> Date: Mon, 29 Jan 2024 13:32:21 -0500 Subject: [PATCH] Added Cookie.ts. Changed request changes. --- src/entrypoint/utils/cookie.ts | 22 ++++++++++++++++++++++ src/providers/embeds/wootly.ts | 14 ++++++++------ src/providers/sources/goojara/getEmbeds.ts | 12 +++++++----- 3 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 src/entrypoint/utils/cookie.ts diff --git a/src/entrypoint/utils/cookie.ts b/src/entrypoint/utils/cookie.ts new file mode 100644 index 0000000..4f2fcbe --- /dev/null +++ b/src/entrypoint/utils/cookie.ts @@ -0,0 +1,22 @@ +export interface Cookie { + name: string; + value: string; +} + +export function makeCookieHeader(cookies: Record): string { + return Object.entries(cookies) + .map(([name, value]) => `${name}=${value}`) + .join('; '); +} + +export function parseSetCookie(headerValue: string): Record { + const cookies: Record = {}; + const parts = headerValue.split(/; */); + for (const part of parts) { + const [name, value] = part.split('='); + if (name && value) { + cookies[name] = { name, value }; + } + } + return cookies; +} diff --git a/src/providers/embeds/wootly.ts b/src/providers/embeds/wootly.ts index 72202e1..e748707 100644 --- a/src/providers/embeds/wootly.ts +++ b/src/providers/embeds/wootly.ts @@ -1,5 +1,6 @@ import { load } from 'cheerio'; +import { makeCookieHeader, parseSetCookie } from '@/entrypoint/utils/cookie'; import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; @@ -15,7 +16,8 @@ export const wootlyScraper = makeEmbed({ readHeaders: ['Set-Cookie'], }); - const wootssesCookie = wootlyData.headers.get('Set-Cookie')?.match(/wootsses=([^;]+)/)?.[1]; + const cookies = parseSetCookie(wootlyData.headers.get('Set-Cookie') || ''); + const wootssesCookie = cookies.wootsses.value; let $ = load(wootlyData.body); // load the html data const iframeSrc = $('iframe').attr('src') ?? ''; @@ -24,17 +26,18 @@ export const wootlyScraper = makeEmbed({ method: 'GET', readHeaders: ['Set-Cookie'], headers: { - cookie: `wootsses=${wootssesCookie};`, + cookie: makeCookieHeader({ wootsses: wootssesCookie }), }, }); - const woozCookie = woozCookieRequest.headers.get('Set-Cookie')?.match(/wooz=([^;]+)/)?.[1]; + const woozCookies = parseSetCookie(woozCookieRequest.headers.get('Set-Cookie') || ''); + const woozCookie = woozCookies.wooz.value; const iframeData = await ctx.proxiedFetcher(iframeSrc, { method: 'POST', body: new URLSearchParams({ qdf: '1' }), headers: { - cookie: `wooz=${woozCookie}`, + cookie: makeCookieHeader({ wooz: woozCookie }), Referer: iframeSrc, }, }); @@ -44,7 +47,6 @@ export const wootlyScraper = makeEmbed({ const scriptText = $('script').html() ?? ''; // Regular expressions to match the variables - const tk = scriptText.match(/tk=([^;]+)/)?.[0].replace(/tk=|["\s]/g, ''); const vd = scriptText.match(/vd=([^,]+)/)?.[0].replace(/vd=|["\s]/g, ''); @@ -55,7 +57,7 @@ export const wootlyScraper = makeEmbed({ query: { t: tk, id: vd }, method: 'GET', headers: { - cookie: `wooz=${woozCookie}; wootsses=${wootssesCookie};`, + cookie: makeCookieHeader({ wooz: woozCookie, wootsses: wootssesCookie }), }, }); diff --git a/src/providers/sources/goojara/getEmbeds.ts b/src/providers/sources/goojara/getEmbeds.ts index d72a0ff..2b05a2d 100644 --- a/src/providers/sources/goojara/getEmbeds.ts +++ b/src/providers/sources/goojara/getEmbeds.ts @@ -1,5 +1,6 @@ import { load } from 'cheerio'; +import { makeCookieHeader, parseSetCookie } from '@/entrypoint/utils/cookie'; import { ScrapeContext } from '@/utils/context'; import { EmbedsResult, baseUrl, baseUrl2 } from './type'; @@ -14,7 +15,8 @@ export async function getEmbeds(ctx: ScrapeContext, id: string): Promise result.finalUrl.includes(a)); - // If an embed ID is found, push the result to the results array if (embedId) { results.push({ embedId, url: result.finalUrl }); }