534 lines
11 KiB
Markdown
534 lines
11 KiB
Markdown
### 🎬 Guide du Proxy Vidéo Sekai.one
|
|
|
|
Solution complète pour contourner la protection Referer et accéder aux vidéos de sekai.one
|
|
|
|
---
|
|
|
|
## 🎯 Problème Résolu
|
|
|
|
Le serveur vidéo `mugiwara.xyz` bloque l'accès direct avec un **403 Forbidden** car il vérifie que le `Referer` provient de `https://sekai.one/`.
|
|
|
|
**Notre solution** : Un serveur proxy qui ajoute automatiquement le bon `Referer` et permet d'accéder aux vidéos depuis n'importe où.
|
|
|
|
---
|
|
|
|
## ⚡ Démarrage Rapide
|
|
|
|
### 1. Installation
|
|
|
|
```bash
|
|
# Installer les dépendances (inclut Flask)
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### 2. Démarrer le serveur proxy
|
|
|
|
```bash
|
|
python video_proxy_server.py
|
|
```
|
|
|
|
Le serveur démarre sur `http://localhost:8080`
|
|
|
|
### 3. Utiliser le proxy
|
|
|
|
**Format de l'URL :**
|
|
```
|
|
http://localhost:8080/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4
|
|
```
|
|
|
|
**Exemple dans le navigateur :**
|
|
- Copiez l'URL ci-dessus
|
|
- Collez dans votre navigateur
|
|
- La vidéo se lit directement ! 🎉
|
|
|
|
---
|
|
|
|
## 📖 Utilisation Détaillée
|
|
|
|
### A. Dans un navigateur web
|
|
|
|
```
|
|
http://localhost:8080/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4
|
|
```
|
|
|
|
→ La vidéo se lit directement dans le navigateur
|
|
|
|
### B. Avec VLC Media Player
|
|
|
|
1. Ouvrir VLC
|
|
2. Média → Ouvrir un flux réseau
|
|
3. Coller l'URL proxy :
|
|
```
|
|
http://localhost:8080/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4
|
|
```
|
|
4. Lire ! 🎬
|
|
|
|
### C. Dans une page HTML
|
|
|
|
```html
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>One Piece Episode 527</title>
|
|
</head>
|
|
<body>
|
|
<h1>One Piece - Episode 527</h1>
|
|
|
|
<video controls width="1280" height="720">
|
|
<source
|
|
src="http://localhost:8080/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4"
|
|
type="video/mp4">
|
|
Votre navigateur ne supporte pas la vidéo HTML5.
|
|
</video>
|
|
</body>
|
|
</html>
|
|
```
|
|
|
|
### D. Télécharger avec wget
|
|
|
|
```bash
|
|
wget "http://localhost:8080/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4" -O episode_527.mp4
|
|
```
|
|
|
|
### E. Télécharger avec curl
|
|
|
|
```bash
|
|
curl "http://localhost:8080/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4" -o episode_527.mp4
|
|
```
|
|
|
|
### F. En Python
|
|
|
|
```python
|
|
import requests
|
|
|
|
proxy_url = "http://localhost:8080/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4"
|
|
|
|
# Streaming
|
|
response = requests.get(proxy_url, stream=True)
|
|
with open("episode_527.mp4", "wb") as f:
|
|
for chunk in response.iter_content(chunk_size=8192):
|
|
f.write(chunk)
|
|
```
|
|
|
|
---
|
|
|
|
## 🌐 Déploiement sur un VPS (vid.creepso.com)
|
|
|
|
### Configuration Nginx (reverse proxy)
|
|
|
|
1. **Installer nginx sur votre VPS**
|
|
|
|
```bash
|
|
sudo apt update
|
|
sudo apt install nginx
|
|
```
|
|
|
|
2. **Créer un fichier de configuration**
|
|
|
|
```bash
|
|
sudo nano /etc/nginx/sites-available/video-proxy
|
|
```
|
|
|
|
Contenu :
|
|
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name vid.creepso.com;
|
|
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8080;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
# Important pour le streaming vidéo
|
|
proxy_buffering off;
|
|
proxy_cache off;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Connection "";
|
|
}
|
|
}
|
|
```
|
|
|
|
3. **Activer le site**
|
|
|
|
```bash
|
|
sudo ln -s /etc/nginx/sites-available/video-proxy /etc/nginx/sites-enabled/
|
|
sudo nginx -t
|
|
sudo systemctl restart nginx
|
|
```
|
|
|
|
4. **Démarrer le serveur Python avec gunicorn**
|
|
|
|
```bash
|
|
# Installer gunicorn
|
|
pip install gunicorn
|
|
|
|
# Démarrer le serveur
|
|
gunicorn -w 4 -b 127.0.0.1:8080 video_proxy_server:app
|
|
```
|
|
|
|
5. **Créer un service systemd pour auto-start**
|
|
|
|
```bash
|
|
sudo nano /etc/systemd/system/video-proxy.service
|
|
```
|
|
|
|
Contenu :
|
|
|
|
```ini
|
|
[Unit]
|
|
Description=Sekai Video Proxy Server
|
|
After=network.target
|
|
|
|
[Service]
|
|
User=votre-user
|
|
WorkingDirectory=/chemin/vers/projet
|
|
Environment="PATH=/chemin/vers/venv/bin"
|
|
ExecStart=/chemin/vers/venv/bin/gunicorn -w 4 -b 127.0.0.1:8080 video_proxy_server:app
|
|
|
|
Restart=always
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
Activer :
|
|
|
|
```bash
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable video-proxy
|
|
sudo systemctl start video-proxy
|
|
sudo systemctl status video-proxy
|
|
```
|
|
|
|
6. **Ajouter SSL avec Certbot (HTTPS)**
|
|
|
|
```bash
|
|
sudo apt install certbot python3-certbot-nginx
|
|
sudo certbot --nginx -d vid.creepso.com
|
|
```
|
|
|
|
### Utilisation après déploiement
|
|
|
|
Une fois déployé sur votre VPS, vous pouvez accéder aux vidéos via :
|
|
|
|
```
|
|
https://vid.creepso.com/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4
|
|
```
|
|
|
|
Cette URL est accessible **depuis n'importe où dans le monde** ! 🌍
|
|
|
|
---
|
|
|
|
## 🛠️ API du Serveur Proxy
|
|
|
|
### Endpoints disponibles
|
|
|
|
#### 1. `/proxy?url=[VIDEO_URL]`
|
|
|
|
**Fonction :** Proxy vidéo avec streaming
|
|
|
|
**Exemple :**
|
|
```
|
|
GET http://localhost:8080/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4
|
|
```
|
|
|
|
**Fonctionnalités :**
|
|
- ✅ Streaming progressif
|
|
- ✅ Support du seeking (Range requests)
|
|
- ✅ CORS activé
|
|
- ✅ Aucune limite de taille
|
|
|
|
#### 2. `/info?url=[VIDEO_URL]`
|
|
|
|
**Fonction :** Obtenir les métadonnées de la vidéo
|
|
|
|
**Exemple :**
|
|
```bash
|
|
curl "http://localhost:8080/info?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4"
|
|
```
|
|
|
|
**Réponse :**
|
|
```json
|
|
{
|
|
"url": "https://17.mugiwara.xyz/op/saga-7/hd/527.mp4",
|
|
"status_code": 200,
|
|
"accessible": true,
|
|
"content_type": "video/mp4",
|
|
"content_length": "272760832",
|
|
"content_length_mb": 260.14,
|
|
"server": "nginx/1.25.3",
|
|
"accept_ranges": "bytes",
|
|
"proxy_url": "http://localhost:8080/proxy?url=..."
|
|
}
|
|
```
|
|
|
|
#### 3. `/download?url=[VIDEO_URL]`
|
|
|
|
**Fonction :** Téléchargement forcé (avec Content-Disposition)
|
|
|
|
**Exemple :**
|
|
```
|
|
GET http://localhost:8080/download?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4
|
|
```
|
|
|
|
Le navigateur va automatiquement télécharger le fichier.
|
|
|
|
#### 4. `/health`
|
|
|
|
**Fonction :** Vérifier que le serveur fonctionne
|
|
|
|
**Exemple :**
|
|
```bash
|
|
curl http://localhost:8080/health
|
|
```
|
|
|
|
**Réponse :**
|
|
```json
|
|
{
|
|
"status": "ok",
|
|
"service": "sekai-video-proxy",
|
|
"version": "1.0.0"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 Options du Serveur
|
|
|
|
```bash
|
|
# Port personnalisé
|
|
python video_proxy_server.py --port 5000
|
|
|
|
# Accès réseau (pas seulement localhost)
|
|
python video_proxy_server.py --host 0.0.0.0
|
|
|
|
# Mode debug
|
|
python video_proxy_server.py --debug
|
|
|
|
# Combinaison
|
|
python video_proxy_server.py --host 0.0.0.0 --port 5000
|
|
```
|
|
|
|
---
|
|
|
|
## 🎭 Comment ça marche ?
|
|
|
|
### Le problème
|
|
|
|
Quand vous accédez directement à `https://17.mugiwara.xyz/op/saga-7/hd/527.mp4` :
|
|
|
|
```http
|
|
GET /op/saga-7/hd/527.mp4 HTTP/1.1
|
|
Host: 17.mugiwara.xyz
|
|
User-Agent: Mozilla/5.0...
|
|
```
|
|
|
|
**Réponse : 403 Forbidden** ❌
|
|
|
|
Le serveur vérifie que la requête vient de sekai.one.
|
|
|
|
### La solution
|
|
|
|
Le proxy ajoute le header `Referer` correct :
|
|
|
|
```http
|
|
GET /op/saga-7/hd/527.mp4 HTTP/1.1
|
|
Host: 17.mugiwara.xyz
|
|
User-Agent: Mozilla/5.0...
|
|
Referer: https://sekai.one/ ← La clé !
|
|
```
|
|
|
|
**Réponse : 200 OK** ✅
|
|
|
|
Le serveur pense que la requête vient de sekai.one et autorise l'accès.
|
|
|
|
### Flux de données
|
|
|
|
```
|
|
Client (Navigateur/VLC/wget)
|
|
↓
|
|
GET http://vid.creepso.com/proxy?url=...
|
|
↓
|
|
Serveur Proxy (votre VPS)
|
|
↓
|
|
GET https://17.mugiwara.xyz/... avec Referer: sekai.one
|
|
↓
|
|
Serveur Vidéo (mugiwara.xyz)
|
|
↓
|
|
200 OK + Flux vidéo
|
|
↓
|
|
Serveur Proxy → Client
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 Intégration avec Stremio
|
|
|
|
Vous pouvez créer un add-on Stremio qui utilise votre proxy :
|
|
|
|
```javascript
|
|
// stremio-addon.js
|
|
const { addonBuilder } = require('stremio-addon-sdk');
|
|
|
|
const builder = new addonBuilder({
|
|
id: 'com.sekai.one',
|
|
version: '1.0.0',
|
|
name: 'Sekai.one Anime',
|
|
description: 'Watch anime from sekai.one',
|
|
resources: ['stream'],
|
|
types: ['series'],
|
|
idPrefixes: ['sekai:']
|
|
});
|
|
|
|
builder.defineStreamHandler(async ({ type, id }) => {
|
|
// Exemple pour One Piece Episode 527
|
|
if (id === 'sekai:onepiece:527') {
|
|
return {
|
|
streams: [{
|
|
title: 'HD',
|
|
url: 'https://vid.creepso.com/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4'
|
|
}]
|
|
};
|
|
}
|
|
});
|
|
|
|
module.exports = builder.getInterface();
|
|
```
|
|
|
|
---
|
|
|
|
## 🔐 Sécurité et Performance
|
|
|
|
### Limitations recommandées
|
|
|
|
Pour protéger votre VPS, ajoutez des limitations :
|
|
|
|
```python
|
|
# Dans video_proxy_server.py, ajoutez :
|
|
from flask_limiter import Limiter
|
|
from flask_limiter.util import get_remote_address
|
|
|
|
limiter = Limiter(
|
|
app,
|
|
key_func=get_remote_address,
|
|
default_limits=["100 per hour"]
|
|
)
|
|
|
|
@app.route('/proxy')
|
|
@limiter.limit("10 per minute") # Max 10 requêtes/minute
|
|
def proxy_video():
|
|
# ...
|
|
```
|
|
|
|
### Cache (optionnel)
|
|
|
|
Pour réduire la charge :
|
|
|
|
```python
|
|
from flask_caching import Cache
|
|
|
|
cache = Cache(app, config={'CACHE_TYPE': 'simple'})
|
|
|
|
@app.route('/info')
|
|
@cache.cached(timeout=300) # Cache 5 minutes
|
|
def video_info():
|
|
# ...
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 Monitoring et Logs
|
|
|
|
Les logs sont automatiquement sauvegardés dans `logs/`:
|
|
|
|
```bash
|
|
# Voir les logs en temps réel
|
|
tail -f logs/*_scraping.log
|
|
```
|
|
|
|
Pour un monitoring avancé sur VPS :
|
|
|
|
```bash
|
|
# Installer pm2 pour Node.js ou utiliser systemd logs
|
|
sudo journalctl -u video-proxy -f
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 Exemples d'URLs
|
|
|
|
### One Piece
|
|
|
|
```
|
|
# Episode 527 (Saga 7)
|
|
http://localhost:8080/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4
|
|
|
|
# Episode 528 (Saga 7)
|
|
http://localhost:8080/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/528.mp4
|
|
|
|
# Pattern général : /op/saga-X/hd/EPISODE.mp4
|
|
```
|
|
|
|
---
|
|
|
|
## ⚠️ Avertissement Légal
|
|
|
|
Ce proxy est créé dans le cadre d'un **bug bounty** autorisé.
|
|
|
|
- ✅ Usage autorisé pour tests de sécurité
|
|
- ✅ Usage personnel uniquement
|
|
- ❌ Ne pas utiliser pour distribution publique
|
|
- ❌ Respecter les droits d'auteur
|
|
|
|
---
|
|
|
|
## 🆘 Dépannage
|
|
|
|
### Problème : "Connection refused"
|
|
|
|
**Solution :** Le serveur n'est pas démarré
|
|
```bash
|
|
python video_proxy_server.py
|
|
```
|
|
|
|
### Problème : "404 Not Found"
|
|
|
|
**Solution :** L'URL de la vidéo est incorrecte. Vérifiez avec :
|
|
```bash
|
|
curl "http://localhost:8080/info?url=VOTRE_URL"
|
|
```
|
|
|
|
### Problème : "403 Forbidden" même avec le proxy
|
|
|
|
**Solution :** Le serveur source a peut-être changé sa protection. Vérifiez les headers dans `video_proxy_server.py`.
|
|
|
|
### Problème : Vidéo lag/buffering
|
|
|
|
**Solution :**
|
|
1. Augmenter le chunk size dans le code
|
|
2. Vérifier la bande passante du VPS
|
|
3. Utiliser un CDN devant le proxy
|
|
|
|
---
|
|
|
|
## 🎉 Succès !
|
|
|
|
Si tout fonctionne, vous devriez pouvoir :
|
|
|
|
1. ✅ Lire les vidéos directement dans le navigateur
|
|
2. ✅ Les télécharger avec wget/curl
|
|
3. ✅ Les intégrer dans un lecteur HTML5
|
|
4. ✅ Les lire avec VLC
|
|
5. ✅ Y accéder depuis n'importe où (si déployé sur VPS)
|
|
|
|
**URL finale accessible publiquement :**
|
|
```
|
|
https://vid.creepso.com/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4
|
|
```
|
|
|
|
Profitez-en ! 🚀
|
|
|