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

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


具体方法不过多阐述
将出现请求出错的域名或者匹配出问题的域名写入数据库
'''
--------------------------

ver     :       2.0
date    :       2017/11/22
auth    :       wud

--------------------------
'''

import DNS
import MySQLdb
import whois
import sys
from time import sleep
from time import ctime

def 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()
        pass

def 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()
        pass

def 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!"
        pass


def 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-=1

if __name__ == '__main__':
    main()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值