如何申请永久免费域名
导读:域名可以是为了彰显个性,让别人更加的容易记住你,我们最初入行那些时期就特别想长久拥有一个域名,然而现实就是,你想要的域名都价格不菲,免费的又不长久,很多抱着玩的心态,担忧免费域名会到期,再重新申请真是费心,现在小易就来解救一部分童鞋,免除担忧,至少方案思路会在短期几年是不会失效的,理论上是永久,最终的期限取决于域名运营商的策略。。
来 源丨易雾山庄(ID:evling2020)
作 者丨易雾君
自 称丨低级网络玩家
免费域名为何具有吸引力
小易结合自身需求,略微提上几点:
工作上测试需要,可以选择第三方域名开展暂时性验证性质情形的
个人建站需要,前期想采用免费的域名试运行,不想投入金钱情形的
想白嫖 cloudflare CDN 免费流量,需要拥有多个域名情形的
家里边有动态公网 IP ,想做 DDNS 而又不想购买正式域名情形的
特别想要一个长久持有顶级域名情形的
家庭组网,具有强迫症患者,如不想用 IP 访问,访问内网 web 浏览器必须是绿色锁头情形的
域名申请
打开 Freenom 首页 https://www.freenom.com/en/index.html?lang=en ,输入你想要完整域名,注意,需要是完整的。
将免费使用期限设置到最大值 12 个月。
录入事先未注册过 Freenom 邮箱地址。
不出意外就会出现如下提醒,告知确认邮件已发至所填写的邮箱。
进入邮箱点击确认邮件链接。
信息尽可能详尽,但信息中地址最好要与你使用 IP 大致地理位置吻合
可以打开这个地址ipinfo.io
查看自己的地址信息,比如小易用的的洛杉矶某 IP
点击完成订单后,顺利的话,即可进入订单确认页。
查看申请到的域名信息,申请至此就大功告成了。
域名续期自动化
一年的使用期,着实太短暂,小易在参考别人提供的续期脚本后,加入代理支持,并支持多个域名续期,供大家伙参考。
基础环境配备
确保机器能直连互联网或者可通过指定代理上网
确保定时任务执行期间,机器是开机状态
确保安装有 python3 和 python3-pip
安装依赖关系
pip3 install requests pysocks
脚本主体
内容不多,直接贴出
-*- coding: utf-8 -*-@File : freenom.py@Author : 易雾君@Time : 2021/10/23 9:58 AM@Email : evling2020@gmail.com@Project : tools@Site : https://evling.tech@公众号 : 易雾山庄@Describe : 家庭基建,生活乐享.importreimportrequests登录地址LOGIN_URL =https://my.freenom.com/dologin.php域名状态地址DOMAIN_STATUS_URL =https://my.freenom.com/domains.php?a=renewals域名续期地址RENEW_DOMAIN_URL =https://my.freenom.com/domains.php?submitrenewals=truetoken 正则token_ptn = re.compile(name="token" value="(.*?)", re.I)域名信息正则domain_info_ptn = re.compile(r(.*?)[^<]+[^<]+.*?,re.I)登录状态正则login_status_ptn = re.compile(Logout, re.I)classFreeNom:def__init__(self, username: str, password: str, proxies=None):self._u = usernameself._p = passwordself._s = requests.Session()self._s.headers.update({user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/79.0.3945.130 Safari/537.36})ifproxiesisnotNone:self._s.proxies.update(proxies)def_login(self)-> bool:self._s.headers.update({content-type:application/x-www-form-urlencoded,referer:https://my.freenom.com/clientarea.php})r = self._s.post(LOGIN_URL, data={username: self._u,password: self._p})returnr.status_code ==200defrenew(self):loginok = self._login()ifnotok:print(login failed)returncheck domain statusself._s.headers.update({referer:https://my.freenom.com/clientarea.php})r = self._s.get(DOMAIN_STATUS_URL)login status checkifnotre.search(login_status_ptn, r.text):print(get login status failed)returnpage tokenmatch = re.search(token_ptn, r.text)ifnotmatch:print(get page token failed)returntoken = match.group(1)domainsdomains = re.findall(domain_info_ptn, r.text)renew domainsfordomain, days, renewal_idindomains:days = int(days)ifdays <=14:self._s.headers.update({referer:fhttps://my.freenom.com/domains.php?a=renewdomain&domain={renewal_id},content-type:application/x-www-form-urlencoded})r = self._s.post(RENEW_DOMAIN_URL, data={token: token,renewalid: renewal_id,frenewalperiod[{renewal_id}]:12M,paymentmethod:credit})print(domain,续期成功ifr.text.find(Order Confirmation) !=-1else续期失败)print(f{domain}还有{days}天续期)users = [{username:username01@gmail.com,password:passwd01},{username:username02@gmail.com,password:passwd02},]proxies =Noneproxies = {https: http://admin:admin@192.168.15.1:1080, http: http://admin:admin@192.168.15.1:1080}foruserinusers:instance = FreeNom(user[username], user[password], proxies)instance.renew()
在脚本末尾users
变量内容调整为自己的账号些,代理格式如注释部分,可根据实际情况填写,取消注释即可生效。
配置定时任务
将如上脚本主体报存至一个固定位置,如/etc/vnet/freenom.py
,使用crontab -e
新增一个定时任务,每天定时执行,如每天早上 6 点执行一次:
0 6 * * * /usr/bin/python3 /etc/vnet/freenom.py > /tmp/freenom.txt
如此就不用担心,域名到期被人抢注了再次开始艰难的手动注册环节,在距离到期 14 天时,该脚本会自动续期一年。
温馨提示
不要因为免费的,就恶意海量注册囤积居奇,造成后期环境恶化,其他想注册的难度加大,就不和谐了,希望你是真正的自用需求。
视频示范
原文里附加了视频示范,请移步阅读原文
吧。
推荐阅读
易雾山庄记录了家庭网络基础建设的种种实践,可以帮助更多有需要的人减少折腾。希望通过这个平台构建一只家庭基建小社群,共同优化我们的生活体验,增强个人数据安全保护意识,同时我们还要考虑环保节能问题,实实在在帮大家伙组建属于自己的家庭网络。
长按关注,更多精彩
关注公众号,订阅易雾君的独家折腾记。