โมดูลการเรียนรู้แบบไมโครด้าน Universal Acceptance โมดูลการเรียนรู้ที่ 6: การพัฒนาโปรแกรมที่รองรับชื่อโดเมนสากล ภายใต้แนวคิด Universal Acceptance (UA)

การวิเคราะห์และประมวลผลชื่อโดเมนระดับบนสุดแบบสากลที่มีการใช้งานจริง (Parsing Active IDN TLDs) 

รายชื่อของชื่อโดเมนระดับบนสุดแบบสากลที่มีการใช้งานอยู่ (Active Internationalized Domain Name Top-Level Domains: IDN TLDs) สามารถเข้าถึงได้จากเว็บไซต์อย่างเป็นทางการของ Internet Assigned Numbers Authority (IANA) ที่

https://data.iana.org/TLD/tlds-alpha-by-domain.txt ณ วันที่ 27 พฤศจิกายน ค.ศ. 2023 รายการดังกล่าวประกอบด้วยชื่อโดเมนระดับบนสุดทั้งหมด 1,589 รายการ โดยในจำนวนนี้มี 243 รายการ ที่ถูกจัดเป็น IDN TLDs ในการวิเคราะห์และสกัดข้อมูลชื่อโดเมนระดับบนสุดแบบสากลที่มีการใช้งานจริง (IDN TLDs) จาก URL ที่ระบุ สามารถดำเนินการตามขั้นตอนต่อไปนี้:

  • เข้าถึง URL ที่กำหนด และดึงข้อมูลเนื้อหาจากหน้าเว็บดังกล่าว
  • ประมวลผลข้อมูลที่ได้ในลักษณะทีละบรรทัด (line by line)
  • ระบุชื่อโดเมนระดับบนสุดแบบสากลที่มีการใช้งานจริง (Active IDN TLDs) โดยพิจารณาจากบรรทัดที่มีการกำหนดประเภท เช่น “generic” หรือ “country-code”
  • จัดเก็บชื่อ IDN TLDs ที่ตรวจพบลงในรายการ (list) หรือโครงสร้างข้อมูลอื่นที่เหมาะสม เพื่อใช้ในการประมวลผลหรือวิเคราะห์เพิ่มเติมต่อไป

ตัวอย่างที่ 9: การวิเคราะห์ไฟล์ https://data.iana.org/TLD/tlds-alpha-by-domain.txt ด้วยภาษา Python

import requests

import re

# Download the IDN TLDs list

url = “https://data.iana.org/TLD/tlds-alpha-by-domain.txt”

try:

     response = requests.get(url)

     if response.status_code == 200:

        content = response.text

# Parse the HTML content

         idn_tlds = re.findall(r”XN–[A-Z0-9\-]+”, content)

         for tld in idn_tlds:

             print(tld)

     else:

         print(f”Failed to retrieve data. Status code: {response.status_code}”)

except requests.exceptions.RequestException as e:

     print(f”An error occurred: {e}”)

สคริปต์นี้ทำหน้าที่ดึงรายชื่อชื่อโดเมนระดับบนสุด (Top-Level Domains: TLDs) จากเว็บไซต์ของ IANA โดยการส่งคำขอแบบ HTTP GET ไปยัง URL https://data.iana.org/TLD/tlds-alpha-by-domain.txt จากนั้น เนื้อหาที่ได้รับจะถูกประมวลผลด้วย Regular Expression โดยใช้คำสั่ง re.findall(r”XN–[A-Z0-9\-]+”, content) เพื่อสกัดบรรทัดที่เป็นชื่อ IDN TLDs ซึ่งสามารถสังเกตได้จากคำนำหน้า “XN–” ตามด้วยตัวอักษรพิมพ์ใหญ่ ตัวเลข และเครื่องหมายขีดกลาง ชื่อ IDN TLDs ที่ตรวจพบจะถูกจัดเก็บไว้ในตัวแปร idn_tlds ซึ่งเป็นรายการ (list) และในขั้นตอนสุดท้ายจะมีการแสดงผลรายชื่อ TLDs ที่มีการใช้งานจริง ซึ่งถูกจัดเก็บไว้ในรายการดังกล่าวออกทางหน้าจอ

ตัวอย่างที่ 10: การวิเคราะห์ไฟล์ https://data.iana.org/TLD/tlds-alpha-by-domain.txt ด้วยภาษา Java

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

 

public class IDNParserExample {

    public static void main(String[] args) {

        String url = “https://data.iana.org/TLD/tlds-alpha-by-domain.txt”;

        try {

            URL obj = new URL(url);

            HttpURLConnection con = (HttpURLConnection) obj.openConnection();

 

            // Set request method

            con.setRequestMethod(“GET”);

 

            int responseCode = con.getResponseCode();

            if (responseCode == HttpURLConnection.HTTP_OK) {

                BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));

                String inputLine;

                StringBuilder content = new StringBuilder();

 

                while ((inputLine = in.readLine()) != null) {

                    content.append(inputLine);

                    content.append(System.lineSeparator());

                }

                in.close();

 

                String pattern = “XN–[A-Z0-9\\-]+”;

                Matcher matcher = Pattern.compile(pattern).matcher(content.toString());

                while (matcher.find()) {

                    String tld = matcher.group();

                    System.out.println(tld);

                }

            } else {

                System.out.println(“Failed to retrieve data. Status code: ” + responseCode);

            }

        } catch (IOException e) {

            System.out.println(“An error occurred: ” + e.getMessage());

        }

    }

}