Some checks failed
SDK CI / python-compile (push) Has been cancelled
保留源码与部署文档,排除超大二进制和本地运行配置。
64 lines
2.8 KiB
Bash
Executable File
64 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# 无线主控:等待 WS Agent → hook probe → 给卡若发「你好」→ 发朋友圈 → 截图
|
||
# 不依赖 Mac ADB / oneclick / ensure_ws_agent.sh
|
||
set -euo pipefail
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
SDK_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||
DEVICE_ID="${DEVICE_ID:-xgfe65eimrrofyws}"
|
||
SDK_PORT="${SDK_PORT:-8899}"
|
||
SDK_BASE="http://127.0.0.1:${SDK_PORT}"
|
||
OUT_DIR="${SDK_ROOT}/../开发文档/5、接口/images"
|
||
LOG="/tmp/wp_kaluo_msg_moments.log"
|
||
TO_ID="${TO_ID:-卡若}"
|
||
MSG="${MSG:-你好}"
|
||
MOMENTS="${MOMENTS:-你好,来自工作手机无线主控测试 $(date '+%Y-%m-%d %H:%M')}"
|
||
MAX_WAIT="${WS_WAIT_SEC:-600}"
|
||
|
||
mkdir -p "$OUT_DIR"
|
||
exec > >(tee -a "$LOG") 2>&1
|
||
echo "=== $(date) 无线主控:等待 WS Agent ${DEVICE_ID}(最长 ${MAX_WAIT}s)==="
|
||
echo "Termux 启动命令: bash ${SCRIPT_DIR}/termux_agent_bootstrap.sh ${DEVICE_ID} ${SDK_PORT}"
|
||
|
||
bash "${SCRIPT_DIR}/wait_ws_agent.sh" "${DEVICE_ID}" "${SDK_BASE}" "${MAX_WAIT}"
|
||
|
||
echo "=== hook probe(经 device_transport / WS)==="
|
||
PROBE=$(curl -s --max-time 30 "${SDK_BASE}/api/v3/hook/probe/${DEVICE_ID}")
|
||
echo "$PROBE" | python3 -m json.tool 2>/dev/null || echo "$PROBE"
|
||
supports=$(echo "$PROBE" | python3 -c "import sys,json; print(json.load(sys.stdin).get('supports_hook', False))" 2>/dev/null || echo "False")
|
||
if [[ "$supports" != "True" ]]; then
|
||
echo "⚠️ supports_hook 未 true,仍尝试 execute(Frida 可能正在 attach)"
|
||
fi
|
||
|
||
echo "=== 发消息给 ${TO_ID}:${MSG} ==="
|
||
SEND_JSON=$(curl -s -X POST "${SDK_BASE}/api/v3/hook/execute" \
|
||
-H "Content-Type: application/json" \
|
||
-d "{\"device_id\":\"${DEVICE_ID}\",\"platform\":\"wechat\",\"action\":\"send_message\",\"params\":{\"to_id\":\"${TO_ID}\",\"content\":\"${MSG}\",\"msg_type\":\"text\"},\"hook_only\":true}")
|
||
echo "$SEND_JSON" | python3 -m json.tool 2>/dev/null || echo "$SEND_JSON"
|
||
|
||
echo "=== 发朋友圈 ==="
|
||
MOMENTS_JSON=$(curl -s -X POST "${SDK_BASE}/api/v3/moments/post" \
|
||
-H "Content-Type: application/json" \
|
||
-d "{\"device_id\":\"${DEVICE_ID}\",\"platform\":\"wechat\",\"content\":\"${MOMENTS}\"}")
|
||
echo "$MOMENTS_JSON" | python3 -m json.tool 2>/dev/null || echo "$MOMENTS_JSON"
|
||
|
||
TS=$(date +%Y%m%d_%H%M%S)
|
||
SHOT="${OUT_DIR}/moments_success_${TS}.png"
|
||
|
||
echo "=== 截图 → ${SHOT} ==="
|
||
SHOT_JSON=$(curl -s -X POST "${SDK_BASE}/api/v3/devices/${DEVICE_ID}/screenshot")
|
||
echo "$SHOT_JSON" | python3 -c "
|
||
import sys, json, base64, pathlib
|
||
d = json.load(sys.stdin)
|
||
data = d.get('data') or {}
|
||
b64 = data.get('image') or data.get('base64') or data.get('screenshot')
|
||
path = pathlib.Path('${SHOT}')
|
||
if b64:
|
||
if ',' in b64: b64 = b64.split(',',1)[1]
|
||
path.write_bytes(base64.b64decode(b64))
|
||
print('saved', path)
|
||
else:
|
||
print('no image in response', d)
|
||
" 2>/dev/null || echo "$SHOT_JSON"
|
||
|
||
echo "=== 完成 $(date) log=${LOG} ==="
|