import { listPages, wait } from '/home/admin9webs/shein建品/sh_lib.mjs'; import { CDP, SAN as S } from '/tmp/cdp3.mjs'; import { writeFileSync } from 'fs'; const t=(await listPages()).find(x=>/91miaoshou/i.test(x.url)); const c=await CDP.connect(t.webSocketDebuggerUrl); await c.send('Page.enable'); await c.send('Runtime.enable'); await c.send('Page.navigate',{url:'https://erp.91miaoshou.com/'}); await wait(12000); const chk = async () => String(await c.evalJS(`JSON.stringify({acc:!!document.querySelector('input.login-form__input[placeholder="手机号/子账号/邮箱"]'), cap:!!document.querySelector('.captcha-field__img'), btn:!!document.querySelector('.login-form__submit-btn')})`)); console.log('初始:', await chk()); if (!/true/.test(await chk())) { console.log('点登录开弹窗…'); await c.evalJS(`(()=>{const b=[...document.querySelectorAll('button,a,span')].find(e=>e.offsetParent!==null&&/^\\s*登录\\s*$/.test((e.innerText||'').trim())); if(b) for(const ev of ['mousedown','mouseup','click']) b.dispatchEvent(new MouseEvent(ev,{bubbles:true,cancelable:true,view:window})); return 1;})()`); await wait(3000); console.log('点后:', await chk()); } const src=String(await c.evalJS(`(()=>{const i=document.querySelector('.captcha-field__img'); return i?(i.src||''):'';})()`)); const b64=src.includes('base64,')?src.split('base64,')[1]:''; if(!b64){ console.log('仍无验证码图'); process.exit(1); } writeFileSync('/tmp/ms_cap4.jpg', Buffer.from(b64,'base64')); console.log('验证码已存 /tmp/ms_cap4.jpg'); process.exit(0);