• 请不要在回答技术问题时复制粘贴 AI 生成的内容
libasten
V2EX  ›  程序员

已知第三方网站的用户名和密码,可以通过 html+js 实现自动登录吗?

  •  
  •   libasten · Aug 9, 2019 · 8616 views
    This topic created in 2645 days ago, the information mentioned may be changed or developed.
    已有一个成熟的 xx 管理系统。
    每次使用要打开浏览器输入这个系统的登录界面 url,http://xxx/login,然后输入用户名密码,点击“登录”然后进入系统主界面。
    需求是这样,在一个网页上挂一个超链接,指向上述系统的登录页面,这样点击这个超链接,跳转到这个 xx 管理的同时,附带已知的用户名和密码,跳过输入用户名密码的界面,自动进入系统主界面。
    也就是说要想要通过超链接,跳过输入用户名密码的过程,直接进系统。
    这些能通过 html+js 的方式实现吗?
    -----
    此前在其他网站咨询,有网友让试试基于 nodejs 的 puppeteer,我刚才跑了一下,因为我不懂前端开发,这个是不是要求机器上必须装 node 环境和 chrome ?
    能否像 html+js 那样运行在任何一台有浏览器的电脑上?
    22 replies  •  2019-12-02 09:53:46 +08:00
    EridanusSora
    EridanusSora
    Aug 9, 2019 via Android
    1
    electron
    moxiaonai
    moxiaonai
    Aug 9, 2019 via Android
    2
    油猴脚本?
    wdv2ly
    wdv2ly
    Aug 9, 2019 via Android
    3
    可以
    lauix
    lauix
    Aug 9, 2019
    4
    油猴脚本
    duan602728596
    duan602728596
    Aug 9, 2019
    5
    应该做的是系统登录后,接口返回的 cookie 里面带一个 token,进入这个系统时,先判断 cookie 内是否有 token,如果没有,就跳回登陆页。
    或者,跳转到一个中间链接,后端进行登陆,如果登陆成功,再次跳转到该管理系统。

    but,附带已知的用户名和密码是怎么一回事?
    AlphaTr
    AlphaTr
    Aug 9, 2019 via iPhone
    6
    纯前端的话,如果对方 csrf 没防,自己写个页面提交就行;否则就得如楼上说的,油猴一类的插件解决;话说,为什么会有这样的不安全做法的需求,用户名密码自动填充不行吗
    arrow8899
    arrow8899
    Aug 9, 2019
    7
    如果是同一个域名的话是可以的,如果域名不同肯定不行,浏览器禁止了跨域操作,可以用 nginx 做反代,在 nginx 内用 lua 脚本实现登录操作( openresty )。
    rockjike
    rockjike
    Aug 9, 2019
    8
    浏览器存 token, 判断 token 是否有效, 有效直接跳主页, 无效在登录
    iddddg
    iddddg
    Aug 9, 2019
    9
    来个第三方网站登陆地址看看?
    SmiteChow
    SmiteChow
    Aug 9, 2019
    10
    puppeteer-recorder
    beastk
    beastk
    Aug 9, 2019 via iPhone
    11
    form 表单自动提交不行吗
    vtwoextb
    vtwoextb
    Aug 9, 2019
    12
    第一次登录保存 cookie,脚本带着 cookie 登录
    orzorzorzorz
    orzorzorzorz
    Aug 9, 2019
    13
    iframe 传值完事
    scofieldpeng
    scofieldpeng
    Aug 10, 2019
    14
    其实如果是你偷懒的话,完全可以用密码管理工具来解决啊,比如大家用的 1password 这些
    libasten
    libasten
    OP
    Aug 10, 2019
    15
    @duan602728596 “附带”两个字可能不准确,我想要表达的意思就是将手边已知的用户名密码用上。
    我也是设想着做一个后端登录模块,然后成功了,跳转到该系统。但是没有思路,我一直是写后端增删改查的,稍微懂点前端内容,能给点详细的指导吗?


    @AlphaTr 确实不安全,但是是内网的办公系统之间的跳转,与互联网物理隔离了,我们领导就不想输入用户名密码,觉得烦,让我们想办法搞个“小工具”,减去输入的动作,您说的“自动填充”,能展开具体说说吗?


    @beastk 能否展开说说 form 自动提交怎么做?跨域能搞定吗?

    一并感谢大家。
    duan602728596
    duan602728596
    Aug 10, 2019 via iPhone
    16
    @libasten 你的系统是前后端分离的么?用户凭据是存在 cookie 里的么?
    Cheez
    Cheez
    Aug 10, 2019
    17
    没看懂你想干什么

    你能修改登录页面的话就在里面改 js,接受数据

    不能的话就修改浏览器,用油猴脚本

    不能的话就快捷键 AHK

    不能的话就洗洗睡吧
    jinliming2
    jinliming2
    Aug 10, 2019 via iPhone
    18
    @orzorzorzorz 但如果对方设置了 X-Frame-Options: deny 或者 X-Frame-Options: sameorigin,就不能用 iframe 了
    tuboshuv1
    tuboshuv1
    Nov 25, 2019
    19
    @libasten 大兄弟,你之前的这个问题解决了吗
    libasten
    libasten
    OP
    Nov 25, 2019
    20
    @tuboshuv1 后来没有按照这个思路走,直接在 url 里面明文传参进入系统了。
    tuboshuv1
    tuboshuv1
    Nov 25, 2019❤️2
    21
    @libasten 我在网上找到了相应的方法。连接是 https://www.cnblogs.com/carrollCN/p/11182195.html
    搜索关健词是:js 脚本实现在该界面直接跳转到一个登录界面并且自动登录
    关键代码是:
    function PostSubmit() {
    var postUrl = 'http://localhost:8093/nantaitou/login.shtml';//提交地址
    var postData = 'superAccount';//第一个数据,xxxxxx 里面就是你需要填写的数据
    var msgData ='superUser8080';//第二个数据同上
    var ExportForm = document.createElement("FORM");
    document.body.appendChild(ExportForm);
    ExportForm.method = "POST";
    var newElement = document.createElement("input");
    newElement.setAttribute("name", "username");
    newElement.setAttribute("type", "hidden");

    var newElement2 = document.createElement("input");
    newElement2.setAttribute("name", "password");
    newElement2.setAttribute("type", "hidden");
    ExportForm.appendChild(newElement);
    ExportForm.appendChild(newElement2);
    newElement.value = postData;
    newElement2.value = msgData;
    ExportForm.action = postUrl;
    ExportForm.submit();
    };
    libasten
    libasten
    OP
    Dec 2, 2019
    22
    @tuboshuv1 感谢!虽然我后面没有用这个思路,但是学习到了一个新技能!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4815 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 08:20 · PVG 16:20 · LAX 00:20 · JFK 03:20
    ♥ Do have faith in what you're doing.