Created
April 25, 2013 05:14
-
-
Save pylemon/5457649 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # coding=utf8 | |
| import subprocess | |
| import itertools | |
| import psycopg2 | |
| dc = "a,ai,an,ang,ao,ba,bai,ban,bang,bao,bei,ben,beng,bi,bian,biao,bie,bin,bing,bo,bu,ca,cai,can,cang,cao,ce,cei,cen,ceng,cha,chai,chan,chang,chao,che,chen,cheng,chi,chong,chou,chu,chua,chuai,chuan,chuang,chui,chun,chuo,ci,cong,cou,cu,cuan,cui,cun,cuo,da,dai,dan,dang,dao,de,dei,den,deng,di,dia,dian,diao,die,din,ding,diu,dong,dou,du,duan,dui,dun,duo,e,ei,en,eng,er,fa,fan,fang,fei,fen,feng,fiao,fo,fou,fu,ga,gai,gan,gang,gao,ge,gei,gen,geng,gong,gou,gu,gua,guai,guan,guang,gui,gun,guo,ha,hai,han,hang,hao,he,hei,hen,heng,hm,hng,hong,hou,hu,hua,huai,huan,huang,hui,hun,huo,ji,jia,jian,jiang,jiao,jie,jin,jing,jiong,jiu,ju,juan,jue,jun,ka,kai,kan,kang,kao,ke,kei,ken,keng,kong,kou,ku,kua,kuai,kuan,kuang,kui,kun,kuo,la,lai,lan,lang,lao,le,lei,leng,li,lia,lian,liang,liao,lie,lin,ling,liu,lo,long,lou,lu,luan,lun,luo,ma,mai,man,mang,mao,me,mei,men,meng,mi,mian,miao,mie,min,ming,miu,mo,mou,mu,n,na,nai,nan,nang,nao,ne,nei,nen,neng,ng,ni,nia,nian,niang,niao,nie,nin,ning,niu,nong,nou,nu,nuan,nun,nuo,o,ou,pa,pai,pan,pang,pao,pei,pen,peng,pi,pian,piao,pie,pin,ping,po,pou,pu,qi,qia,qian,qiang,qiao,qie,qin,qing,qiong,qiu,qu,quan,que,qun,ran,rang,rao,re,ren,reng,ri,rong,rou,ru,rua,ruan,rui,run,ruo,sa,sai,san,sang,sao,se,sen,seng,sha,shai,shan,shang,shao,she,shei,shen,sheng,shi,shou,shu,shua,shuai,shuan,shuang,shui,shun,shuo,si,song,sou,su,suan,sui,sun,suo,ta,tai,tan,tang,tao,te,tei,teng,ti,tian,tiao,tie,ting,tong,tou,tu,tuan,tui,tun,tuo,wa,wai,wan,wang,wei,wen,weng,wo,wong,wu,xi,xia,xian,xiang,xiao,xie,xin,xing,xiong,xiu,xu,xuan,xue,xun,ya,yan,yang,yao,ye,yi,yin,ying,yo,yong,you,yu,yuan,yue,yun,za,zai,zan,zang,zao,ze,zei,zen,zeng,zha,zhai,zhan,zhang,zhao,zhe,zhei,zhen,zheng,zhi,zhong,zhou,zhu,zhua,zhuai,zhuan,zhuang,zhui,zhun,zhuo,zi,zong,zou,zu,zuan,zui,zun,zuo".split(",") | |
| def whois(domain): | |
| c = subprocess.Popen(["whois", domain], stdout=subprocess.PIPE) | |
| ret = c.stdout.read() | |
| regested = True | |
| if 'No match for' in ret: | |
| print('Good Domain: {0}'.format(domain)) | |
| regested = False | |
| else: | |
| print('Regested Domain: {0}'.format(domain)) | |
| return domain, regested | |
| def get_or_create(domain_name): | |
| con = None | |
| created = False | |
| try: | |
| con = psycopg2.connect(database='testdb', user='liwei', password='liwei') | |
| cur = con.cursor() | |
| cur.execute("SELECT name, regested FROM domain_names WHERE name='{0}'".format(domain_name)) | |
| rows = cur.fetchall() | |
| if rows: | |
| return rows[0][0], rows[0][1], created | |
| if not created: | |
| cur.execute("INSERT INTO domain_names (name, regested) VALUES ('{0}', '{1}')".format(domain_name, True)) | |
| con.commit() | |
| created = True | |
| return domain_name, True, created | |
| except psycopg2.DatabaseError, e: | |
| if con: | |
| con.rollback() | |
| print 'Error %s' % e | |
| finally: | |
| if con: | |
| con.close() | |
| def update(domain): | |
| con = None | |
| created = False | |
| try: | |
| con = psycopg2.connect(database='testdb', user='liwei', password='liwei') | |
| cur = con.cursor() | |
| cur.execute("UPDATE domain_names SET regested=False WHERE name='{0}'".format(domain)) | |
| con.commit() | |
| except psycopg2.DatabaseError, e: | |
| if con: | |
| con.rollback() | |
| print 'Error %s' % e | |
| finally: | |
| if con: | |
| con.close() | |
| if __name__ == '__main__': | |
| # ret = [whois("%s%s" % ("".join(i), ".com")) for i in itertools.product(dc, dc)] | |
| domain = 'g.com' | |
| for domain_name in itertools.product(dc, dc): | |
| domain = "{0}{1}".format("".join(domain_name), ".com") | |
| domain, regested, created = get_or_create(domain) | |
| if created: | |
| domain, regested = whois(domain) | |
| if not regested: | |
| update(domain) | |
| else: | |
| print "Skiped DB Cache: {0}".format(domain) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment