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

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

  •  
  •   libasten · Aug 9, 2019 · 8363 views
    This topic created in 2538 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
        1
    EridanusSora  
       Aug 9, 2019 via Android
    electron
    moxiaonai
        2
    moxiaonai  
       Aug 9, 2019 via Android
    油猴脚本?
    wdv2ly
        3
    wdv2ly  
       Aug 9, 2019 via Android
    可以
    lauix
        4
    lauix  
       Aug 9, 2019
    油猴脚本
    duan602728596
        5
    duan602728596  
       Aug 9, 2019
    应该做的是系统登录后,接口返回的 cookie 里面带一个 token,进入这个系统时,先判断 cookie 内是否有 token,如果没有,就跳回登陆页。
    或者,跳转到一个中间链接,后端进行登陆,如果登陆成功,再次跳转到该管理系统。

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


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


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

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

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

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

    不能的话就快捷键 AHK

    不能的话就洗洗睡吧
    jinliming2
        18
    jinliming2  
       Aug 10, 2019 via iPhone
    @orzorzorzorz 但如果对方设置了 X-Frame-Options: deny 或者 X-Frame-Options: sameorigin,就不能用 iframe 了
    tuboshuv1
        19
    tuboshuv1  
       Nov 25, 2019
    @libasten 大兄弟,你之前的这个问题解决了吗
    libasten
        20
    libasten  
    OP
       Nov 25, 2019
    @tuboshuv1 后来没有按照这个思路走,直接在 url 里面明文传参进入系统了。
    tuboshuv1
        21
    tuboshuv1  
       Nov 25, 2019   ❤️ 2
    @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
        22
    libasten  
    OP
       Dec 2, 2019
    @tuboshuv1 感谢!虽然我后面没有用这个思路,但是学习到了一个新技能!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1180 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 18:06 · PVG 02:06 · LAX 11:06 · JFK 14:06
    ♥ Do have faith in what you're doing.