Blog

Freenom域名续期脚本

2018-08-19

#GitHub
#freenom
#水

鉴于freenom提供的api已经半残,以前靠着api写的更新脚本都已经失效了,博主也懒得自己去更新那一大堆免费的域名,现在写个脚本就拿出来用

填上邮箱和密码扔进计划任务即可


2018/10/3更新

freenom 使用的是魔改过的whmcs,在新用户首次访问任何页面的时候会下发cookie,如果没有这些cookie是无法登录的,这个脚本剩下的部分就是简单的curl和正则匹配了,以上

2021-05-04更新

登录流程:

  • 先随便访问一个页面取得初始 ${Cookie}
  • ${Cookie} 访问 https://my.freenom.com/clientarea.php 取得近似于 csrf token 的 ${Token}
    preg_match('/name="token" value="([^"]+)"/', $content, $token);
    
  • 登录
    • Method: POST
    • URL: https://my.freenom.com/dologin.php
    • Headers:
      • Referer: https://my.freenom.com/clientarea.php
      • Cookie: ${Cookie}
    • Body:
        "token": ${Token},
        "username": ${YOUR_USERNAME},
        "password": ${YOUR_PASSWORD},
        "rememberme": true //取得一个长期有效的cookie
    

    获取全部 Set-cookie 的值
  • 访问 https://my.freenom.com/domains.php?a=renewals,这一页会列出所有的域名,不需要手动选择一页的数量
    域名列表

    域名列表

    <tr>
      <td>example1.ml</td>
      <td>Active</td>
      <td><span class="textgreen">14 Days</span></td>
      <td><span class="textgreen">Renewable</span></td>
      <td><a class="smallBtn greyBtn pullRight" href="domains.php?a=renewdomain&domain=1">Renew This Domain</a></td>
    </tr>
    <tr>
      <td>example2.ml</td>
      <td>Active</td>
      <td><span class="textgreen">374 Days</span></td>
      <td><span class="textred">Minimum Advance Renewal is 14 Days for Free Domains</span></td>
      <td><a class="smallBtn greyBtn pullRight" href="domains.php?a=renewdomain&domain=2">Renew This Domain</a></td>
    </tr>
    

    怎么写正则或者xpath判断就请自由发挥了。
  • 再一次带 ${COOKIE} 访问 https://my.freenom.com/domains.php?a=renewdomain&domain=${domainId} 获取 ${TOKEN},获取方式与第一次一样,${domainId}即上一项链接里面的那个数字
  • 发送请求
    • Method: POST
    • URL: https://my.freenom.com/domains.php?submitrenewals=true
    • Headers:
      • Cookie: ${Cookie}
    • Body:
        "token": ${Token},
        "renewalid": ${domainId},
        `renewalperiod[${domainId}]`: "${MONTHS}M",//续期时长,免费域名只能选择 [1, 12]
        "paymentmethod": "credit"
    

以前写的脚本,写得很烂,但还是能用的

freenom_renewer


评论区