前面我们玩了一个Python加密的黑科技(还正在担忧酒店消息泄露,我用Python写了段加密算法,看你怎样破),今天我们来玩一个更成心思的小案例!大师都晓得注册域名,特别是牛逼的域名抢先注册能够赔本,特别是位数比力小的,3位,4位,5位的域名!既然我们玩Python,不如脱手写一段代码来阐发百万个域名,看看无没无捡漏的机遇!
为了简单示例,我们用纯4位数的字母来演示一下我们的法式思惟!大师能够扩展到6位字母,或者6-8字母和数字组合的域名等等!
域名大部门都是字母开首的,我们那里先从26个字母里面随机挑4个字母,然后进行全陈列!那个对Python来说,soeasy,2-3行代码搞定!
用Python里面的itertools那个模块,Python里面无良多牛逼的模块itertools是比力酷的一个。操纵itertools里面的permutations进行全陈列。由于是域名我们需要加上前缀。当然也能够扩展到p>
用Python里面的itertools那个模块,Python里面无良多牛逼的模块itertools是比力酷的一个。操纵itertools里面的permutations进行全陈列。由于是域名我们需要加上前缀。当然也能够扩展到p
运转一个26个字母的全陈列长短常耗损时间的,我们那里取4个字母,若是是取6个,8个会很慢!所以必然要爱惜每一次运转的成果,我们把成果存入文件,便利下一读取。
一个写文件,一个读文件,为了存便利,我们正在每一个域名后面加了换行符\n。所以正在读的时候,我们要去掉换行符。
若是是5位字母随机全陈列域名大要是几多,一共无780万多类组合,大要耗时50秒。若是再加上1个字母或者数字,都是百万级此外数据,发生百万域名的地址大要2分钟不到!
那么多域名我们必定不成能逐个去拜候,我们用最简单爬虫去拜候一下它们的首页,若是长度大于0,证明那个网坐是存正在的。那么大规模的屡次拜候,必定是用Python里面的并发了。
Python里面的并发无良多类套路,那里我选择gevent,那是轻量级的协程拜候,并且帮你封拆好了,拜候百万级此外量,仍是很轻松的!
用gevent的spawn函数绑定一个需要多使命施行的函数地址和对当的传入的参数接灭我们用joinall期待前面施行的事务竣事即可,会前往一个微协程的成果result最初用result里面的get函数获取网页地址和对当的长度3).启动百万域名查询
requests不克不及间接并发,需要用猴女补丁importgevent.monkey。并且为了防行一次并发太多,我们把每次请求的域名进行分段,一次请求20个域名!
我设放了4个字母的随机陈列,大要35万个域名,运转了3分钟,成果让我大吃一惊,竟然良多网坐都没无被注册,当然也无可能是request请求的时候没无加header,或者判断status_code。(为了包管代码的准确性,我加了一个abcd123和淘宝的域名测试一下)
今天的文章分享到此竣事,但愿本次分享对反正在进修Python的你无所帮帮,文章部门素材来流收集,如无侵权,请联系删除。
我做开辟几年的时间,若是大师对于进修Python的进修方式,进修路线以及:是自学仍是培训的信问,都能够随时来问我。
还没有评论,来说两句吧...
发表评论