GreenBrowser通用表单填写插件代码:
作用 :
用同一个ID在网上各处注册BBS,邮箱的时候,有人反映GB的通用表单很多时候都不通用,尤其是网址改变、html代码中的id千变万化地前提下,通用表单往往不能正确填入。本插件的作用就是不管网址、或者网页代码如何变化,99%能通用、准确地填入预设的用户名密码 。听说GB要大幅度改进表单的自动填写了,十分期待!
※※名词解释:通用帐号——用同一个帐号密码注册各处邮箱、bbs的帐号;
通用表单——GB中的功能,用来记录通用帐号专门管填入网页表单的功能。
不支持:
1.没有密码输入框的页面。
2.安装控件才会出现的输入框(这一般是网上支付的页面,这种不推荐用通用ID!)
原理 :
探测input前方是否有“用户名”“帐号”之类字样,智能化判断,分别填入预设用户名、密码。代码含注释,完全开源,为GB新的自动填表的功能出谋献策!
用法 :
相应改动plugin.htm的源码:置入您的(一个账户打天下的那个)用户名密码。
以后每次运行插件就自动填写你所设置的用户名密码了。
已经自动填入的表单数据,底色变黄。
========测试网址========
标准:
http://www.foxmail.com/cgi-bin/loginpage?from=domain
http://www.126.com/
http://passport.csdn.net/UserLogin.aspx
http://www.phpwind.net/login.php
http://www.discuz.net/logging.php?action=login
http://club.excelhome.net/logging.php?action=login
http://www.tianya.cn/
http://www.tianya.cn/publicforum/content/no16/1/150014.shtml
前有搜索框干扰
http://passport.ku6.com/register.htm
http://hi.baidu.com/
后有搜索框干扰
http://www.video.com.cn/
只有用户名输入提示,没有密码输入提示:
http://club.excelhome.net/index.php
http://www.phpwind.net/
登录输入框在框架中
http://support.qq.com/beta2/simple/login.html
输入框前无提示,而提示在用户名输入框内的情况
http://bbs.ktxp.com/index.php
附上plugin.htm的源码:
<script language="JavaScript">
//=============lforl的作品23:59 2009-3-18 General Login V1.6=========
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)|(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)|(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);
}
}
</script>
本文转自:http://bbs.5igb.com/viewthread.php?tid=13943&extra=page%3D14