eporner: play through a redirect proxy; the signed CDN links expire after 2h

Expired eporner mp4 links are answered with a 302 to static.eporner.com/
na.mp4, a one-minute "watch it on eporner.com" clip. The links expire
exactly two hours after the /xhr/video call, so anything played from a
favourite, history entry or a list left open past that hit the decoy.

New /proxy/eporner/{alnum_id}/{height} re-resolves the hash/xhr chain at
play time and 302s to the matching (else best) quality. The eporner
provider and melonstube's eporner destinations now emit these proxy URLs;
verified app clients get the best quality as video.url via the existing
redirect-proxy rule. Verified live: proxy -> fresh CDN link -> 206 video/mp4
for app and non-app clients.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUYdCh2nCVsQYgJAT7gwSi
This commit is contained in:
Simon
2026-10-22 18:09:23 +00:00
parent b131910ea2
commit 6ba65f1457
7 changed files with 154 additions and 20 deletions

View File

@@ -1,6 +1,7 @@
use crate::proxies::archivebate::ArchivebateProxy;
use crate::proxies::clapdat::ClapdatProxy;
use crate::proxies::doodstream::DoodstreamProxy;
use crate::proxies::eporner::EpornerProxy;
use crate::proxies::heavyfetish::HeavyfetishProxy;
use crate::proxies::hqporner::HqpornerProxy;
use crate::proxies::pornhd3x::Pornhd3xProxy;
@@ -24,6 +25,7 @@ pub mod animeidhentai;
pub mod archivebate;
pub mod clapdat;
pub mod doodstream;
pub mod eporner;
pub mod fikfapthumb;
pub mod hanimecdn;
pub mod hanimethumb;
@@ -71,6 +73,7 @@ pub enum AnyProxy {
ThaipornTv(ThaipornTvProxy),
Tube8(Tube8Proxy),
Supjav(SupjavProxy),
Eporner(EpornerProxy),
}
pub trait Proxy {
@@ -97,6 +100,7 @@ impl Proxy for AnyProxy {
AnyProxy::ThaipornTv(p) => p.get_video_url(url, requester).await,
AnyProxy::Tube8(p) => p.get_video_url(url, requester).await,
AnyProxy::Supjav(p) => p.get_video_url(url, requester).await,
AnyProxy::Eporner(p) => p.get_video_url(url, requester).await,
}
}
}