1

我是javascript和tampermonkey的新手,请在你的解释中记住这一点。

这是我正在尝试使用的网站

如您所见,它非常简单。然而,没有办法让网站记住你的密码,现在我要做的就是制作一个脚本,用你猜对了,我的用户名和密码来填写用户名和密码字段。

根据我在网上找到的一些教程(似乎没有很多在 TamperMonkey 中编写脚本的教程),我设法想出了以下代码

// ==UserScript==
// @name       Powerschool Memory
// @namespace  http://use.i.E.your.homepage/ 
// @version    0.1
// @description  Makes PowerSchool remember your username and password.
// @match      https://powerschool.avon.k12.ct.us/gaurdian/home.html
// @require http://code.jquery.com/jquery-latest.js
// @copyright  2013+, You
// ==/UserScript==

jQuery(function($) {
    document.getElementById($('input[type=password]').attr('id')).textContent = 'password_here';
    document.getElementById('fieldAccount').innerHTML = 'username_here';
});

如您所见,我尝试了两种方法来设置用户名(设置元素的 innerHTML)和密码(设置 textContent)的字段内容,但似乎都不起作用。

我相当确定脚本正在运行,因为每当我要导航到网站时,我都会去破折号并重新启动脚本。

我应该提到,用户名字段的 ID 是通过右键单击文本框、检查元素并复制并粘贴下一个 id 变量获得的

你们能帮我看看我的错误在哪里,也许更重要的是,我在做什么来搞砸它?

4

1 回答 1

3

对于教程和问题,您可以搜索 Greasemonkey 主题。除了少数例外,如果它适用于 Greasemonkey,那么它在设计上也适用于 Tampermonkey。

至于问题代码,有很多问题:

  1. 这不是您为textpassword <input>元素设置值的方式。在 jQuery 中,您可以使用函数.val()设置它们。例如:$("#fieldAccount").val("foo");
  2. @grant要求没有指令的 jQuery 。这将破坏脚本,或破坏页面或破坏两者
  3. @match指令与页面不匹配。 gaurdian不正确,页面使用guardian.
    您可以@match通过查看右上角的 Tampermonkey 图标来判断您的指令何时正确。如果该页面上有任何脚本处于活动状态,它将显示一个带有活动脚本数量的红色图标。
  4. @match指令与页面不匹配。匹配指定https,但该站点不支持 SSL (!!!)。您需要匹配不安全的页面,因为这是唯一提供的页面,然后向网站所有者大喊停止广播您的敏感信息。
  5. 使用不当getElementById$('input[type=password]').attr('id')undefined针对这个目标页面的。
  6. 将用户名和密码存储在脚本文件中!这是书中最古老的错误和漏洞之一。如果你这样做了,那么你得到 pwn 只是时间问题。

    在您得到粗略的想法后,将像这样的“敏感信息”框架合并到脚本中。

  7. 不必要的使用jQuery(function($) {。在 Greasemonkey 或 Tampermonkey 脚本中通常不需要它,在这种情况下只是稍微混淆了代码。
  8. getElementById当你有 jQuery 时使用。
    document.getElementById("foo")与 相同$("#foo"),但后者更易于键入、阅读和维护。诚然,getElementById可能会无限快,但速度如此之小,以至于它永远不会成为您尝试做的任何实际事情的一个因素。
    jQuery 方法也更便携和可重用。


把它们放在一起,这个完整的脚本就可以工作了:

// ==UserScript==
// @name        Powerschool Memory
// @version     0.1
// @description Makes PowerSchool remember your username and password.
// @match       http://powerschool.avon.k12.ct.us/guardian/home.html
// @match       https://powerschool.avon.k12.ct.us/guardian/home.html
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @grant       GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/
//-- If/when SSL becomes available, switch to only using the https pages.

$("#fieldAccount").val ("username_here");
$("#login-inputs input[name='pw']").val ("password_here");


但是,请改用上面问题 6 中链接的框架。

于 2013-10-23T00:40:20.260 回答