ENS未注册域名批量查询

  • 0. 简介
  • 1. web 3.0及ENS域名
  • 2. 序列化文件生成域名
  • 3. Selinum自动化操作
    • 3.1 浏览器无界面模式打开关闭自动化
    • 3.2 元素定位
    • 3.3 测试单个ens域名
  • 3. 多进程运行
  • 4. 后记

0. 简介

去年,我在阿里云那里购买了域名cvtutorials.com(一口气买了10年的:p),打算在这个网站以及自己的公众号:机器视觉全栈er上输出机器视觉领域文章,跌跌撞撞已经有大半年了。

由于不可抗因素,部分地区访问网站无法显示界面,我也无能为力:p

回过头来看,我选的域名还是蛮好的嘛(厚着脸皮),cv指的是计算机视觉,后面的tutorials意思是教程,你要是问我为啥没选mvtutorials,正好和机器视觉全栈er有呼应啊?那是因为我考虑到mv还有music video之意,所以就避开了。

在选取域名的时候,还用上了阿里云的批量查询未注册域名的功能。恰好:p,我有机会接触到了web3.0,也想给自己的网站搞个web3.0时代的域名。首先我就利用python自己写了个代码实现web3.0域名的批量查询,看看域名是否已经注册了,看看能不能捡个漏。代码(代码获取方式直接到最后)实现的主要组成部分如下:

  • 将序列化文件作为输入生成web3.0域名(我从网上下载了英语词典里面有英语常用词汇)
  • 使用Selinum模拟用户对浏览器进行操作
  • 多进程技术节省未注册域名批量查询时间

1. web 3.0及ENS域名

web3.0是web2.0和区块链的结合。和web2.0不同的是,web3.0时代的数据和内容不会被少数的大型科技公司垄断,会被参与者自己掌握。

web 1.0:1991~2004

web 2.0:2004~?

web 3.0:2014~?

web3.0时代,基于以太坊开发的Dapp层出不穷。和web2.0时代用可读性好的域名代替IP地址类似,web3.0时代,用可读性好的域名去替代地址(我个人觉得这个钱包地址类似身份证是你的身份),ENS就是其中的代表性的域名服务。ENS全称是Ethereum Name Service(以太坊域名服务),是从以太坊基金会孵化出来的。

2. 序列化文件生成域名

我们打开浏览器,在地址栏中输入app.ens.domains,可以看到如下界面:

在搜索框中输入cvtutorials,我们可以看到cvtutorials.eth还没有注册:p(Available表示没有被注册)

通过地址栏可以看出,为了想验证某个域名是否被注册,可以直接访问https://app.ens.domain/search/<domain_name>地址即可。首先,我们需要批量生成我们想要探查的域名,代码如下:

import csv # 访问域名的前缀
base_url = "https://app.ens.domains/search/"# 从words5_ori.csv文件中获取单词用来批量生成域名
words5_ori = []
csv_reader = csv.reader(open("./words5_ori.csv"))
for line in csv_reader:words5_ori.append(line)# 对单词表中的单词进行处理,包括移除两个字母的单词、移除空格等(移除的都是不符合ens域名规则的)
words5_remove_twocharacters = [i for i in words5_ori if len(i[0])>2]words5_remove_space = [i for i in words5_remove_twocharacters if " " not in i[0]]req_urls = [base_url + i[0] for i in words5_remove_space]

这样我们就生成了req_urls列表,里面是待检测的域名集合。

3. Selinum自动化操作

Selinum是一个开源的web UI自动化测试工具,可以通过浏览器的驱动程序(根据自己浏览器版本进行选择,点击这里进入下载界面)支持编程语言的开发。我们选择的浏览器是谷歌浏览器,需要下载谷歌浏览器的驱动。点击帮助–关于google chrom,可以看到google浏览器版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z7b8t0cy-1654081087133)(https://cdn.jsdelivr.net/gh/cvtutorials/cvtutorials_picbed/python_starter/20220601171331.png)]


将压缩包解压后,可以将ChromeDriver.exe放在固定路径下,然后将该路径放入到环境变量里即可。

3.1 浏览器无界面模式打开关闭自动化

根据下面的代码片段实现浏览器的无界面模式(不会看到浏览器打开)访问及关闭。

# 需要用pip install selenium安装selenium包
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import Bychrome_options=Options()
#设置chrome浏览器无界面模式,如果将这行代码去掉,会自动弹出浏览器
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(options=chrome_options)
browser.get(url)
# TODO:将你想要执行的代码放在这里
# 关闭浏览器
browser.close()
# 关闭chreomedriver进程
browser.quit()

pip安装速度慢可以用国内源,方法点击这里

3.2 元素定位

根据前面的教程,我们已经知道如何生成域名以及自动操作浏览器了,现在需要得到访问网页之后的反馈结果,访问的域名是注册还是没有注册,也就是看搜索域名后,这个域名是available还是unavailable,前面已经有available了,现在,我们来看下unavailable的案例:

我们希望从箭头所指的地方读取英文单词,根据available还是unavailable就可以判断域名是否被注册,我们在谷歌浏览器中右击页面,点击检查,点击箭头所指符号:

将鼠标悬停到目标位置(这里是unavailable单词处)然后点击该处。

然后右边元素代码会高亮:

然后我们右击该处,选择copy,选择Copy XPath。

你就会得到如下值://*[@id=“root”]/div/main/div[2]/a/div[1]/div。然后输出几个常见的eth后缀的域名,我们发现这个位置就对应available或unavailable。我们可以通过find_element()函数,利用XPATH定位元素的方法,获取到这个元素的值,这样我们就知道了域名是否已经注册。

3.3 测试单个ens域名

chrome_options=Options()
#设置chrome浏览器无界面模式
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(options=chrome_options)
browser.get(url)
while 1:try:# global ens_dict# res = browser.find_element_by_xpath('//*[@id="root"]/div/main/div[2]/a/div[1]/div')ens_status = browser.find_element(by=By.XPATH, value='//*[@id="root"]/div/main/div[2]/a/div[1]/div')ens_name = browser.find_element(by=By.XPATH, value='//*[@id="root"]/div/main/div[2]/a/h2')ens_dict[ens_name.text[:3]] = ens_status.text if ens_status.text == "Available":tf = open(ens_name.text[:3]+".json", "w")json.dump(ens_dict, tf)tf.close()breakexcept:pass
# 关闭浏览器
browser.close()
# 关闭chreomedriver进程
browser.quit()

3. 多进程运行

由于python中的GIL的原因,我们选用多进程库multiprocessing去运行函数。num_workers根据自己的实际需求进行设置,我的CPU为16核心32线程,我就随便选了个数字8。

# 设置并行数
num_workers = 8
pool = multiprocessing.Pool(processes=num_workers)
pool_outputs = pool.map(test_ens_name, req_urls)
pool.close()
pool.join()

4. 后记

就在我用完这个方法后,发现了有python库有这个功能,放在下一期吧:p,关注公众号机器视觉全栈er,后台回复ens即可获取单词的csv文件及项目源码。(浏览器驱动要和你自己的浏览器对应)

后面还有批量制作NFT,请关注公众号追踪最新进展:p

参考文献:

  • https://en.wikipedia.org/wiki/Web3

python入门与实战--ENS未注册域名批量查询相关推荐

  1. 在线域名批量查询工具-未注册域名批量查询软件

    在线域名批量查询工具 在线域名批量查询工具是一种通过互联网进行批量查询域名相关信息和指标的工具.以下是其主要特点: 在线查询:在线域名批量查询工具可以直接在浏览器中进行查询,无需下载和安装任何软件. ...

  2. 在线未注册域名批量查询-域名注册批量查询

    域名批量注册查询 域名批量注册查询是一种工具,可以帮助用户批量查询并注册多个域名.这种工具通常被域名管理者.品牌专家.互联网营销人员等使用. 以下是域名批量注册查询工具的优点: 提高效率:与手动单独注 ...

  3. 百度SEO未注册域名批量检测查询

    功能上不是很全面,但速度还行 下载地址: http://www.bytepan.com/QCR0VRruE7Q

  4. 批量查看域名历史软件-网站老域名批量查询注册

    未注册备案域名批量扫描软件 未注册备案域名批量扫描软件是专门用于批量扫描未备案的域名的一种工具.它可以快速识别未备案的域名,并帮助用户抓住还未被注册的值得备案的域名,以便用户及时注册备案并使用. 该软 ...

  5. 《零基础掌握 Python 入门到实战》笔记

    Python 零基础掌握 Python 入门到实战笔记 文章目录 Python 内置对象类型 基本交互语句 常用内置函数 整数与浮点数 基本数学运算 高级数学运算 字符串 序列 索引 切片 成员函数 ...

  6. 类ku6未注册域名分享

    类ku6未注册域名分享: ang6.cn ban6.cn bang6.cn bei6.cn beng6.cn bian6.cn biao6.cn bie6.cn bin6.cn bing6.cn ca ...

  7. Python入门到实战(五)自动化办公、pandas操作Excel、数据可视化、绘制柱状图、操作Word、数据报表生成、pip install国内镜像下载

    Python入门到实战(五)conda使用.pandas操作Excel.数据可视化.绘制柱状图.操作Word.数据报表生成.pip install国内镜像下载 conda使用 常用操作 配置VS+Co ...

  8. u9过期老玉米挖掘软件V2版-过期域名采集软件-网址采集软件-域名采集软件-未注册域名检测软件-老域名采集工具

    更多介绍可以观看官网:https://www.u9seo.com/product/295.html 视频演示: http://file.iui8.com/v2.mp4?_=1 功能介绍: 购买联系客服 ...

  9. 域名批量查询 到期未续费域名查询

    域名的批量查询,指用户可以一次性输入多个域名进行查询,这样可以节省很多查询时间,例如你需要查询iis7这个关键词相关的域名在全球的注册情况 你完全可以使用域名批量查询工具. 最近入职了一家SEO公司, ...

  10. 发现一个非常好的域名批量查询工具

    博主的话: 推荐给域名投资者的这一款工具经过博主长期使用,其功能非常牛逼,我已将机器里其他类似软件全部DEL,  域霸扫描器是一款高速扫描(正常网速,平均每小时五万条)域名是否被注册,以及WHOIS信 ...

最新文章

  1. 这 4 款 MySQL 调优工具 yyds
  2. php 安装oracle扩展,win PHP7安装oracle扩展
  3. 线性表的动态顺序存储和实现(C语言实现)【线性表】(4)
  4. 首付贷换了马甲,又重现江湖了
  5. 泳池里到底有多少排泄物?
  6. ntr模式_ntr什么意思?
  7. c语言学习-输出9*9乘法口诀表
  8. nginx日志采集 mysql_shell + go + mysql nginx日志统计 (三) :数据的展示
  9. 计算机组成原理与接口技术笔记
  10. 对比学习(Contrastive Learning) (1)
  11. 邮箱大佬告诉你电子邮箱格式如何正确书写
  12. 钉钉html缓存,电脑钉钉的缓存文件路径
  13. 网络通信,IP地址, 端口,socket
  14. 天池比赛:工业蒸汽量预测
  15. 梦之光芒/黑客小游戏
  16. AI基础:入门人工智能必看的论文
  17. 大数据:Hadoop集群测试
  18. 根据Email地址跳转到邮箱登录界面
  19. 使用idea编辑生产者与消费者
  20. 检测国内大型网游戏交易站

热门文章

  1. Windows10下载到U盘怎么安装?
  2. 程序员,你以为你很优秀,但却面试屡屡失败?
  3. OneZero第三周第一次站立会议(2016.4.4)
  4. Oralce Autovue Web Server (Servlet)启动异常
  5. Trapcode Particular 5 - Emitter
  6. ESP8266通过arduino IED连接巴法云(TCP创客云)
  7. 变更控制委员会CCB
  8. java pfx 证书_java 证书 .cer 和 .pfx
  9. (c++ 遗传算法解决TSP问题)不是吧,这就是遗传算法吗?爱了爱了
  10. 如何准备机器学习工程师的面试 ?