码迷,mamicode.com
首页 > 其他好文 > 详细

爬虫之暴力字典生成器

时间:2016-04-27 15:42:23      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:

Object.extend=function(props){
    //继承父类
    var prototype=Object.create(this.prototype)
    //初始化函数ctor
    var _Class=function(){
        if (this.ctor)
            this.ctor.apply(this, arguments);
    }
    //当前类属性和方法
    for(var k in props){
        prototype[k]= props[k]
    }
    _Class.prototype = prototype;
    //类继承
    _Class.extend=this.extend;
    //类扩展
    _Class.expand = function (prop) {
        for (var name in prop) {
            prototype[name] = prop[name];
        }
    };
    return _Class

}

var AutoStr=Object.extend({
    str:"",
    data:null,//开始位置和结束位置
    lendata:null,
    length:1,
    ctor:function(str){
        var the=this
        the.data=[]
        the.lendata=[]
        the.str=str

        str.replace(/\[(.*?)\]/g,function(m,item){
            var itemarr=[]
            var itemlen=0
            item.replace(/(.)-(.)/g,function(m,p1,p2){
                itemarr.push(p1.charCodeAt(0))
                itemarr.push(p2.charCodeAt(0))
                itemlen=itemlen+p2.charCodeAt(0)-p1.charCodeAt(0)+1
            })
            the.data.push(itemarr)
            the.lendata.push(itemlen)
        })
        //记录长度
        var len=1
        for(var i=0;i<the.lendata.length;i++){
            len=len*the.lendata[i]
        }
        the.length=len
    },
    eq:function(n){
        var back=this._sync(n,this.lendata,this.length)
        var strArr=this.getStrArr(back)
        var num=-1
        var str=this.str.replace(/\[.*?\]/g,function(){
            num=num+1
            return String.fromCharCode(strArr[num])
        })
        return str
    },
    //多进制转换 demo:把16转成110
    _sync:function(n,arr,len){
        var back=[]
        for(var i=0;i<arr.length;i++){
            len=len/arr[i]
            back.push(parseInt(n/len))
            n=n%len
        }
        return back
    },
    //获取返回的字符
    getStrArr:function(back){
        var arr=[]
        for(var i=0;i<this.data.length;i++){
            arr.push(this.getM(this.data[i],back[i]))
        }
        return arr
    },
    //获取区间范围
    getM:function(arr,n){
        for(var i=0;i<arr.length;i=i+2){
            var len=arr[i+1]-arr[i]+1
            if(n>=len){
                n=n-len
            }else{
                return arr[i]+n
            }
        }
    }
})

var d=new AutoStr("http://www.baidu.com/[1-2A-Z][0-2].html")
console.log(d.length)
for(var i=0;i< d.length;i++){
    console.log(d.eq(i))
}

  可以生成中文、英文、数字字典,暴力破解密码,暴力爬虫

爬虫之暴力字典生成器

标签:

原文地址:http://www.cnblogs.com/caoke/p/5438957.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!