鉴于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}
- Referer:
- 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"
以前写的脚本,写得很烂,但还是能用的