登录表单是否受到用户脚本的保护?

时间:2016-02-28 11:20:38

标签: javascript greasemonkey autologin

以下是rutracker.org网站的登录表单:

<form id="top-login-form" action="http://login.rutracker.org/forum/login.php" method="post" style="display: inline;">
<input id="top-login-uname" type="text" placeholder="имя" accesskey="l" tabindex="1" name="login_username">
<input id="top-login-pwd" type="password" placeholder="пароль" tabindex="2" name="login_password">
<input id="top-login-btn" type="submit" tabindex="3" value="вход" name="login">
</form>

以下是自动登录的Greasemonkey脚本:

// ==UserScript==
// @include     http://rutracker.org/*
// @grant       none
// ==/UserScript==

var f = document.getElementById("top-login-form");
f.elements.namedItem("login_username").value = "xxxxxx";
f.elements.namedItem("login_password").value = "yyyyyyy";
f.elements.namedItem("login").value = "%E2%F5%EE%E4";
f.submit();

问题是实际上只发送了两个值,因此Post请求login_username=xxxxxxx&login_password=yyyyyyy已经login_username=xxxxxxx&login_password=yyyyyyy&login=%E2%F5%EE%E4

所以login=%E2%F5%EE%E4丢失了。

是否对UserJS提供某种保护?

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

  

是否对UserJS提供某种保护?

没有

当您提交表单时,单击的提交按钮是一个成功的控件。成功的控件的名称和值包含在表单数据中。

您没有通过点击提交按钮提交表单。您正在调用表单对象的submit方法。因此,提交按钮不成功,其数据不包含在表单中。

  

我该如何解决这个问题?

在隐藏输入中复制提交按钮的名称和值。

答案 1 :(得分:0)

f.elements.namedItem("login").click() 不是字段,而是按钮。你没有填写它 - 你点击它。也不需要try {} catch (e) {} - 点击就暗示了这一点。

process.on('uncaughtException', (err) => {
  console.log(`Caught exception: ${err}`);
});
相关问题