Javascript 自动登录网站(自动填写和提交)

Javascript 自动登录网站(自动填写和提交),javascript,jquery,html,Javascript,Jquery,Html,我正在尝试访问一个网站并自动登录 在这之后,我想返回这是成功还是失败,但我无法让它工作。页面加载为空白,没有任何事情发生 注意:我故意将URL灰显 下面是我的尝试 <HTML> <HEAD> <script src="https://code.jquery.com/jquery-2.2.3.min.js" type="text/javascript"></script> <TITLE>Login</TITLE> </H

我正在尝试访问一个网站并自动登录

在这之后,我想返回这是成功还是失败,但我无法让它工作。页面加载为空白,没有任何事情发生

注意:我故意将URL灰显

下面是我的尝试

<HTML>
<HEAD>
<script src="https://code.jquery.com/jquery-2.2.3.min.js" type="text/javascript"></script>
<TITLE>Login</TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>

<script type="text/javascript">
    $(document).ready(function () {
            runLogin();
        });

    function runLogin(){
        alert("start");

        if (window.location.indexOf("url") > -1) {
                jQuery("#j_username").val("username");
                jQuery("#j_password").val("password");
                jQuery("#loginForm").submit();
            }
    }
</script>

登录
$(文档).ready(函数(){
runLogin();
});
函数runLogin(){
警报(“启动”);
if(window.location.indexOf(“url”)>-1){
jQuery(“ju用户名”).val(“用户名”);
jQuery(“#j#u password”).val(“password”);
jQuery(“#loginForm”).submit();
}
}

如果您想测试您的登录表单,请使用量角器或其他e2e测试框架,但这种方法似乎不太安全


它正在加载一个空白页面,因为您的后端脚本没有重定向回您开始的页面一个选项是将当前网页URL作为额外字段发送到登录表单,以便登录表单后可以重定向回。这将要求您重构后端代码,以便它能够处理这些额外的信息(如果您使用的是
j_security\u check
,则实际上不可能)另一个选项是向登录页面发出AJAX请求,这样它实际上不会重定向页面,它只是静静地提交表单,然后JS处理响应

如果要将当前页面的URL添加到登录请求,请执行以下操作:

function runLogin() {
    if (window.location.indexOf("url") > -1) {
            jQuery("#j_username").val("username");
            jQuery("#j_password").val("password");
            jQuery("#loginForm").append(
                '<input type="hidden" name="url" value="'+window.location.href+'"/>'
            );
            jQuery("#loginForm").submit();
    }
}

为什么要以这种方式登录?后端登录脚本返回什么样的数据?它是返回HTML、JSON、XML还是纯文本?window.location.indexOf(“url”)应该做什么?这就是你将url灰显的部分吗?-Akshay我基本上想访问一个网站,然后登录以确认它“按应有的方式运行”-4castle我实际上认为没有返回任何内容,是的,“url”部分将替换为我正在测试的url。我查找了它,如果登录失败,
j_security_check
将返回登录页面的HTML,如果登录成功,将返回发送请求的页面的HTML。您使用的是
j_security\u check
?这也是我的想法,根据您提供的信息,我将尝试使用ajax,因为这更接近我在第一次尝试实现的目标。我唯一的问题是,如何在网页上提交表单。上述表单确实是#loginForm,但是如何使用ajax请求填充各个字段呢?请查看jQuery的
.serialize()
函数和
$.post
函数。它将表单转换为查询字符串。这就是我在示例中使用的。也可以查找
$.post
。它接受url、查询字符串和回调函数并提交。提交完成后,将运行回调函数。
function runLogin() {
    var $form = $("#loginForm");
    $.post($form.attr("action"), $form.serialize(), function(data) {
        // login successful/unsuccessful message displays
        // depending on what "data" contains
    });
}