Gandi의 도메인 API를 사용하여 도메인 이름 등록 상태를 확인할 수있는 파이썬 코드를 작성했습니다.

배경



Gandi.net이라는 도메인 레지스트라를 제대로 사용하기 시작했는데 도메인에 최근 빠져 있습니다. 다큐멘테이션을 읽고 있으면, Gandi가 제공하는 API가 있었으므로 조금 놀아 보았습니다.

Gandi.net에서 도메인 취득을 하면 무엇이 얻어지는지 특징을 여기서 간단하게 정리하고 있으므로, Gandi.net이란 무엇인가? 라는 사람은 이쪽으로부터 부디.
  • 도메인 이름을 얻는다면 앞으로 Gandi.net이 좋다고 생각한 이유

  • 도메인 등록 관련 API



    이 문서를 참고했습니다.
  • Gandi.net API (beta)

  • API 키를 얻는 방법



    API 키는 Gandi 웹사이트에 자신의 계정으로 로그인하면 얻을 수 있습니다.



    로그인 후 계정 설정 페이지로 이동하여 '사용자 계정 및 보안 설정 관리'를 클릭합니다.



    보안 설정 페이지에서 "API 키 생성"을 클릭하여 사용 중인 계정의 비밀번호를 입력하면 API 키를 얻을 수 있습니다.

    Gandi 도메인 API를 사용하여 도메인 이름 등록 상태 확인



    여기에서는 파이썬을 사용한 간단한 코드를 작성했습니다.
    headers = {'authorization': 'Apikey <your api key>'}
    

    이 위치의 를 위 단계에서 얻은 API 키로 바꿉니다.

    domain-availability.py
    
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    # Domain availability
    # Terminology: TLD = Top Level Domain such as .com, .net, .org and etc..
    
    import requests
    import json
    
    def check_availability():
        url = "https://api.gandi.net/v5/domain/check"
        domainname = input("Enter a domain name: ") # type only name part excluding ".TLD"
        tlds = {1: ".com", 2: ".net", 3: ".org", 4: ".io", 5: ".info", 6: ".jp"} # feel free to add any TLDs
        for key in tlds:
            querystring = {"name":domainname + tlds[key]}
            headers = {'authorization': 'Apikey <your api key>'}
            response = requests.request("GET", url, headers=headers, params=querystring)
            data = response.text
            data_json = json.loads(data)
            print(json.dumps(data_json, indent=2))
    

    달리면 이런 느낌이 듭니다.
    >>> check_availability()
    ドメイン名に使用したい文字列を入力してください: testdomainreg
    {
      "grid": "A",
      "taxes": [
        {
          "type": "service",
          "rate": 0,
          "name": "notax"
        }
      ],
      "products": [
        {
          "prices": [
            {
              "max_duration": 10,
              "discount": false,
              "price_before_taxes": 1493,
              "duration_unit": "y",
              "price_after_taxes": 1493,
              "min_duration": 1,
              "options": {
                "period": "golive"
              }
            }
          ],
          "status": "available",
          "process": "create",
          "name": "testdomainreg.com",
          "taxes": [
            {
              "type": "service",
              "rate": 0,
              "name": "notax"
            }
          ]
        }
      ],
      "currency": "JPY"
    }
    {
      "currency": "JPY",
      "products": [
        {
          "prices": [
            {
              "price_before_taxes": 2108,
              "max_duration": 10,
              "duration_unit": "y",
              "options": {
                "period": "golive"
              },
              "discount": false,
              "min_duration": 1,
              "price_after_taxes": 2108
            }
          ],
          "process": "create",
          "status": "available",
          "taxes": [
            {
              "rate": 0,
              "type": "service",
              "name": "notax"
            }
          ],
          "name": "testdomainreg.net"
        }
      ],
      "taxes": [
        {
          "rate": 0,
          "type": "service",
          "name": "notax"
        }
      ],
      "grid": "A"
    }
    ........
    

    영어 용어 확인



    API를 두드리면 당연하다고 하면 당연합니다만, 모두 결과가 영어로 반환되므로 최소한 이하의 단어나 용어의 의미를 알아두면 편리합니다.
  • taxes: 세금
  • rate: 요금
  • vat: value added tax의 약어로 부가가치세라는 의미. 일본 국내에 있는 사람은 관계가 없습니다
  • type: 종류
  • grid: 할인율을 Gandi에서는 영어로 "grid"라고 하는 것 같습니다. A-E까지가 있어, E라면 꽤 가격 인하율로 매년 도메인명을 구입할 수 있다는 것. ( 참고 )
  • currency: 통화
  • products: 제품 (여기서 도메인 이름)
  • process: 수행할 작업입니다. 위에서는 create 와 있으므로 「도메인명의 작성」을 나타낸다. transfer라고 하면 「도메인명 이관」의 의미.
  • status : 해당 도메인 이름의 현재 상태
  • max_duration : 최대 등록 수
  • price_before_taxes/price_after_taxes: 세금 제외, 세금 포함 금액. 일본에 있는 사람은 신경쓰지 않아도 괜찮습니다.
  • discount: 할인

  • 덧붙여서 아래의 코드로 등록하고 싶은 도메인명을 입력하면 위와 같은 결과가 돌아오도록(듯이) 했습니다.

    check-availability.py
    def check_availability():
        url = "https://api.gandi.net/v5/domain/check"
        domainname = input("登録したいドメイン名を入力してください: ") # Give a if condition to show an error message if there are spaces or any other characters that we can't accept
        querystring = {"name":domainname}
        headers = {'authorization': 'Apikey <your API key>'}
        response = requests.request("GET", url, headers=headers, params=querystring)
        data = response.text
        data_json = json.loads(data)
        print(json.dumps(data_json, indent=2))
    
    >>> check_availability()
    Enter a domain name: testdomainreg.io
    {
      "taxes": [
        {
          "name": "notax",
          "type": "service",
          "rate": 0
        }
      ],
      "grid": "A",
      "currency": "JPY",
      "products": [
        {
          "name": "testdomainreg.io",
          "taxes": [
            {
              "name": "notax",
              "type": "service",
              "rate": 0
            }
          ],
          "prices": [
            {
              "price_before_taxes": 3825,
              "duration_unit": "y",
              "max_duration": 10,
              "min_duration": 1,
              "options": {
                "period": "golive"
              },
              "price_after_taxes": 3825,
              "discount": false
            }
          ],
          "process": "create",
          "status": "available"
        }
      ]
    }
    
    

    API의 문서를 보면 도메인 이름 등록, 업데이트 및 DNS 레코드 재작성 등 필요한 모든 것을 할 수 있는 것 같습니다.

    이 API를 사용하여 쉽게 도메인 이름 등록 서비스를 만들 수도 있을 것 같고 재미 있네요.

    좋은 웹페이지 즐겨찾기