Fenix Plugin — hospedado no Wasmer Edge (modo plugin client-side)
O Wasmer agora serve o manifest do Fenix Plugin no formato plugin
(igual o Cloudflare Pages servia): o Nuvio baixa /manifest.json, resolve os
filename relativos (/providers/{id}.js) e roda cada provider no aparelho
do usuário — IP residencial, sem bloqueio de datacenter.
Isso é a arquitetura do Chole Bhature na direção certa: um host de manifest que
compartilha os providers, mas sem expor o código (o repo Fenix-Plugin é
privado; o que vai pro Wasmer é só o build, e o scraping roda no celular de
quem usa, não num servidor de terceiros).
Por que mudou do addon server-side pra plugin
O modo addon (rota /addon.json, scraping no servidor) funciona, mas o IP
do datacenter do Wasmer leva 403 do Cloudflare em alguns sites (animefire,
animesonlinecc, betteranime). No modo plugin, o scraping roda no aparelho
de cada usuário → todos os sites funcionam, e a cota free do Wasmer quase
não é gasta (só serve arquivos estáticos + os proxies de metadados).
Endpoints
| Rota | O que faz |
|---|---|
/manifest.json | Manifest plugin (formato scrapers + filename) — é o link pro Nuvio |
/providers/{id}.js | Arquivo do provider client-side (o Nuvio baixa e executa) |
/api/tmdb-proxy | Proxy da chave TMDB (matching de títulos/temporadas) |
/api/metadata-proxy | Matching TMDB + AniList + Kitsu (gate de anime, cross-IDs) |
/api/cache | Cache em memória (substitui o KV do Cloudflare) |
/addon.json | (opcional) Manifest do modo addon server-side — quem quiser o scraping no servidor |
Dois modos, dois manifest
| Modo | Rota | Onde roda o scraping | Providers |
|---|---|---|---|
| Plugin (Nuvio) | /manifest.json | No aparelho de cada usuário (IP residencial) | 17 providers, todos — sem bloqueio |
| Addon (Stremio/Nuvio) | /addon.json | No servidor do Wasmer (IP datacenter) | 8 providers (medidos no edge) |
Validado ao vivo (2026-08)
Modo plugin (simulando o Nuvio: baixa manifest + provider do Wasmer e roda no sandbox, IP residencial):
| Provider | Frieren S1E1 | Obs |
|---|---|---|
| goyabu | 4 streams | T2E1 One Piece = ep global 62 ✓ |
| animefire | 5 streams | desbloqueado (era 403 no datacenter) |
| animesonlinecc | 2 streams | desbloqueado (era 403 no datacenter) |
| betteranime | 4 streams | desbloqueado |
| isekai | 4 streams | |
| amyflix | 1 stream |
Modo addon (no IP do Wasmer, medido via /_probe por provider):
| Provider | Status no edge | Detalhe |
|---|---|---|
| betteranime | ✅ 4 streams | Frieren S1E1 |
| goyabu | ✅ 4 streams | Frieren S1E1 |
| isekai | ✅ 4 streams | Frieren S1E1 |
| animesonlinecloud | ✅ 2 streams | instável (site dá 504 às vezes) |
| nettv | ✅ 1 stream | filme |
| vetela | ✅ 1 stream | filme |
| cinevs-tv | ✅ 1-2 streams | série + filme |
| saraflix | ✅ 1-2 streams | série + filme |
| animefire | ❌ 403 | Cloudflare bloqueia IP de datacenter |
| animesonlinecc | ❌ 403 | Cloudflare bloqueia IP de datacenter |
| topanimes | ❌ 0 | player não resolve no edge |
| amyflix / doramasonline / onetouchtv / novelacurta | ❌ timeout | lentos/instáveis no edge |
| corenatela | ❌ 0 | busca não acha no edge |
| fenix | ❌ 0 | precisa do bridge local (não roda no addon) |
Estrutura
| Arquivo | Papel |
|---|---|
src/index.js | Worker WinterCG: manifest plugin + addon + providers + proxies |
src/metadata.js | Matching direto: TMDB + AniList + Kitsu (sem Cloudflare) |
src/plugin-files.js | Gerado pelo build: manifest + conteúdo dos providers client-side |
src/providers/*.js | Providers server-side (modo addon, opcional) |
build.js | Passo 0: gera plugin-files.js do repo. Passo 1: providers. Passo 2: dist/index.js |
wasmer.toml / app.yaml | Deploy no Wasmer (WinterJS) |
_test_nuvio_sim.js | Simula o Nuvio de ponta a ponta contra o deploy |
Build + teste local
cd "C:\Users\Alvaro\Meu plugin\wasmer-addon-js"
NODE_PATH="C:\Users\Alvaro\Meu plugin\node_modules" node build.js
node _test_local.js # golden set do modo addon (server-side)
node _test_nuvio_sim.js # simula o Nuvio (manifest + providers do deploy)
Deploy
./deploy.sh # build + deploy no Wasmer (owner alvitosr)
Link pro Nuvio: https://fenix-animes-wasmer.wasmer.app/manifest.json
Compartilhamento (fonte única = Fenix-Plugin repo, privado)
- O
build.jspuxamanifest.json+providers/*.jsdo repo local (clone doFenix-Plugin.git, privado) — o código nunca sai do seu PC. - O Wasmer só serve o build: quem usa o plugin não vê o repo, e os providers sem token são os únicos expostos (os de token ficam fora do manifest).
- Atualização: edite em
../src→node build.js→./deploy.sh. - (Opcional) workflow no GitHub Actions do repo privado pra auto-deploy no push,
igual o Cloudflare fazia — com secret
WASMER_TOKEN.
Limites honestos
- Wasmer free (Hobby): ~100k requests/mês, 3 apps. No modo plugin o Wasmer só serve estáticos + proxies → a cota aguenta muito mais gente do que no modo addon (que raspava os sites a cada stream).
- O código dos providers client-side é público pra quem instala (igual era no Cloudflare Pages) — por isso os providers de token ficam fora do manifest.
- Animes Online Cloud deu 504 pontual num teste (instabilidade do site, não do addon).