fix(proxy): okcdn odrzuca obcy Origin, ponowienie bez niego

_build_headers dokleja Origin zawsze, gdy znamy Referer. okcdn (OK.ru,
porndupe) na ten sam adres z Refererem daje 206, a z Refererem i Originem
400, wiec kazdy zapasowy proxy porndupe konczyl sie 502 (120 bledow 502
w tydzien). Przy 400 jedno ponowienie bez Origin; zwykly <video> w
przegladarce i tak go nie wysyla.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
goon-foss 2026-10-02 15:04:14 +02:00
parent 6c5d409fcc
commit edf9e8a39f

View file

@ -904,6 +904,19 @@ async def proxy_stream(
stream=True,
follow_redirects=True,
)
# okcdn (OK.ru, porndupe) odrzuca obcy naglowek Origin kodem 400, a _build_headers
# dokleja go zawsze, gdy znamy Referer. Przegladarka przy zwyklym <video> Origin
# nie wysyla. Bez tego kazdy zapasowy proxy porndupe konczyl sie 502 (2026-10-02:
# ten sam adres z Refererem 206, z Refererem i Originem 400).
if upstream.status_code == 400 and "Origin" in headers and method.upper() in ("GET", "HEAD"):
await upstream.aclose()
headers.pop("Origin", None)
log.info("proxy: upstream 400 z Origin, ponawiam bez niego %s", target[:70])
upstream = await client.send(
client.build_request(method, target, headers=headers),
stream=True,
follow_redirects=True,
)
if (
upstream.status_code in _TUBE_REFRESH_STATUSES
and refetch_url