首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

前面我们玩了一个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个会很慢!所以一定要珍惜每一次运行的结果,我们把结果存入文件,方便下一读取。

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

我们看一下,

如果是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和淘宝的域名测试一下)

其实整个代码量只有100行,非常适合菜鸟练手!Python就是这么有趣,高效,如果改成5个字母的全排列,大概有700多万个域名,运行大概要40分钟左右,电脑cpu呼呼直响,因为太晚太困了,我运行了一半没有跑完 。

整个代码应该有继续扩展的空间,比如加一些数字组合域名,有兴趣的同学可以试试,然后加上词法分析,也许能找到一个不错的域名,去抢注说不定能卖个好价钱!

Python就是这么有趣好玩

另外发现很多同学有入门的问题,到处找资料,现在关注码题达人小助手,我会送一些我自己精选的入门的资料,有兴趣的可以关注,非诚勿扰!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180904G0KV3K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券