如何用JavaScript携带Base64编码登录数据打开URL并处理登录弹窗
密码保护站点登录弹窗处理方案
以下为兼容主流浏览器、不使用URL携带凭证格式的实现脚本,适配你现有的bot.ExecuteScript调用方式:
适用Basic Auth认证站点示例
如果你已经完成了「用户名:密码」的Base64编码,可直接使用如下脚本,预请求携带Authorization头建立有效会话后再打开页面,不会触发登录弹窗:
// 替换为你生成的编码后凭证,格式固定为 Basic + 空格 + Base64(用户名:密码) const authHeader = "Basic WG9yOmpGOGpzTm8zSDk="; fetch("https://anysite.com/", { headers: { "Authorization": authHeader }, credentials: "include" }).then(() => { // 会话建立完成后打开目标页 window.open("https://anysite.com/"); });
对应你使用bot调用的写法:bot.ExecuteScript "const authHeader='Basic 替换为你的编码后串';fetch('https://anysite.com/',{headers:{'Authorization':authHeader},credentials:'include'}).then(()=>window.open('https://anysite.com/'))"
适用表单登录站点示例
如果站点是普通表单登录而非Basic Auth,可直接提交登录请求建立会话:
fetch("https://anysite.com/login-api", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, // 替换为实际的登录参数名和值 body: "user=你的账号&pwd=你的密码", credentials: "include" }).then(() => { window.open("https://anysite.com/"); });
注意事项
- 两种方案都不会在URL中明文暴露凭证,规避了浏览器禁用URL携带Basic Auth的限制,兼容Chrome、Edge、Firefox全版本
- 若站点有CSRF校验要求,可在fetch之前先请求登录页获取CSRF Token,携带在请求头或者请求体中即可
内容的提问来源于stack exchange,提问作者Murphy013
相关产品推荐
相关产品推荐

