import asyncio import json import websockets import requests async def inspect_android_bridge(): pages = requests.get("http://localhost:9222/json/list").json() ws_url = pages[0]["webSocketDebuggerUrl"] async with websockets.connect(ws_url, max_size=50*1024*1024) as ws: js = """ (() => { const bridgeMethods = []; if (window.AndroidBridge) { for (let prop in window.AndroidBridge) { bridgeMethods.push(prop); } } return { bridgeMethods: bridgeMethods, analyticsConnector: window.analyticsConnectorInstances ? Object.keys(window.analyticsConnectorInstances) : [] }; })() """ await ws.send(json.dumps({ "id": 1, "method": "Runtime.evaluate", "params": { "expression": js, "returnByValue": True } })) res = json.loads(await ws.recv()) print(json.dumps(res.get("result", {}).get("result", {}).get("value", {}), indent=2, ensure_ascii=False)) if __name__ == "__main__": asyncio.run(inspect_android_bridge())