stremio-sekai/PROXY_GUIDE.md
2025-10-31 19:03:17 +01:00

11 KiB

🎬 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

# Installer les dépendances (inclut Flask)
pip install -r requirements.txt

2. Démarrer le serveur proxy

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
  1. Lire ! 🎬

C. Dans une page 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

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

curl "http://localhost:8080/proxy?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4" -o episode_527.mp4

F. En 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
sudo apt update
sudo apt install nginx
  1. Créer un fichier de configuration
sudo nano /etc/nginx/sites-available/video-proxy

Contenu :

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 "";
    }
}
  1. Activer le site
sudo ln -s /etc/nginx/sites-available/video-proxy /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
  1. Démarrer le serveur Python avec gunicorn
# Installer gunicorn
pip install gunicorn

# Démarrer le serveur
gunicorn -w 4 -b 127.0.0.1:8080 video_proxy_server:app
  1. Créer un service systemd pour auto-start
sudo nano /etc/systemd/system/video-proxy.service

Contenu :

[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 :

sudo systemctl daemon-reload
sudo systemctl enable video-proxy
sudo systemctl start video-proxy
sudo systemctl status video-proxy
  1. Ajouter SSL avec Certbot (HTTPS)
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 :

curl "http://localhost:8080/info?url=https://17.mugiwara.xyz/op/saga-7/hd/527.mp4"

Réponse :

{
    "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 :

curl http://localhost:8080/health

Réponse :

{
    "status": "ok",
    "service": "sekai-video-proxy",
    "version": "1.0.0"
}

🔧 Options du Serveur

# 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 :

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 :

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 :

// 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 :

# 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 :

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/:

# Voir les logs en temps réel
tail -f logs/*_scraping.log

Pour un monitoring avancé sur VPS :

# 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é

python video_proxy_server.py

Problème : "404 Not Found"

Solution : L'URL de la vidéo est incorrecte. Vérifiez avec :

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 ! 🚀