[Python] 纯文本查看 复制代码 import asyncio
import time
import websockets
import json
from bit_api import openBrowser
async def run_cdp():
res = openBrowser("8dc0d9ae41212fcba9123066953923e2")
WS_URL = res['data']['ws']
async with websockets.connect(WS_URL) as websocket:
msg_id = 0
session_id = None
async def send_cmd(method, params=None):
nonlocal msg_id, session_id
msg_id += 1
cmd = {"id": msg_id, "method": method, "params": params or {}}
if session_id and not method.startswith("Target."):
cmd["sessionId"] = session_id
await websocket.send(json.dumps(cmd))
while True:
resp_raw = await websocket.recv()
resp = json.loads(resp_raw)
if resp.get("id") == msg_id:
return resp
if resp.get("method") == "Target.receivedMessageFromTarget":
inner = json.loads(resp["params"]["message"])
if inner.get("id") == msg_id:
return inner
# 1. 新建页面
resp = await send_cmd("Target.createTarget", {"url": "about:blank"})
target_id = resp["result"]["targetId"]
# 2. attach
await websocket.send(json.dumps({
"id": 999,
"method": "Target.attachToTarget",
"params": {"targetId": target_id, "flatten": True}
}))
while True:
evt = json.loads(await websocket.recv())
if evt.get("method") == "Target.attachedToTarget":
session_id = evt["params"]["sessionId"]
print("Got session_id:", session_id)
break
# 3. 启用
await send_cmd("Page.enable")
await send_cmd("Runtime.enable")
# 4. 跳转百du
await send_cmd("Page.navigate", {"url": "https://www.baidu.com"})
# 等 loadEventFired
while True:
evt = json.loads(await websocket.recv())
if evt.get("method") == "Target.receivedMessageFromTarget":
inner = json.loads(evt["params"]["message"])
if inner.get("method") == "Page.loadEventFired":
print("Page fully loaded")
break
# 5. 用 JS 操作 DOM
await send_cmd("Runtime.evaluate", {
"expression": "document.querySelector('.s_ipt').value='哥们我很需要你的500精币谢谢';"
})
await send_cmd("Runtime.evaluate", {
"expression": "document.querySelector('.s_btn').click();"
})
# 等 1 秒
await asyncio.sleep(1)
print("哥们我很需要你的500精币谢谢")
# end
print("搜索已触发!")
# 运行
asyncio.run(run_cdp())
补充内容 (2025-9-18 22:57):
该帖子的答案,荣誉+1 |