Skip to content

Commit dbedf00

Browse files
committed
Mimick all request headers for status
1 parent d4a4d45 commit dbedf00

File tree

1 file changed

+28
-8
lines changed

1 file changed

+28
-8
lines changed

airos/base.py

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -264,17 +264,29 @@ async def _request_json(
264264

265265
# Potential XM fix - not sure, might have been login issue
266266
if self.api_version == 6 and url.startswith(self._status_cgi_url):
267-
# Modified from login.cgi to index.cgi
268-
request_headers["Referrer"] = f"{self.base_url}/index.cgi"
267+
# Ensure all HAR-matching headers are present
269268
request_headers["Accept"] = "application/json, text/javascript, */*; q=0.01"
270-
request_headers["X-Requested-With"] = "XMLHttpRequest"
271-
# Added AJAX / UA
272-
request_headers["User-Agent"] = (
273-
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36"
269+
request_headers["Accept-Encoding"] = "gzip, deflate, br, zstd"
270+
request_headers["Accept-Language"] = "pl"
271+
request_headers["Cache-Control"] = "no-cache"
272+
request_headers["Connection"] = "keep-alive"
273+
request_headers["Host"] = (
274+
urlparse(self.base_url).hostname or "192.168.1.142"
274275
)
276+
request_headers["Pragma"] = "no-cache"
277+
request_headers["Referer"] = f"{self.base_url}/index.cgi"
275278
request_headers["Sec-Fetch-Dest"] = "empty"
276279
request_headers["Sec-Fetch-Mode"] = "cors"
277280
request_headers["Sec-Fetch-Site"] = "same-origin"
281+
request_headers["User-Agent"] = (
282+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36"
283+
)
284+
request_headers["X-Requested-With"] = "XMLHttpRequest"
285+
request_headers["sec-ch-ua"] = (
286+
'"Google Chrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141"'
287+
)
288+
request_headers["sec-ch-ua-mobile"] = "?0"
289+
request_headers["sec-ch-ua-platform"] = '"Windows"'
278290
if url.startswith(self._login_urls["v6_login"]):
279291
request_headers["Referrer"] = f"{self.base_url}/login.cgi"
280292
request_headers["Origin"] = self.base_url
@@ -387,10 +399,18 @@ async def login(self) -> None:
387399
return
388400

389401
# Start of v6, go for cookies
390-
_LOGGER.error("TESTv%s - Trying to get / first for cookies", self.api_version)
402+
_LOGGER.error(
403+
"TESTv%s - Trying to get /index.cgi first for cookies", self.api_version
404+
)
391405
with contextlib.suppress(Exception):
392406
cookieresponse = await self._request_json(
393-
"GET", f"{self.base_url}/", authenticated=True
407+
"GET",
408+
f"{self.base_url}/index.cgi",
409+
authenticated=True,
410+
headers={
411+
"Referer": f"{self.base_url}/login.cgi",
412+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36",
413+
},
394414
)
395415
_LOGGER.error(
396416
"TESTv%s - Cookie response: %s", self.api_version, cookieresponse

0 commit comments

Comments
 (0)