python-connect-box
python-connect-box copied to clipboard
`/common_page/login.html` returns 404 on newer connect box versions; new REST-based API
I have a ziggo connect box, which after a while has stopped working properly.
Debugging it from my remote home assistant installation, I stumbled across some weird data while debugging;
In [2]: from connect_box import ConnectBox
In [3]: import aiohttp
In [4]: async def create():
...: session = aiohttp.ClientSession()
...: return ConnectBox(session, "[REDACTED]", "192.168.178.1")
...:
In [5]: import logging
In [6]: logging.basicConfig(level=logging.DEBUG)
In [7]: box = await create()
In [9]: await box.async_initialize_token()
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[9], line 1
----> 1 await box.async_initialize_token()
File ~/.venv/lib/python3.12/site-packages/connect_box/__init__.py:506, in ConnectBox.async_initialize_token(self)
504 async def async_initialize_token(self) -> None:
505 """Get the token first."""
--> 506 await self._async_initialize_valid_token()
507 await self._async_do_login_with_password(CMD_LOGIN)
File ~/.venv/lib/python3.12/site-packages/connect_box/__init__.py:519, in ConnectBox._async_initialize_valid_token(self)
513 async with self._session.get(
514 f"http://{self.host}/common_page/login.html",
515 headers=self.headers,
516 timeout=10,
517 ) as response:
518 await response.read()
--> 519 self.token = response.cookies["sessionToken"].value
521 except (asyncio.TimeoutError, aiohttp.ClientError) as err:
522 _LOGGER.error("Can not load login page from %s: %s", self.host, err)
KeyError: 'sessionToken'
In [10]: async with box._session.get(
...: f"http://{box.host}/common_page/login.html",
...: headers=box.headers,
...: timeout=10,
...: ) as response:
...: await response.read()
...: r = response
...:
In [11]: r
Out[11]:
<ClientResponse(http://192.168.178.1/common_page/login.html) [404 Not Found]>
<CIMultiDictProxy('Content-Type': 'text/html', 'Content-Length': '341', 'Date': 'Mon, 03 Mar 2025 11:14:51 GMT', 'Server': 'lighttpd/1.4.63')>
It returns a 404, which I hadn't seen before.
curl confirms this, with it 404ing on the login sub-page, while it returns a whole new page on /
This is the login page i'm getting, after a spinner;
In "administration", and the information section, i get the following;
Connect Box informatie
De onderstaande informatie geeft de Connect Box status weer.
Conform standaard specificaties : DOCSIS 3.0
Hardware versie : 5.01
Software versie : LG-RDK_CH7465LG-NCIP-6.18-2406.2-NOSH
MAC-adres : [REDACTED]
Serienummer Connect Box : [REDACTED]
Beschikbaarheid : 83day(s)7h:38m:4s
Netwerk toegang : Toegang tot internet
Connectbox seems to have switched to a REST-based API, I see the following API calls;
GET http://192.168.178.1/rest/v1/system/localization
GET http://192.168.178.1/rest/v1/system/ui/screens
GET http://192.168.178.1/rest/v1/system/modemmode
GET http://192.168.178.1/rest/v1/system/firstinstall
GET http://192.168.178.1/rest/v1/user/3/language
GET http://192.168.178.1/rest/v1/user/login
POST http://192.168.178.1/rest/v1/user/login
GET http://192.168.178.1/rest/v1/system/gateway/provisioning
GET http://192.168.178.1/rest/v1/system/languages
GET http://192.168.178.1/rest/v1/system/softwareupdate
GET http://192.168.178.1/rest/v1/cablemodem/state_
GET http://192.168.178.1/rest/v1/system/info
GET http://192.168.178.1/rest/v1/network/hosts?connectedOnly=true
GET http://192.168.178.1/rest/v1/network/ipv4/dhcp
DELETE http://192.168.178.1/rest/v1/user/3/token/[REDACTED]
GET http://192.168.178.1/rest/v1/mta/lines
GET http://192.168.178.1/rest/v1/wifi/band2g/state
GET http://192.168.178.1/rest/v1/wifi/band5g/state
GET http://192.168.178.1/rest/v1/wifi/band2g/wps/pairing/jobs
GET http://192.168.178.1/rest/v1/wifi/band5g/wps/pairing/jobs