From ccfc77167be60a62097e00183769d4b152860e67 Mon Sep 17 00:00:00 2001 From: bytedream Date: Fri, 8 Dec 2023 15:50:19 +0100 Subject: [PATCH] Add vidmoly.me --- src/entries/background/mv2.ts | 18 ++++++++++++++++++ src/entries/player/player.ts | 3 +++ src/lib/match.ts | 13 +++++++++++++ src/manifest.ts | 2 +- 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/entries/background/mv2.ts b/src/entries/background/mv2.ts index e21f743..4732258 100644 --- a/src/entries/background/mv2.ts +++ b/src/entries/background/mv2.ts @@ -4,6 +4,24 @@ import type { Match } from '~/lib/match'; import { storageDelete, storageGet, storageSet } from '~/lib/settings'; import { getMatch } from '~/lib/match'; +chrome.webRequest.onBeforeSendHeaders.addListener( + async (details) => { + const referer: { domain: string } | undefined = await storageGet('referer'); + if (referer === undefined) return; + + details.requestHeaders.push({ + name: 'Referer', + value: `https://${referer.domain}/` + }); + + await storageDelete('referer'); + + return { requestHeaders: details.requestHeaders }; + }, + { urls: [''], types: ['xmlhttprequest'] }, + ['blocking', 'requestHeaders'] +); + chrome.webRequest.onBeforeRedirect.addListener( async (details) => { // check if redirects origins from a previous redirect diff --git a/src/entries/player/player.ts b/src/entries/player/player.ts index fc0603d..8ca53fd 100644 --- a/src/entries/player/player.ts +++ b/src/entries/player/player.ts @@ -1,5 +1,6 @@ import { matches } from '~/lib/match'; import Hls from 'hls.js'; +import { storageSet } from '~/lib/settings'; async function playNative(url: string, videoElem: HTMLVideoElement) { videoElem.src = url; @@ -31,6 +32,8 @@ export async function play(videoElem: HTMLVideoElement) { } document.title = `Stream Bypass (${domain})`; + await storageSet('referer', { domain: domain }); + if (new URL(url).pathname.endsWith('.m3u8')) { await playHls(url, videoElem); } else { diff --git a/src/lib/match.ts b/src/lib/match.ts index c6c7873..8853294 100644 --- a/src/lib/match.ts +++ b/src/lib/match.ts @@ -213,6 +213,18 @@ export const Upstream: Match = { } }; +export const Vidmoly: Match = { + name: 'Vidmoly', + id: 'vidmoly', + reliability: Reliability.HIGH, + domains: ['vidmoly.me', 'vidmoly.to'], + regex: /(?<=file:").+\.m3u8(?=")/gm, + + match: async (match: RegExpMatchArray) => { + return match[0]; + } +}; + export const Vidoza: Match = { name: 'Vidoza', id: 'vidoza', @@ -262,6 +274,7 @@ export const matches = { [Streamzz.id]: Streamzz, [SuperVideo.id]: SuperVideo, [Upstream.id]: Upstream, + [Vidmoly.id]: Vidmoly, [Vidoza.id]: Vidoza, [Voe.id]: Voe, [Vupload.id]: Vupload diff --git a/src/manifest.ts b/src/manifest.ts index ae9d600..41cf12d 100644 --- a/src/manifest.ts +++ b/src/manifest.ts @@ -41,7 +41,7 @@ const ManifestV2 = { }, content_scripts: [{ ...sharedManifest.content_scripts[0], matches: [''] }], browser_action: browserAction, - permissions: [...sharedManifest.permissions, 'webRequest', ''] + permissions: [...sharedManifest.permissions, 'webRequest', 'webRequestBlocking', ''] }; const ManifestV3 = {