美文网首页大数据 爬虫Python AI Sql收藏笔记python
听说注册牛逼的域名能赚钱,我用Python写了百行代码来分析

听说注册牛逼的域名能赚钱,我用Python写了百行代码来分析

作者: Python编程社区 | 来源:发表于2018-09-07 11:08 被阅读250次

    前面我们玩了一个Python加密的黑科技(还在担心酒店信息泄露,我用Python写了段加密算法,看你怎么破),今天我们来玩一个更有意思的小案例!大家都知道注册域名,尤其是牛逼的域名抢先注册可以赚钱,尤其是位数比较小的,3位,4位,5位的域名!既然我们玩Python,不如动手写一段代码来分析百万个域名,看看有没有捡漏的机会!

    为了简单示例,我们用纯4位数的字母来演示一下我们的程序思想!大家可以扩展到6位字母,或者6-8字母和数字组合的域名等等!

    01.产生随机4位字母组合

    域名大部分都是字母开头的,我们这里先从26个字母里面随机挑4个字母,然后进行全排列!这个对Python来说,so easy,2-3行代码搞定!

    1).产生随机4个字母的全排列


    用Python里面的itertools这个模块,Python里面有很多牛逼的模块itertools是比较酷的一个。利用itertools里面的permutations进行全排列。因为是域名我们需要加上前缀"www"和".com"。当然也可以扩展到".cn"

    2).把组合字母存入文件

    运行一个26个字母的全排列是非常消耗时间的,我们这里取4个字母,如果是取6个,8个会很慢!所以一定要珍惜每一次运行的结果,我们把结果存入文件,方便下一读取。

    一个写文件,一个读文件,为了存方便,我们在每一个域名后面加了换行符' '。所以在读的时候,我们要去掉换行符。

    我们看一下,

    如果是4位字母的全排列大概是有35万多种组合

    如果是5位字母随机全排列域名大概是多少,一共有780万多种组合,大概耗时50秒。如果再加上1个字母或者数字,都是百万级别的数据,产生百万域名的地址大概2分钟不到!

    02.遍列百万域名

    这么多域名我们肯定不可能一一去访问,我们用最简单爬虫去访问一下它们的首页,如果长度大于0,证明这个网站是存在的。这么大规模的频繁访问,肯定是用Python里面的并发了。

    Python里面的并发有很多种套路,这里我选择gevent,这是轻量级的协程访问,而且帮你封装好了,访问百万级别的量,还是很轻松的!

    1).简单爬虫请求页面

    用requests请求页面,或者首页的内容,然后看一下长度大于0即可,说明页面有数据!

    2).异步并发

    我们用gevent来做并发,非常简单,想搭积木一样填数据即可!

    用gevent的spawn函数绑定一个需要多任务执行的函数地址和对应的传入的参数

    接着我们用joinall等待前面执行的事件结束即可,会返回一个微协程的结果result

    最后用result里面的get函数获取网页地址和对应的长度

    3).启动百万域名查询


    requests不能直接并发,需要用猴子补丁import gevent.monkey。而且为了防止一次并发太多,我们把每次请求的域名进行分段,一次请求20个域名!

    看一下效果:

    我设置了4个字母的随机排列,大概35万个域名,运行了3分钟,结果让我大吃一惊,竟然很多网站都没有被注册,当然也有可能是request请求的时候没有加header,或者判断status_code。(为了保证代码的正确性,我加了一个abcd123和淘宝的域名测试一下)


    相关文章

      网友评论

      • fangkyi03:取长度是非常浪费性能的一种方式

      本文标题:听说注册牛逼的域名能赚钱,我用Python写了百行代码来分析

      本文链接:https://www.haomeiwen.com/subject/cxaqgftx.html