mirror of
https://github.com/bytedream/stream-bypass.git
synced 2025-12-16 16:50:44 +01:00
Compare commits
2 Commits
f9a0197f7f
...
f0a546fd60
| Author | SHA1 | Date | |
|---|---|---|---|
| f0a546fd60 | |||
| c5f6477d5f |
5
.github/workflows/build.yml
vendored
5
.github/workflows/build.yml
vendored
@@ -12,8 +12,7 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v6
|
||||
- uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 22
|
||||
cache: 'npm'
|
||||
@@ -37,4 +36,4 @@ jobs:
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: stream-bypass-mv3
|
||||
path: .output/chrome-mv3
|
||||
path: .output/firefox-mv3
|
||||
|
||||
35
.github/workflows/lint.yml
vendored
35
.github/workflows/lint.yml
vendored
@@ -1,28 +1,23 @@
|
||||
name: lint
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
tags-ignore:
|
||||
- '*'
|
||||
pull_request:
|
||||
push:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 22
|
||||
cache: 'npm'
|
||||
- uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 22
|
||||
cache: 'npm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Lint
|
||||
run: npm run lint
|
||||
- name: Lint
|
||||
run: npm run lint
|
||||
|
||||
85
.github/workflows/publish.yml
vendored
85
.github/workflows/publish.yml
vendored
@@ -1,85 +0,0 @@
|
||||
name: publish
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- v*
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
dry_run:
|
||||
type: boolean
|
||||
description: Dry run
|
||||
default: true
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 22
|
||||
cache: 'npm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Zip extensions
|
||||
run: |
|
||||
npm run zip:firefox
|
||||
npm run zip
|
||||
|
||||
- name: Resolve zip extension paths
|
||||
id: paths
|
||||
run: |
|
||||
MV2_PATH=$(find .output -type f -name "*-mv2.zip")
|
||||
MV2_NAME=$(basename $MV2_PATH)
|
||||
MV3_PATH=$(find .output -type f -name "*-mv3.zip")
|
||||
MV3_NAME=$(basename $MV3_PATH)
|
||||
echo "mv2_path=$MV2_PATH" >> "$GITHUB_OUTPUT"
|
||||
echo "mv2_name=$MV2_NAME" >> "$GITHUB_OUTPUT"
|
||||
echo "mv3_path=$MV3_PATH" >> "$GITHUB_OUTPUT"
|
||||
echo "mv3_name=$MV3_NAME" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Upload mv2 as artifact
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: ${{ steps.paths.outputs.mv2_name }}
|
||||
path: ${{ steps.paths.outputs.mv2_path }}
|
||||
|
||||
- name: Upload mv3 as artifact
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: ${{ steps.paths.outputs.mv3_name }}
|
||||
path: ${{ steps.paths.outputs.mv3_path }}
|
||||
|
||||
- name: Upload to latest release
|
||||
if: github.event.inputs.dry_run != 'true'
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: .output/*mv*.zip
|
||||
tag: ${{ github.ref }}
|
||||
overwrite: true
|
||||
file_glob: true
|
||||
|
||||
- name: Submit to stores
|
||||
env:
|
||||
DRY_RUN: ${{ github.event.inputs.dry_run }}
|
||||
FIREFOX_EXTENSION_ID: ${{ secrets.FIREFOX_EXTENSION_ID }}
|
||||
FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }}
|
||||
FIREFOX_JWT_SECRET: ${{ secrets.FIREFOX_JWT_SECRET }}
|
||||
CHROME_EXTENSION_ID: ${{ secrets.CHROME_EXTENSION_ID }}
|
||||
CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }}
|
||||
CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }}
|
||||
CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }}
|
||||
run: |
|
||||
npx wxt submit \
|
||||
--firefox-zip .output/*-mv2.zip --firefox-sources-zip .output/*-sources.zip \
|
||||
--chrome-zip .output/*-mv3.zip
|
||||
94
README.md
94
README.md
@@ -4,7 +4,7 @@ A multi-browser addon / extension for multiple streaming providers which redirec
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/bytedream/stream-bypass/releases/latest">
|
||||
<img src="https://img.shields.io/github/v/release/bytedream/stream-bypass?label=Version&style=flat-square" alt="Version">
|
||||
<img src="https://img.shields.io/github/v/release/ByteDream/stream-bypass?label=Version&style=flat-square" alt="Version">
|
||||
</a>
|
||||
<a href="https://addons.mozilla.org/de/firefox/addon/stream-bypass/">
|
||||
<img src="https://img.shields.io/amo/users/stream-bypass?label=Firefox%20Users&style=flat-square" alt="Firefox Addon Store">
|
||||
@@ -13,7 +13,7 @@ A multi-browser addon / extension for multiple streaming providers which redirec
|
||||
<img src="https://img.shields.io/chrome-web-store/users/ddfpfjomnakfckhmilacnbokdaknamdb?style=flat-square&label=Chrome%20Users" alt="Chrome Store">
|
||||
</a>
|
||||
<a href="https://github.com/bytedream/stream-bypass/releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/bytedream/stream-bypass/total?label=GitHub%20Downloads&style=flat-square" alt="GitHub Downloads">
|
||||
<img src="https://img.shields.io/github/downloads/ByteDream/stream-bypass/total?label=GitHub%20Downloads&style=flat-square" alt="GitHub Downloads">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -40,7 +40,7 @@ This has the advantage, that no advertising or popups are shown when trying to i
|
||||
Additionally, this enables you to download the video by right-clicking it and just choose the download option.
|
||||
|
||||
<details id="example">
|
||||
<summary><b>How it works:</b></summary>
|
||||
<summary><b>How it's working:</b></summary>
|
||||
<img src="example.gif" alt="">
|
||||
</details>
|
||||
|
||||
@@ -53,39 +53,32 @@ The best way to install the extension are the official browser extension stores:
|
||||
- [Firefox Addon Store](https://addons.mozilla.org/de/firefox/addon/stream-bypass/) (Firefox for Android is supported too!)
|
||||
- [Chrome Web Store](https://chromewebstore.google.com/detail/ddfpfjomnakfckhmilacnbokdaknamdb)
|
||||
|
||||
<details>
|
||||
<summary><h3 id="manual-installation1">Manual installation</h3></summary>
|
||||
### Manual installation
|
||||
|
||||
- Firefox (mv2)
|
||||
- Download `stream-bypass-<version>-mv2.zip` from the [latest release](https://github.com/bytedream/stream-bypass/releases/latest) and unzip it (e.g. with [7zip](https://www.7-zip.org/))
|
||||
- Download `stream-bypass-<version>-mv2.zip` from the [latest release](https://github.com/ByteDream/stream-bypass/releases/latest) and unzip it (with [7zip](https://www.7-zip.org/) or something like that)
|
||||
- Go into your browser and type `about:debugging#/runtime/this-firefox` in the address bar
|
||||
- Click the `Load Temporary Add-on...` button and choose the `manifest.json` file in the unzipped directory
|
||||
- Chromium / Google Chrome (mv3)
|
||||
> As nearly every browser other than Firefox is based on Chromium, this should be the same for most of them
|
||||
- Download `stream-bypass-<version>-mv3.zip` from the [latest release](https://github.com/bytedream/stream-bypass/releases/latest) and unzip it (e.g. [7zip](https://www.7-zip.org/))
|
||||
- Download `stream-bypass-<version>-mv3.zip` from the [latest release](https://github.com/ByteDream/stream-bypass/releases/latest) and unzip it (with [7zip](https://www.7-zip.org/) or something like that)
|
||||
- Go into your browser and type `chrome://extensions` in the address bar
|
||||
- Turn on the developer mode by checking the switch in the top right corner
|
||||
- Click `Load unpacked` and choose the unzipped directory
|
||||
|
||||
</details>
|
||||
|
||||
## ✨ Features
|
||||
|
||||
- ✔: Supported.
|
||||
- ✖: Not supported.
|
||||
|
||||
| Feature | Firefox (mv2) | Chrome (mv3) | Firefox for Android (mv2) |
|
||||
| --------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------------ | ------------------------- |
|
||||
| Replace site-speicifc video player with browser native video player | ✔ | ✔ | ✔ |
|
||||
| Support websites that are accessed via a redirect | ✔ | ✖ | ✔ |
|
||||
| Open video in mpv (with [ff2mpv](https://github.com/bytedream/stream-bypass/tree/master#ff2mpv-use-mpv-to-directly-play-streams)) | ✔ | ✔ | ✖ |
|
||||
| Support websites that are accessed via a redirect | ✔ | ❌ | ✔ |
|
||||
| Open video in mpv (with [ff2mpv](https://github.com/ByteDream/stream-bypass/tree/master#ff2mpv-use-mpv-to-directly-play-streams)) | ✔ | ✔ | ❌ |
|
||||
|
||||
- ✔️: Supported.
|
||||
- ❌: Not supported.
|
||||
|
||||
## 📜 Supported websites
|
||||
|
||||
- ✔: Everything ok.
|
||||
- ⚠: Works with limitations.
|
||||
- ✖: Not supported.
|
||||
|
||||
| Site | Firefox & Firefox for Android (mv2) | Chrome & Chromium based (mv2) |
|
||||
| --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
||||
| [dropload.io](https://dropload.io) | ✔ | ✔ |
|
||||
@@ -93,28 +86,32 @@ The best way to install the extension are the official browser extension stores:
|
||||
| [filemoon.to](https://filemoon.to) | ✔ | ✔ |
|
||||
| [goodstream.uno](https://goodstream.uno) | ✔ | ✔ |
|
||||
| [kwik.cx](https://kwik.cx) | ✔ | ✔ |
|
||||
| [loadx.ws](https://loadx.ws) | ✔ | ✖ (background request always required) |
|
||||
| [luluvdo.com](https://luluvdo.com) | ✔ | ✖ (background request always required) |
|
||||
| [loadx.ws](https://loadx.ws) | ✔ | ❌ (background request always required) |
|
||||
| [luluvdo.com](https://luluvdo.com) | ✔ | ❌ (background request always required) |
|
||||
| [mixdrop.co](https://mixdrop.co) | ✔ ️ | ✔ |
|
||||
| [mp4upload.com](https://mp4upload.com) | ✔ | ✔ |
|
||||
| [newgrounds.com](https://newgrounds.com) | ✔ | ✔ |
|
||||
| [streama2z.com](https://streama2z.com) | ✔ | ✖ (redirect always required) |
|
||||
| [streama2z.com](https://streama2z.com) | ✔ | ❌ (redirect always required) |
|
||||
| [streamtape.com](https://streamtape.com) | ⚠ (correct video url can't always be extract, retrying/reloading the page might fix it) | ⚠ (correct video url can't always be extract, retrying/reloading the page might fix it) |
|
||||
| [streamzz.to](https://streamzz.to) / [streamz.ws](https://streamz.ws) | ✔ | ✔ |
|
||||
| [supervideo.tv](https://supervideo.tv) | ✔ | ✔ |
|
||||
| [upstream.to](https://upstream.to) | ✔ | ✔ |
|
||||
| [vidmoly.to](https://vidmoly.me) | ✔ | ✔ |
|
||||
| [vidoza.net](https://vidoza.net) | ✔ | ✔ |
|
||||
| [voe.sx](https://voe.sx) | ✔ | ✖ (redirect always required) |
|
||||
| [voe.sx](https://voe.sx) | ✔ | ❌ (redirect always required) |
|
||||
| [vupload.com](https://vupload.com) | ✔ | ✔ |
|
||||
|
||||
- ✔️: Everything ok.
|
||||
- ⚠: Works with limitations.
|
||||
- ❌: Not supported.
|
||||
|
||||
_This table might not be 100% accurate, it isn't actively monitored if the addon works for every website!_
|
||||
|
||||
Some sites put much effort in obfuscating their code / how they receive the video stream so that it simply cost too much time for me to reverse engineer it and find out how to bypass the native video player of the site.
|
||||
|
||||
## 🛠️ Building
|
||||
|
||||
If you want to build the addon from source and not using the way described in [installation](#-installation), follow the instructions.
|
||||
If you want to build the addon from source and not using the [installation](#installation) way, follow the instructions.
|
||||
|
||||
Requirements:
|
||||
|
||||
@@ -125,20 +122,18 @@ If the requirements are satisfied, you can continue with the following commands:
|
||||
|
||||
```shell
|
||||
# install all dependencies
|
||||
$ npm i
|
||||
$ npm install
|
||||
|
||||
# build the extension and start it in a new firefox instance
|
||||
$ npm run dev:firefox
|
||||
# build the extension source to the dist/ directory
|
||||
$ npm run build
|
||||
|
||||
# build the extension with optimizations to the .output/firefox-mv2 directory
|
||||
$ npm run build:firefox
|
||||
# same as build + more optimizations and browser specific settings at release/
|
||||
$ npm run release:firefox # or "release:chrome" to create a release for chromium based browsers
|
||||
```
|
||||
|
||||
You can omit the `:firefox` suffix, then it's built for Chrome.
|
||||
|
||||
##### Install
|
||||
|
||||
If you want to use the addon in Chromium or any browser which is based on it, follow the steps in the [manual installation](#-installation).
|
||||
If you want to use the addon in Chromium or any browser which is based on it, follow the steps in [installation](#-installation).
|
||||
When using firefox, use the following:
|
||||
|
||||
1. Type `about:debugging` in the browser's address bar.
|
||||
@@ -148,42 +143,33 @@ When using firefox, use the following:
|
||||
|
||||
## ⚙️ Settings
|
||||
|
||||
> You reach the settings by pressing the tree dots (⋮) in the top right corner of the extension popup.
|
||||
### <ins>ff2mpv: use mpv to directly play streams</ins>
|
||||
|
||||
### Hosts
|
||||
ff2mpv is located at this repository: https://github.com/woodruffw/ff2mpv
|
||||
|
||||
You can enable or disabled for which hosts the extension should redirect.
|
||||
|
||||
### ff2mpv
|
||||
|
||||
[ff2mpv](https://github.com/woodruffw/ff2mpv) allows you to play streams directly in [mpv](https://mpv.io/) instead of the browser.
|
||||
You can enable or disable this behavior.
|
||||
|
||||
<details>
|
||||
<summary><i>Steps to get it set up</i></summary>
|
||||
Steps to get it set up:
|
||||
|
||||
- In the [Usage](https://github.com/woodruffw/ff2mpv#usage) section of the ff2mpv repository pick the installation instruction for your operating system (Linux/Windows/macOS; you do not need the browser addon).
|
||||
- Scroll down to `Install manually`
|
||||
- Follow instructions for Firefox/Chrome
|
||||
- Edit the `ff2mpv.json` you created:
|
||||
- Firefox: Add `{55dd42e8-3dd9-455a-b4fe-86664881b10c}` to `allowed_extensions`:
|
||||
|
||||
- Firefox: Add `{55dd42e8-3dd9-455a-b4fe-86664881b10c}` to `allowed_extensions` ->
|
||||
```
|
||||
"allowed_extensions": [
|
||||
"ff2mpv@yossarian.net",
|
||||
"{55dd42e8-3dd9-455a-b4fe-86664881b10c}"
|
||||
]
|
||||
```
|
||||
|
||||
- Chrome/Chromium: - Go To: Settings -> Extensions - Click on `Details` of the Stream Bypass extension and copy the ID - Add `chrome-extension://ddfpfjomnakfckhmilacnbokdaknamdb/` to `allowed_origins`:
|
||||
```
|
||||
"allowed_origins": [
|
||||
"chrome-extension://ephjcajbkgplkjmelpglennepbpmdpjg/",
|
||||
"chrome-extension://ddfpfjomnakfckhmilacnbokdaknamdb/"
|
||||
]
|
||||
```
|
||||
|
||||
</details>
|
||||
- Chrome/Chromium:
|
||||
- Go To: Settings -> Extensions
|
||||
- Click on `Details` of the Stream Bypass extension and copy the ID
|
||||
- Add `chrome-extension://ddfpfjomnakfckhmilacnbokdaknamdb/` to `allowed_origins` ->
|
||||
```
|
||||
"allowed_origins": [
|
||||
"chrome-extension://ephjcajbkgplkjmelpglennepbpmdpjg/",
|
||||
"chrome-extension://ddfpfjomnakfckhmilacnbokdaknamdb/"
|
||||
]
|
||||
```
|
||||
|
||||
## ⚖ License
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body style="background-color: #131313; overflow: hidden">
|
||||
<body class="bg-[#131313]">
|
||||
<script type="module">
|
||||
import { mount } from 'svelte';
|
||||
import Player from './Player.svelte';
|
||||
|
||||
@@ -3,8 +3,9 @@ import { HostMatchType, type Host } from '@/lib/host';
|
||||
export default {
|
||||
name: 'Vidmoly',
|
||||
id: 'vidmoly',
|
||||
domains: ['vidmoly.me', 'vidmoly.net', 'vidmoly.to'],
|
||||
regex: [/(?<=file:").+\.m3u8.*(?=")/gm],
|
||||
domains: ['vidmoly.me', 'vidmoly.to'],
|
||||
regex: [/(?<=file:").+\.m3u8/gm],
|
||||
replace: true,
|
||||
|
||||
match: async function (match: RegExpMatchArray) {
|
||||
return {
|
||||
|
||||
@@ -27,21 +27,8 @@ export default defineConfig({
|
||||
}
|
||||
: undefined,
|
||||
permissions: ['storage', ...(manifestVersion === 2 ? ['webRequest', 'webRequestBlocking', '<all_urls>'] : [])],
|
||||
optional_permissions: ['nativeMessaging'],
|
||||
web_accessible_resources: [
|
||||
{
|
||||
resources: ['player.html'],
|
||||
// TODO: Replace this with all hosts domains if target manifest version is 3.
|
||||
// This isn't working atm because importing '@/lib/host' fails. Ahhhh I love the whole fucking JS/TS
|
||||
// environment. Maybe I'm also overlooking something and the fix is easy, but that itsn't working out of the
|
||||
// box is once again terrible DX
|
||||
matches: ['<all_urls>']
|
||||
}
|
||||
]
|
||||
optional_permissions: ['nativeMessaging']
|
||||
}),
|
||||
zip: {
|
||||
artifactTemplate: '{{name}}-{{version}}-{{manifestVersion}}.zip'
|
||||
},
|
||||
|
||||
vite: () => ({
|
||||
define: {
|
||||
|
||||
Reference in New Issue
Block a user