使用python进行whois查询并存入数据库

来源:互联网 发布:c语言中的error 编辑:程序博客网 时间:2024/06/01 09:35

通过whois查询将得到域名的whois信息并存储在数据库中


具体方法不过多阐述
将出现请求出错的域名或者匹配出问题的域名写入数据库
'''--------------------------ver     :       2.0date    :       2017/11/22auth    :       wud--------------------------'''import DNSimport MySQLdbimport whoisimport sysfrom time import sleepfrom time import ctimedef getwhois(url):    try:        data = whois.whois(url)        print data        print "whois query successfully!"        return data    except:        print "whois query fail!"        f2 = open("fail.txt", 'r+')        print >> f2, url        f2.close()        passdef getip(url):    try:        query = sys.argv[0]        DNS.DiscoverNameServers()        reqobj = DNS.Request(url)        answerobj = reqobj.req(name=query, qtype=DNS.Type.A)        if not len(answerobj.answers):            return        for item in answerobj.answers:            ip = ("%s") % (item['data'])        print "IP is: ", ip        return ip    except:        print "TIME OUT"        f2 = open("fail.txt", 'r+')        print >> f2, url        f2.close()        passdef whoisoperation(ip,url,data):    text = data    try:        updated_date = str(text['updated_date'])        status = str(text['status'])        whoisname = str(text['registrant_name'])        dnssec = str(text['dnssec'])        city = str(text['tech_city'])        expiration_date = str(text['expiration_date'])        zipcode = str(text['zipcode'])        domain_name = str(text['domain_name'])        country = str(text['registrant_state_province'])        whois_server = str(text['whois_server'])        state = str(text['state'])        phone = str(text['tech_phone'])        registrar = str(text['registrar'])        # referral = text['referral']        referral_url = str(text['referral_url'])        address = str(text['registrant_address'])        name_servers = str(text['name_servers'])        emails = str(text['emails'])        creation_date = str(text['creation_date'])        try:            print "connecting databases..."            db = MySQLdb.connect("×××.×××.×××.×××", "×××××", "×××××××××", "×××", charset="utf8")            print "conncected!"            cursor = db.cursor()            cursor.execute('INSERT INTO whois_info(url,ip,updated_date,status,whois_name,dnssec,city,expiration_date,zipcode,domain_name,country,whois_server,state,registrar,referral_url,address,name_servers,creation_date,emails,Insert_time)values(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',                           [url,ip,updated_date,status,whoisname,dnssec,city,expiration_date,zipcode,domain_name,country,whois_server,                            state,registrar,referral_url,address,name_servers,creation_date,emails,ctime()])            db.commit()            print "insert successfully!"        except:            print "connect MySQL failed"            f2 = open("fail.txt", 'r+')            print >> f2, url            f2.close()            pass        try:                updated_date = str(text['updated_date'])                status = str(text['status'])                whoisname = str(text['tech_name'])                dnssec = str(text['dnssec'])                city = str(text['city'])                expiration_date = str(text['expiration_date'])                zipcode = str(text['zipcode'])                domain_name = str(text['domain_name'])                country = str(text['country'])                whois_server = str(text['whois_server'])                state = str(text['state'])                registrar = str(text['registrar'])                # referral = text['referral']                referral_url = str(text['referral_url'])                address = str(text['address'])                name_servers = str(text['name_servers'])                emails = str(text['emails'])                creation_date = str(text['creation_date'])                try:                    print "connecting databases..."                    db = MySQLdb.connect("×××.×××.×××.×××", "×××××", "×××××××××", "×××", charset="utf8")                    print "conncected!"                    cursor = db.cursor()                    cursor.execute(                        'INSERT INTO whois_info(url,ip,updated_date,status,whois_name,dnssec,city,expiration_date,zipcode,domain_name,country,whois_server,state,registrar,referral_url,address,name_servers,creation_date,emails,Insert_time)values(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',                        [url, ip, updated_date, status, whoisname, dnssec, city, expiration_date, zipcode, domain_name, country,                         whois_server, state, registrar, referral_url, address, name_servers, creation_date, emails, ctime()])                    db.commit()                    print "insert successfully!"                except:                    print "connect MySQL failed"                    f2 = open("fail.txt", 'r+')                    print >> f2, url                    f2.close()    except:        f2 = open("fail.txt", 'r+')        print >> f2, url        f2.close()        print "MATHC FAIL!"        passdef main():    f = open("fail.txt",'r')    f1 = open("whois.txt",'r+')    flag = 4    while(flag>0):        url = f.readline()[:-1]        print 5-flag        print url        ip = getip(url)        data = getwhois(url)        whoisoperation(ip,url,data)        print >>f1, url        print >>f1, ip        print >>f1, data        flag-=1if __name__ == '__main__':    main()
原创粉丝点击