mirror of
https://github.com/bytedream/stream-bypass.git
synced 2025-06-27 18:40:31 +02:00
Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
f4cbdd3258 | |||
fa41a8de8e | |||
ce8bc855b9 | |||
03202b2a12 |
44
README.md
44
README.md
@ -67,25 +67,22 @@ Install the addon directly from the [firefox addon store](https://addons.mozilla
|
|||||||
|
|
||||||
## 📜 Supported sites
|
## 📜 Supported sites
|
||||||
|
|
||||||
| Site | Supported | Note |
|
| Site | Supported | Note |
|
||||||
|-----------------------------------------------------------------------|-----------|-------------------------------------------------------|
|
|-----------------------------------------------------------------------|-----------|--------------------------------------------------------------------------------------------------------------|
|
||||||
| [doodstream.com](doodstream.com) / [dood.pm](https://dood.pm) | ✔️ | |
|
| [doodstream.com](doodstream.com) / [dood.pm](https://dood.pm) | ✔️ | |
|
||||||
| [evoload.io](https://evoload.io) | ⚠️️ | Website down / Timeout |
|
| [filemoon.sx](https://filemoon.sx) | ✔ | |
|
||||||
| [filemoon.sx](https://filemoon.sx) | ✔ | |
|
| [mcloud.to](https://mcloud.to/) | ❌ | Reverse engineering the site costs too much time ([#5](https://github.com/ByteDream/stream-bypass/issues/5)) |
|
||||||
| [mcloud.to](https://mcloud.to/) | ❌ | Reverse engineering the site costs too much time (#5) |
|
| [mixdrop.co](https://mixdrop.co) | ✔ ️ | |
|
||||||
| [mixdrop.co](https://mixdrop.co) | ✔ ️ | |
|
| [mp4upload.com](https://mp4upload.com) | ✔ | |
|
||||||
| [mp4upload.com](https://mp4upload.com) | ✔ | |
|
| [newgrounds.com](https://newgrounds.com) | ✔ | |
|
||||||
| [newgrounds.com](https://newgrounds.com) | ✔ | |
|
| [streamtape.com](https://streamtape.com) | ✔ | |
|
||||||
| [streamtape.com](https://streamtape.com) | ✔ | |
|
| [streamzz.to](https://streamzz.to) / [streamz.ws](https://streamz.ws) | ✔ | |
|
||||||
| [streamzz.to](https://streamzz.to) / [streamz.ws](https://streamz.ws) | ✔ | |
|
| [upstream.to](https://upstream.to) | ✔ | |
|
||||||
| [upstream.to](https://upstream.to) | ✔ | |
|
| [videovard.sx](https://videovard.sx) | ❌ | Reverse engineering the site costs too much time |
|
||||||
| [videovard.sx](https://videovard.sx) | ❌ | Reverse engineering the site costs too much time |
|
| [vidoza.net](https://vidoza.net) | ✔ | |
|
||||||
| [vidlox.me](https://vidlox.me) | ⚠ | Website down / Timeout |
|
| [vidstream.pro](https://vidstream.pro) | ❌ | Reverse engineering the site costs too much time ([#5](https://github.com/ByteDream/stream-bypass/issues/5)) |
|
||||||
| [vidoza.net](https://vidoza.net) | ✔ | |
|
| [voe.sx](https://voe.sx) | ✔ | |
|
||||||
| [vistream.pro](https://vidstream.pro) | ❌ | Reverse engineering the site costs too much time (#5) |
|
| [vupload.com](https://vupload.com) | ✔ | |
|
||||||
| [vivo.sx](https://vivo.sx) | ⚠️ | Website down / Timeout |
|
|
||||||
| [voe.sx](https://voe.sx) | ✔ | |
|
|
||||||
| [vupload.com](https://vupload.com) | ✔ | |
|
|
||||||
|
|
||||||
- ✔️: Everything ok.
|
- ✔️: Everything ok.
|
||||||
- ⚠: Included in the addon but will probably not work. See `Note` in this case, an explanation why will stand there in the most cases.
|
- ⚠: Included in the addon but will probably not work. See `Note` in this case, an explanation why will stand there in the most cases.
|
||||||
@ -93,6 +90,15 @@ Install the addon directly from the [firefox addon store](https://addons.mozilla
|
|||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Hall of dead sites</summary>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://evoload.io">evoload.io</a> - Down</li>
|
||||||
|
<li><a href="https://vidlox.me">vidlox.me</a> - Reachable but empty</li>
|
||||||
|
<li><a href="https://vivo.sx">vivo.sx</a> - Down</li>
|
||||||
|
</ul>
|
||||||
|
</details>
|
||||||
|
|
||||||
## ⚙️ Building
|
## ⚙️ Building
|
||||||
|
|
||||||
If you want to build the addon from source and not using the [installation](#installation) way, follow the instructions.
|
If you want to build the addon from source and not using the [installation](#installation) way, follow the instructions.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "stream-bypass",
|
"name": "stream-bypass",
|
||||||
"version": "2.1.6",
|
"version": "2.1.7",
|
||||||
"description": "Multi-browser addon for multiple streaming providers which redirects directly to the source video",
|
"description": "Multi-browser addon for multiple streaming providers which redirects directly to the source video",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -41,30 +41,6 @@ class Doodstream implements Match {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Evoload implements Match {
|
|
||||||
name = 'Evoload'
|
|
||||||
id = 'evoload'
|
|
||||||
reliability = Reliability.NORMAL
|
|
||||||
domains = [
|
|
||||||
'evoload.io'
|
|
||||||
]
|
|
||||||
regex = new RegExp(/.*/gm)
|
|
||||||
|
|
||||||
async match(match: RegExpMatchArray): Promise<string> {
|
|
||||||
const code = window.location.pathname.split('/').slice(-1)[0]
|
|
||||||
const response = await fetch('https://evoload.io/SecurePlayer', {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json'
|
|
||||||
},
|
|
||||||
body: JSON.stringify({code: code})
|
|
||||||
})
|
|
||||||
|
|
||||||
const json = await response.json()
|
|
||||||
return json['stream']['src']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Filemoon implements Match {
|
class Filemoon implements Match {
|
||||||
name = 'Filemoon'
|
name = 'Filemoon'
|
||||||
id = 'filemoon'
|
id = 'filemoon'
|
||||||
@ -187,20 +163,6 @@ class Upstream implements Match {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Vidlox implements Match {
|
|
||||||
name = 'Vidlox'
|
|
||||||
id = 'vidlox'
|
|
||||||
reliability = Reliability.LOW
|
|
||||||
domains = [
|
|
||||||
'vidlox.me'
|
|
||||||
]
|
|
||||||
regex = new RegExp(/(?<=\[")\S+?(?=")/gm)
|
|
||||||
|
|
||||||
async match(match: RegExpMatchArray): Promise<string> {
|
|
||||||
return match[0]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Vidoza implements Match {
|
class Vidoza implements Match {
|
||||||
name = 'Vidoza'
|
name = 'Vidoza'
|
||||||
id = 'vidoza'
|
id = 'vidoza'
|
||||||
@ -215,34 +177,6 @@ class Vidoza implements Match {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Vivo implements Match {
|
|
||||||
name = 'Vivo'
|
|
||||||
id = 'vivo'
|
|
||||||
reliability = Reliability.LOW
|
|
||||||
domains = [
|
|
||||||
'vivo.sx'
|
|
||||||
]
|
|
||||||
regex = new RegExp(/(?<=source:\s')(\S+)(?=')/gms)
|
|
||||||
|
|
||||||
async match(match: RegExpMatchArray): Promise<string> {
|
|
||||||
return this.rot47(decodeURIComponent(match[0]))
|
|
||||||
}
|
|
||||||
|
|
||||||
// decrypts a string with the rot47 algorithm (https://en.wikipedia.org/wiki/ROT13#Variants)
|
|
||||||
rot47(encoded: string): string {
|
|
||||||
const s = []
|
|
||||||
for(let i = 0; i < encoded.length; i++) {
|
|
||||||
const j = encoded.charCodeAt(i)
|
|
||||||
if((j >= 33) && (j <= 126)) {
|
|
||||||
s[i] = String.fromCharCode(33+((j+ 14)%94))
|
|
||||||
} else {
|
|
||||||
s[i] = String.fromCharCode(j)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return s.join('')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Voe implements Match {
|
class Voe implements Match {
|
||||||
name = 'Voe'
|
name = 'Voe'
|
||||||
id = 'voe'
|
id = 'voe'
|
||||||
@ -250,7 +184,7 @@ class Voe implements Match {
|
|||||||
domains = [
|
domains = [
|
||||||
'voe.sx'
|
'voe.sx'
|
||||||
]
|
]
|
||||||
regex = new RegExp(/https?:\/\/\S*m3u8(?=")/gm)
|
regex = new RegExp(/https?:\/\/\S*m3u8.+(?=')/gm)
|
||||||
|
|
||||||
async match(match: RegExpMatchArray): Promise<string> {
|
async match(match: RegExpMatchArray): Promise<string> {
|
||||||
return match[0]
|
return match[0]
|
||||||
@ -273,7 +207,6 @@ class Vupload implements Match {
|
|||||||
|
|
||||||
export const matches = [
|
export const matches = [
|
||||||
new Doodstream(),
|
new Doodstream(),
|
||||||
new Evoload(),
|
|
||||||
new Filemoon(),
|
new Filemoon(),
|
||||||
new Mixdrop(),
|
new Mixdrop(),
|
||||||
new Mp4Upload(),
|
new Mp4Upload(),
|
||||||
@ -281,9 +214,7 @@ export const matches = [
|
|||||||
new Streamtape(),
|
new Streamtape(),
|
||||||
new Streamzz(),
|
new Streamzz(),
|
||||||
new Upstream(),
|
new Upstream(),
|
||||||
new Vidlox(),
|
|
||||||
new Vidoza(),
|
new Vidoza(),
|
||||||
new Vivo(),
|
|
||||||
new Voe(),
|
new Voe(),
|
||||||
new Vupload()
|
new Vupload()
|
||||||
]
|
]
|
||||||
|
Reference in New Issue
Block a user