From b2517c9270382794b3ec5be73201590b4127d553 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Fri, 17 Jul 2026 11:28:26 +0200 Subject: fix: send User-Agent to avoid Cloudflare 403 on sun API sunrise-sunset.org sits behind Cloudflare, which rejects the default Python-urllib User-Agent with 403 (error 1010). Send a normal UA in _http_get so fetch_sun and geolocate get through. Co-Authored-By: Claude Opus 4.8 --- hyprsunset_qt/sun.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'hyprsunset_qt') diff --git a/hyprsunset_qt/sun.py b/hyprsunset_qt/sun.py index aba2ae3..d6b8cd9 100644 --- a/hyprsunset_qt/sun.py +++ b/hyprsunset_qt/sun.py @@ -39,9 +39,14 @@ def write_cache(payload: dict, path: Path) -> None: GEO_URL = "http://ip-api.com/json" SUN_URL = "https://api.sunrise-sunset.org/json?lat={lat}&lng={lon}&formatted=0" +# sunrise-sunset.org is behind Cloudflare, which returns 403 (error 1010) for +# the default Python-urllib User-Agent. Send a normal UA so requests get through. +_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) hyprsunset-qt" + def _http_get(url: str, timeout: float = 10.0) -> str: - with urllib.request.urlopen(url, timeout=timeout) as resp: + req = urllib.request.Request(url, headers={"User-Agent": _USER_AGENT}) + with urllib.request.urlopen(req, timeout=timeout) as resp: return resp.read().decode() -- cgit v1.2.3