• 爬虫之暴力字典生成器



    class AutoStr {
    constructor(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(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(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(back){
    var arr=[]
    for(var i=0;i<this.data.length;i++){
    arr.push(this.getM(this.data[i],back[i]))
    }
    return arr
    }
    //获取区间范围
    getM(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))
    }

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

  • 相关阅读:
    HDU 1513 最长子序列
    HDU 3033 分组背包变形(每种至少一个)
    HDU 1712 分组背包
    深度学习
    《将博客搬至CSDN》
    UVa 10917 Dijkstra
    hdu 3839 Ancient Messages (dfs )
    LA 4255 UVa1423 拓扑排序
    poj 2515 差分序列,排列组合
    UVA 10054 the necklace 欧拉回路
  • 原文地址:https://www.cnblogs.com/caoke/p/5438957.html
Copyright © 2020-2023  润新知