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

88 篇文章 1 订阅

目标

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

<?php

    ini_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的设置是否妥当。

 

 

 

### 回答1: opencart可以使用Cloudflare服务,但在使用Cloudflare之前,需要对opencart进行一些配置和设置。 首先,确保你的opencart安装和配置正确。然后,注册一个Cloudflare账户并将你的域名Cloudflare绑定。在绑定过程中,你需要将Cloudflare提供的DNS服务器地址添加到你的域名托管商(如GoDaddy、Namecheap等)的DNS设置中。 在与Cloudflare绑定之后,你可以在Cloudflare的控制面板中对你的opencart网站进行一些额外的配置。你可以启用Cloudflare的多种功能,如DDoS保护、网页优化、防火墙等。此外,Cloudflare还提供了SSL证书,可以帮助你的opencart网站启用HTTPS协议。 然而,需要注意的是,在使用Cloudflare期间,你需要确保你的opencart网站和Cloudflare之间的通信是正常的。一些opencart插件或主题可能会与Cloudflare的某些功能不兼容,导致网站出现问题。因此,在启用Cloudflare之前,建议你先在一个测试环境中验证你的opencart网站是否与Cloudflare兼容。 总而言之,opencart可以使用Cloudflare服务,但在启用之前,需要对opencart和Cloudflare进行正确的配置和设置,以确保网站的正常运行和兼容性。 ### 回答2: OpenCart是一种流行的开源电子商务平台,可以帮助用户创建和管理网上商店。Cloudflare是一个提供网站性能优化、安全性和内容分发网络(CDN)服务的公司。作为一个CDN,Cloudflare可以通过将网站的内容分发至全球多个服务器来加速网站的加载速度,并提供额外的安全性和防护。 从技术上讲,OpenCart可以与Cloudflare一起使用。用户可以将其网站的域名解析到Cloudflare提供的DNS服务器,然后Cloudflare会将流量从全球多个位置引导到最接近用户的服务器,从而提供更快的加载速度和较低的延迟。此外,Cloudflare还提供了一系列安全功能,例如Web应用程序防火墙,以帮助保护网站免受恶意攻击。用户还可以利用Cloudflare的缓存功能,将网站内容缓存在全球分布的边缘服务器上,从而进一步提高网站的性能和可靠性。 但是,需要注意的是,即使可以使用Cloudflare来优化OpenCart网站,用户仍然需要适当地配置和管理Cloudflare,以确保其与OpenCart的特定要求和功能兼容。例如,在使用Cloudflare时可能需要注意OpenCart的动态内容的正确缓存设置,以避免出现功能问题和不正确的显示。 总结起来,OpenCart可以与Cloudflare一起使用,以提供更快的网站加载速度、额外的安全性和可靠性。然而,在使用Cloudflare之前,用户应该仔细了解和测试其与OpenCart的兼容性,以确保正常的网站功能和体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rudon滨海渔村

花的越多,赚得越多...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值