From d7134d4daf289570c55af5857cb8bb6fe44833ad Mon Sep 17 00:00:00 2001 From: Jorrin Date: Thu, 4 Jan 2024 20:18:25 +0100 Subject: [PATCH] proxied fetcher --- src/providers/embeds/filemoon/index.ts | 8 ++++++-- src/providers/embeds/vidplay/index.ts | 2 +- src/providers/sources/vidsrcto/index.ts | 16 +++++++++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/providers/embeds/filemoon/index.ts b/src/providers/embeds/filemoon/index.ts index 2729b5c..3f8a2f3 100644 --- a/src/providers/embeds/filemoon/index.ts +++ b/src/providers/embeds/filemoon/index.ts @@ -14,7 +14,11 @@ export const fileMoonScraper = makeEmbed({ name: 'Filemoon', rank: 400, scrape: async (ctx) => { - const embedRes = await ctx.fetcher(ctx.url); + const embedRes = await ctx.proxiedFetcher(ctx.url, { + headers: { + referer: ctx.url, + }, + }); const evalCode = evalCodeRegex.exec(embedRes); if (!evalCode) throw new Error('Failed to find eval code'); const unpacked = unpack(evalCode[1]); @@ -25,7 +29,7 @@ export const fileMoonScraper = makeEmbed({ const subtitlesLink = url.searchParams.get('sub.info'); const captions: Caption[] = []; if (subtitlesLink) { - const captionsResult = await ctx.fetcher(subtitlesLink); + const captionsResult = await ctx.proxiedFetcher(subtitlesLink); for (const caption of captionsResult) { const language = labelToLanguageCode(caption.label); diff --git a/src/providers/embeds/vidplay/index.ts b/src/providers/embeds/vidplay/index.ts index f7adca2..3c1f6a2 100644 --- a/src/providers/embeds/vidplay/index.ts +++ b/src/providers/embeds/vidplay/index.ts @@ -22,7 +22,7 @@ export const vidplayScraper = makeEmbed({ const subtitlesLink = url.searchParams.get('sub.info'); const captions: Caption[] = []; if (subtitlesLink) { - const captionsResult = await ctx.fetcher(subtitlesLink); + const captionsResult = await ctx.proxiedFetcher(subtitlesLink); for (const caption of captionsResult) { const language = labelToLanguageCode(caption.label); diff --git a/src/providers/sources/vidsrcto/index.ts b/src/providers/sources/vidsrcto/index.ts index 5e73bc1..983fd12 100644 --- a/src/providers/sources/vidsrcto/index.ts +++ b/src/providers/sources/vidsrcto/index.ts @@ -8,6 +8,7 @@ import { decryptSourceUrl } from './common'; import { SourceResult, SourcesResult } from './types'; const vidSrcToBase = 'https://vidsrc.to'; +const referer = `${vidSrcToBase}/`; const universalScraper = async (ctx: ShowScrapeContext | MovieScrapeContext): Promise => { const imdbId = ctx.media.imdbId; @@ -15,22 +16,31 @@ const universalScraper = async (ctx: ShowScrapeContext | MovieScrapeContext): Pr ctx.media.type === 'movie' ? `/embed/movie/${imdbId}` : `/embed/tv/${imdbId}/${ctx.media.season.number}/${ctx.media.episode.number}`; - const mainPage = await ctx.fetcher(url, { + const mainPage = await ctx.proxiedFetcher(url, { baseUrl: vidSrcToBase, + headers: { + referer, + }, }); const mainPage$ = load(mainPage); const dataId = mainPage$('a[data-id]').attr('data-id'); if (!dataId) throw new Error('No data-id found'); - const sources = await ctx.fetcher(`/ajax/embed/episode/${dataId}/sources`, { + const sources = await ctx.proxiedFetcher(`/ajax/embed/episode/${dataId}/sources`, { baseUrl: vidSrcToBase, + headers: { + referer, + }, }); if (sources.status !== 200) throw new Error('No sources found'); const embeds: SourcererEmbed[] = []; const embedUrls = []; for (const source of sources.result) { - const sourceRes = await ctx.fetcher(`/ajax/embed/source/${source.id}`, { + const sourceRes = await ctx.proxiedFetcher(`/ajax/embed/source/${source.id}`, { baseUrl: vidSrcToBase, + headers: { + referer, + }, }); const decryptedUrl = decryptSourceUrl(sourceRes.result.url); embedUrls.push(decryptedUrl);