rename cookie_grabber -> tmwd_cdp_bridge (CDP bridge extension)

This commit is contained in:
Liang Jiaqing
2026-03-04 11:15:32 +08:00
parent dcf65d72c7
commit 0ab90af250
11 changed files with 178 additions and 153 deletions

View File

@@ -42,9 +42,39 @@ fetch('PDF_URL').then(r=>r.blob()).then(b=>{
- 已修复移除TM脚本内轮询改由Python侧`get_session_dict()`前后对比检测新标签
- 同理TM脚本中任何后台逻辑都应避免依赖setTimeout轮询
## Cookie提取(含HttpOnly)
前提:需先安装`assets/cookie_grabber/`扩展
机制:注入`id="__ljqcg__"`的div→扩展检测后自动将完整cookie写回该元素textContent含HttpOnly## 验证码/页面视觉截图
## Cookie+CDP桥(tmwd_cdp_bridge扩展)
前提:需先安装`assets/tmwd_cdp_bridge/`扩展(含debugger权限)
触发ID`__ljq_ctrl`
### Cookie提取(含HttpOnly)
注入`id="__ljq_ctrl"`的div(无需data-cmd默认cookies)→扩展写回JSON到textContent
```js
const d=document.createElement('div');d.id='__ljq_ctrl';
document.body.appendChild(d);
await new Promise(r=>setTimeout(r,300));
return d.textContent; // {ok:true, data:[...]}
```
### CDP命令(任意Chrome DevTools Protocol)
```js
const d=document.createElement('div');d.id='__ljq_ctrl';
d.dataset.cmd='cdp'; d.dataset.method='Network.getCookies';
d.dataset.params=JSON.stringify({urls:[location.href]});
document.body.appendChild(d);
await new Promise(r=>setTimeout(r,500));
return d.textContent; // {ok:true, data:{...}}
```
- 可用任意CDP方法(Network/DOM/Page/Runtime等)参数通过data-params传JSON
- 每次调用会attach→sendCommand→detach debugger页面顶部会短暂显示调试提示
## 登录凭证autofill获取
检测simphtml.py已内置autofill检测`web_scan`输出的input会带`data-autofilled="true"`属性value显示为`⚠️受保护-读tmwebdriver_sop的autofill章节提取`(非真实值)
问题:`:-webkit-autofill`可探测autofill状态`input.value`为空Chrome安全保护需物理点击释放
突破PostMessage点击输入框触发释放
前置枚举Chrome主窗口标题匹配web_scan当前页标题不匹配则切换标签页避免点到后台tab
流程JS检查`:-webkit-autofill`→获取`getBoundingClientRect()*devicePixelRatio`→PostMessage发`WM_LBUTTONDOWN/UP``Chrome_RenderWidgetHostHWND`子窗口→读`value`
多个RenderWidgetHostHWND共存(NexonLauncher等非浏览器Chrome应用也有)必须EnumWindows按父窗口标题匹配目标页再取其子RenderWidget
平台Windows用PostMessagemacOS用CGEvent未测试
## 验证码/页面视觉截图
- 优先JS `canvas.toDataURL()` 直接拿base64验证码是canvas/img时最干净无需截屏
- 备选:`window.open(location.href,'_blank')` 前台开新标签→win32截图→完后close
- GM_openInTab在web_execute_js不可用非油猴上下文