目标

Godaddy上有200个不同的域名,我们来批量修改它们的NameServers,指向CloudFlare的免费Plan。

涉及Godaddy的API,CloudFlare的API

前言

上次网站被DDOS攻击,服务器供应商SoftLayer竟然直接关掉我们的服务器,为时一天,说不要影响他们其他的服务器!

深深的怨气+怒气!

CloudFlare(简称CF)提供免费的抗击服务,还提供一些基本的统计服务,相当可以,

还没有数量限制(虽然利用API批量加入时,会限制每次最多100个域名),

免费送的HTTPS证书也很方便,搭配VPS的免费的Let's Encrypt证书,舒心!

材料

域名列表

Godaddy账号

对应的API Keys https://developer.godaddy.com/keys

Godaddy API手册 https://developer.godaddy.com/doc/endpoint/domains

CloudFlare账号 https://cloudflare.com

CloudFlare-API 批量添加域名 https://support.cloudflare.com/hc/en-us/articles/360000841472

CloudFlare-API 列出已添加的域名 https://api.cloudflare.com/#zone-list-zones

过程(先在CloudFlare添加全部域名)

1. 先生成CF的API-Keys,打开https://dash.cloudflare.com/,右上角“My Profile”,然后下面找到“Global API Key”,生成。

2. 开始批量添加域名,把域名写在一个domains.txt,每个域名一行,每次不可超过100个,太多了需要分几次添加。

3. 打开命令行,

export CF_API_EMAIL=you@example.com
export CF_API_KEY=这里填写刚才的Global API Key

然后cd到存放domains.txt的目录,使用以下命令开始自动添加:

for domain in $(cat domains.txt); do \
curl -X POST -H "X-Auth-Key: $CF_API_KEY" -H "X-Auth-Email: $CF_API_EMAIL" \
-H "Content-Type: application/json" \
"https://api.cloudflare.com/client/v4/zones" \
--data '{"name":"'$domain'","jump_start":true}'; done

CloudFlare后台就能看到这些域名,等待验证通过!

以上是参考“Adding Domains via the API”,https://support.cloudflare.com/hc/en-us/articles/360000841472,需要删掉一段参数,否则会报错:

account: {"id: "id_of_that_account"},

过程(再在Godaddy批量修改域名的NS纪录)

现在只要在Godaddy上设置好每个域名的NameServers即可:

Nameserver 1 : kim.ns.cloudflare.com

Nameserver 2 : tim.ns.cloudflare.com

但是很麻烦,毕竟Godaddy逐个管理域名,再找到DNS页面修改,也是很累(我要做几百个。。。)

Godaddy提供了RESTful API,我们使用PHP等工具可以逐个cURL-Patch 即可修改对应的NS。

以下是具体方法。

1. 建一个Key和对应的Secret : https://developer.godaddy.com/keys

2. 新建一个脚本,这里演示利用PHP来修改同一个GoDaddy用户下的所有的域名的NS,

注意:

$all_dn是全部域名列表,$dn_autorenew是部分已设置好Auto renew的域名列表。

需要修改$API_KEY,$API_SECRET。预设项“kim.ns.cloudflare.com”等需要看情况修改。

gdapi.php

<?phpini_set('max_execution_time', 900);/* https://developer.godaddy.com/getstarted */$API_KEY = 'g38ZQdvnuLx3XJmsaveWALBb8Lbvvts5Mne';$API_SECRET = 'Vgctyn_Bb5opi4FBBqMKc';/* 部分域名列表:需要设置自动更新的 */$dn_autorenew = <<<BBB
ccc.com
ddd.com
BBB;/* 全部域名列表 */$all_dn = <<<AAA
aaa.com
bbb.com
ccc.com
ddd.com
eee.com
fff.com
AAA;/*** cURL -> PATCH* 请注意参数$head_array的成员不是k=>v,而是用冒号":"连起来的字符串* * @param type $url* @param type $data | array('key' => 'value')* @param type $head_array | array() | array('key1:value1', 'key2:value2')* @return type*/function patchurl($url,$data, $head_array = array()){$data  = json_encode($data);$headers = array('Content-type:application/json');if(is_array($head_array) && count($head_array)){$headers = array_merge($headers, $head_array);}$ch = curl_init();curl_setopt ($ch,CURLOPT_URL,$url);curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PATCH");  curl_setopt($ch, CURLOPT_POSTFIELDS,$data); $output = curl_exec($ch);curl_close($ch);$output = json_decode($output);return $output;}$current_domain = '';$data = array("locked" => true,"nameServers" => array('kim.ns.cloudflare.com','tim.ns.cloudflare.com'),"renewAuto" => false,//"subaccountId" => ""   // 这里可以直接删掉,因为空值会报错:body.subaccountId does not meet minimum length of 1);$data_arn = $data;$data_arn['renewAuto'] = true;$headers = array('Authorization: sso-key' . ' '.$API_KEY.':'.$API_SECRET);$arr_d_all = explode(PHP_EOL, $all_dn);$arr_d_arn = explode(PHP_EOL, $dn_autorenew);foreach ($arr_d_all as $current_domain) {$url = 'https://api.godaddy.com/v1/domains/'.$current_domain;if(in_array($current_domain, $arr_d_arn)){$data_to_send = $data_arn;} else {$data_to_send = $data;}error_log('Dealing with: '.$current_domain);$res = patchurl($url, $data_to_send, $headers);echo '<hr />';echo '<h3>'.$current_domain.'</h3>';print_r($res);error_log('Finished');}echo '<h1>All domains are finished!</h1>';/* 如果页面是空白的,没有报错,代表成功,在Godaddy检查一下这个域名的NS设置 */

3. 现在Godaddy+CloudFlare都能打通了。

4.复查Godaddy+CF的设置是否妥当。

使用Godaddy的API批量修改域名的NameServers,指向CloudFlare的NS,享受免费的抗DDOS保护!相关推荐

  1. cloudflare 批量修改域名DNS

    <?php/*** Title: 批量修改CloudFlare上的所有域名的DNS* Author: Rudon <[email protected]>* Date: 2019-03 ...

  2. 批量修改CloudFlare上的域名的DNS - by PHP

    <?php/*** Title: 批量修改CloudFlare上的所有域名的DNS* Author: Rudon <285744011@qq.com>* Date: 2019-03- ...

  3. php批量修改图片地址,wordpress搬家换域名后 SQL语句 批量修改图片地址

    wordpress搬家换域名后 SQL语句 批量修改图片地址 开门见山,无可避免,WordPress都有搬家 更换域名的可能. 恼火之处,莫不是 图片链接地址. 如果,用的全部都是图床文件,那么 也许 ...

  4. 一次批量修改博客文章的经验(下):操作过程

    上一篇文章中我们进行了一些预备工作,主要是了解了该如何使用MetaWeblog API读取和修改博客园的文章--包括同步和异步两种调用方式.此外,由于F#在异步调用方面的优势,我决定使用F#来完成批量 ...

  5. 华为服务器批量BMC修改密码,华为服务器批量修改bmc地址

    华为服务器批量修改bmc地址 内容精选 换一换 域名转入时,出现"域名已存在"的提示,导致域名无法导入.如果出现这种情况,其可能原因是,在域名转入华为云之前,已经将该域名托管至华为 ...

  6. 华为服务器批量修改bmc地址,华为服务器批量修改bmc地址

    华为服务器批量修改bmc地址 内容精选 换一换 域名转入时,出现"域名已存在"的提示,导致域名无法导入.如果出现这种情况,其可能原因是,在域名转入华为云之前,已经将该域名托管至华为 ...

  7. Windows批量修改服务器密码,expect批量修改linux服务器密码

    expect批量修改linux服务器密码 内容精选 换一换 批量修改弹性云服务器信息.当前仅支持批量修改云服务器名称,一次最多可以修改1000台.PUT /v1/{project_id}/clouds ...

  8. 关于批量修改AD域用户的脚本

    最近几天帮人弄了个脚本,是修改域用户属性的脚本,今天看到徐火军写的 关于批量修改用户属性 脚本,觉得有必要把我的成果分享给大家.什么都不说了,上脚本: Dim oFSO, oTF, i Dim sLi ...

  9. php批量修改图片地址,织梦网站内容页图片绝对路径设置及批量替换方法

    今天深山就跟大家分享一下织梦如何设置绝对路径,分为三种类型说:栏目和文章的觉路径.新上传图片绝对路径.已经上传图片相对路径替换绝对路径,缩略图绝对路径替换请看<织梦缩略图相对路径批量替换绝对路径 ...

最新文章

  1. 内存和swap查看 内存是拿来用的 不是看的
  2. SAP WebIDE:how to enable context API reference
  3. Java volatile关键字
  4. 深入线程池的问题连环炮
  5. Javascript项目
  6. 如何构建批流一体数据融合平台的一致性语义保证?
  7. ETL工具Kettle使用教程
  8. 各国市场分析(越南,智利)
  9. Jenkins配置从节点问题:ssh slave known_hosts [SSH]与Slave JVM has terminated. Exit code=126
  10. 微信开发服务器端口号,微信公众号开发步骤
  11. 验证手机号码格式的正则表达式编写思路详解
  12. The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the argu
  13. 玩 ChatGPT 的正确姿势「GitHub 热点速览 v.22.49」
  14. 深度学习之 imgaug (图像增强)学习笔记
  15. 怎么在PDF上修改文字,PDF修改文字的步骤
  16. Launcher的启动过程
  17. 智能工厂建设整体解决方案
  18. c语言词典课程设计报告,英汉电子词典C语言课程设计
  19. 外企工作的你需要了解的印度种姓制度
  20. 微信小程序 onReachBottom 不触发

热门文章

  1. SSAS 系列01- DAX公式常用公式
  2. C#开发语音程序入门之文字朗读
  3. 计算机将文本朗读出来应用语音,如何实现电脑语音朗读文字?可以选择两种方法...
  4. 产品经理如何进行数据分析?看这一篇文章就够了
  5. 邮储银行软件开发中心(实习) 面经
  6. 实例掌握Hadoop MapReduce
  7. 如何使用Qt绘制时间刻度轴
  8. sql级联更新和级联删除
  9. Linux下Socket编程之UDP原理
  10. 解决C盘存储空间不足