油猴脚本:用户名密码填写

本脚本没有任何网络资源,不放心者请不要使用,毕竟自己的帐号重要.

找了一下,在geasyfork.org没有找到适合大部分论坛填写用户密码的脚本.

自己又懒得输入,就把greenbrowser上的改了一下发出来.

(没错,我以前就是用Greenbrowser的,直到最近再也没更新了…)

适合大部分论坛吧,网站没试过不清楚.

感谢作者lforl.

代码的20行和21行更改为你自己的用户名和密码.

要使用时点击pw这个按钮就可以了.

// ==UserScript==
// @name         填写密码
// @namespace    pw
// @version      0.1
// @description  自动填写用户名密码,根据GreenBrowser上"智能通用填充:用户名密码"(作者lforl)更改而来
// @author       hapocn
// @match        http*://*
// @match        *
// @include      *
// @grant        GM_registerMenuCommand


// ==/UserScript==


GM_registerMenuCommand('pw', password)

function password()
{
var myName="Username";//请相应改双引号内的Username为自己的通用【用户名】
var myPass="Password";//请相应改双引号内的Password为自己的通用【密码】

//*******=======除了以上两行内容相应修改,下面代码不要改动=======******
var ming=0;
var mima=0;


if(ming*mima<4){findTheNode(document.body,myName,myPass);}//如果名字和密码未填过
//-----------------考虑框架,遍历-----------------
var aFR = top.frames;

if(aFR.length>0)
{
	for(var i=0;i<aFR.length;i++)
	{
	if(ming*mima<4){findTheNode(aFR[i].document.body,myName,myPass);}//如果名字和密码未填过
	}
}
//======函数======
function findTheNode(elm,u_name,p_word)
{
	if(ming*mima==4){return;}//如果名字和密码都填过了,就跳出
	var elm;
	for(var i=0;i<elm.childNodes.length;i++)
	{
		if(elm.childNodes[i].nodeType==3)
			{
			if(ming==0 && elm.childNodes[i].nodeValue.toString().replace(/门户/ig,"").match(/.*(名)|(帐)|(户)|(号)|(号:)|(id)|(user)|(username)|(username*)|(account).*/i))
				{
				ming= 1;//找到用户名字样
//				alert(elm.childNodes[i].nodeValue);
				}
			else if(mima==0 && elm.childNodes[i].nodeValue.toString().match(/.*(密)|(码)|(码:)|(pass).*/i))
				{
				mima= 1;//找到密码字样
				}
			}
		else
			{
			var tmp="";
			try{tmp=elm.childNodes[i].nodeName.replace(/input/i,"input").replace(/password/i,"password");}
			catch(e){}
			if(tmp=="input" && elm.childNodes[i].style.display!="none")
				{
				if(ming*mima<4 && ming>0 && elm.childNodes[i].type=="text")//找到离用户名最近的一个input输入框:找到过名字字样ming=1,mima=1、0
					{
					elm.childNodes[i].value=u_name;
					elm.childNodes[i].style.backgroundColor="#ffffcc";//填充后背景变色,提示已经填写之意
					ming=2;//用户名填过以后记录一下
					}
				else if(elm.childNodes[i].type=="text" && (elm.childNodes[i].value+elm.childNodes[i].id+elm.childNodes[i].name).toString().replace(/门户/ig,"").match(/.*(名)|(帐)|(户)|(号)|号:)|(id)|(user)|(username)|(username*)|(account).*/i))
					{//考虑输入框前无提示,而提示在用户名输入框内或者id或者name含有user字样的情况
					elm.childNodes[i].value=u_name;
					elm.childNodes[i].style.backgroundColor="#ffffcc";//填充后背景变色,提示已经填写之意
					ming=2;//用户名填过以后记录一下
					}
				else if(ming*mima==2 && (elm.childNodes[i].type=="password" || elm.childNodes[i].type=="text"))
				//找到离密码字样的最近的input:名字填过了ming等于2,并且找到过密码字样mima等于1
					{
					elm.childNodes[i].value=p_word;
					elm.childNodes[i].style.backgroundColor="#ffffcc";
					mima=2;//密码填过以后记录一下
					}
				else if(ming==2 && elm.childNodes[i].type=="password")
				//找到离密码字样的最近的input:名字填过了ming等于2,没找到过密码字样mima等于0
					{
					elm.childNodes[i].value=p_word;
					elm.childNodes[i].style.backgroundColor="#ffffcc";
					mima=2;
					}
				}

			}
		findTheNode(elm.childNodes[i],myName,myPass);
	}
}
}

虽然造轮子的精神值得点赞。

但是为什么不用密码管理器?

2 个赞

既然用了脚本还是需要点一下,何不做成小书签。

方便管理备份

哈哈,忘了