Tạo Trình rút ngắn URL tên miền tùy chỉnh miễn phí (với Cloudflare Workers)

in Tài nguyên & Công cụ

Nội dung của chúng tôi được người đọc hỗ trợ. Nếu bạn nhấp vào liên kết của chúng tôi, chúng tôi có thể kiếm được hoa hồng. Cách chúng tôi xem xét.

Trong bài viết này tôi sẽ chia sẻ với các bạn cách bạn có thể tạo công cụ rút ngắn URL tên miền tùy chỉnh của riêng mình bằng cách sử dụng Cloudflare Workers. Cho dù bạn là nhà phát triển web đang tìm cách bổ sung thêm một công cụ khác vào vành đai của mình, chủ doanh nghiệp muốn xây dựng thương hiệu cho các liên kết của mình mà không phải trả giá đắt hay chỉ là người thích mày mò công nghệ web, thì hướng dẫn từng bước này là dành cho Bạn.

Là một nhà phát triển web và người đam mê công nghệ, tôi luôn bị cuốn hút bởi những điều nhỏ nhặt giúp Internet hiệu quả hơn và thân thiện với người dùng hơn. Một ngày nọ, khi chia sẻ một URL đặc biệt dài và khó sử dụng với một đồng nghiệp, tôi thấy mình mong muốn có một cách rút ngắn liên kết đơn giản, được cá nhân hóa. Chắc chắn, có rất nhiều dịch vụ rút ngắn URL hiện có, nhưng tôi muốn thứ gì đó mang lại cảm giác “tôi” hơn – thứ mà tôi có thể tùy chỉnh và kiểm soát.

Đó là lúc tôi nảy ra ý tưởng tạo công cụ rút ngắn URL tùy chỉnh của riêng mình bằng cách sử dụng Cloudflare Workers. Nó giống như việc tìm thấy một kho báu ẩn giấu trong biển công nghệ web rộng lớn. Tôi không chỉ có thể rút ngắn URL mà còn có thể làm điều đó miễn phí với tên miền của riêng mình! Sự phấn khích của khám phá này khiến tôi nhớ đến lần đầu tiên tôi triển khai một trang web – cảm giác được trao quyền và những khả năng vô tận.

Điều khiến khám phá này trở nên thú vị hơn nữa là việc nhận ra rằng nó có thể đóng vai trò là một giải pháp thay thế tuyệt vời, miễn phí cho các dịch vụ phổ biến như Bit.ly hoặc TinyURL để tạo các liên kết ngắn có thương hiệu trên một miền tùy chỉnh. Nhiều doanh nghiệp và cá nhân trả nhiều tiền cho loại chức năng này, nhưng đây là cách để đạt được kết quả tương tự mà không tốn một xu.

Bước 1: Đăng ký tên miền (Sử dụng tên miền ngắn)

    Bước đầu tiên trong việc tạo trình rút ngắn URL tùy chỉnh của bạn là đăng ký một tên miền. Đây sẽ là nền tảng cho các liên kết ngắn mang thương hiệu của bạn, vì vậy hãy lựa chọn một cách khôn ngoan!

    Dưới đây là một số mẹo giúp bạn chọn tên miền hoàn hảo:

    1. Giữ cho nó ngắn: Mục đích chung của trình rút ngắn URL là tạo các liên kết ngắn gọn. Hãy tìm những tên miền có 3-5 ký tự nếu có thể. Đây có thể là một từ viết tắt, từ viết tắt hoặc một từ hấp dẫn.
    2. Làm cho nó đáng nhớ: Chọn một cái gì đó dễ nhớ và gõ. Điều này sẽ giúp bạn và người khác dễ dàng sử dụng các liên kết rút gọn của bạn hơn.
    3. Hãy xem xét thương hiệu của bạn: Nếu bạn đang sử dụng tên miền này cho doanh nghiệp hoặc thương hiệu cá nhân, hãy thử điều chỉnh miền phù hợp với nhận diện thương hiệu hiện có của bạn.
    4. Sẵn sàng kiểm tra: Các miền ngắn, hấp dẫn đang có nhu cầu cao. Bạn có thể cần phải sáng tạo hoặc xem xét các miền cấp cao nhất (TLD) thay thế như .io, .co hoặc .me nếu lựa chọn đầu tiên của bạn không có sẵn.
    5. Hãy nghĩ về TLD: Mặc dù .com rất phổ biến nhưng đừng né tránh các TLD khác. Một số, như .link hoặc .click, có thể đặc biệt phù hợp với công cụ rút ngắn URL.

    Dưới đây là một số ví dụ để truyền cảm hứng cho bạn:

    • abc.link
    • go.io
    • shrt.co
    • zap.me

    Khi bạn đã chọn tên miền của mình, bạn sẽ cần mua tên miền đó từ công ty đăng ký tên miền. Một số tùy chọn phổ biến bao gồm:

    • namecheap
    • GoDaddy
    • CloudFlare (Được khuyến nghị – điều này cũng rất thuận tiện vì chúng tôi sẽ sử dụng Cloudflare Workers)

    Hãy nhớ rằng, mặc dù miền sẽ phải trả phí nhưng đây là giao dịch mua một lần mỗi năm và phần còn lại trong quá trình thiết lập trình rút ngắn URL của chúng tôi sẽ miễn phí khi sử dụng Cloudflare Workers.

    Mẹo chuyên nghiệp: Trước khi hoàn tất giao dịch mua của bạn, hãy đảm bảo miền không liên quan đến bất kỳ hoạt động spam hoặc độc hại nào. Bạn có thể kiểm tra lịch sử của nó bằng các công cụ như Domain Tools hoặc Wayback Machine.

    Với miền mới sáng bóng trong tay, bạn đã sẵn sàng chuyển sang bước tiếp theo: thiết lập Cloudflare cho miền của mình. Nhưng chúng tôi sẽ đề cập đến điều đó trong phần tiếp theo.

    Bước 2: Định cấu hình bản ghi DNS cho tên miền của bạn

    Bây giờ bạn đã có miền của mình, đã đến lúc thiết lập cấu hình DNS. Bước này rất quan trọng để đảm bảo rằng Cloudflare Workers của bạn hoạt động chính xác với miền mới đăng ký của bạn.

    CloudFlare

    Hãy cùng tìm hiểu quy trình:

    1. Thêm tên miền của bạn vào Cloudflare

      • Nếu bạn chưa làm như vậy, tạo tài khoản Cloudflare miễn phí.
      • Trong bảng điều khiển Cloudflare của bạn, hãy nhấp vào “Thêm trang web” và nhập tên miền của bạn.
      • Cloudflare sẽ quét các bản ghi DNS hiện có. Xóa mọi bản ghi mà nó tìm thấy (trừ khi bạn cũng đang sử dụng miền cho email hoặc các dịch vụ quan trọng khác, trong trường hợp đó, hãy giữ lại những bản ghi đó).

      2. Cập nhật Nameservers (Bỏ qua bước này nếu miền của bạn đã đăng ký với Cloudflare)

        Máy chủ tên Cloudflare
        • Cloudflare sẽ cung cấp cho bạn một bộ máy chủ tên.
        • Truy cập trang web của nhà đăng ký tên miền của bạn và thay thế máy chủ tên hiện có bằng máy chủ tên do Cloudflare cung cấp.
        • Bước này có thể mất tới 24 giờ để phổ biến trên toàn cầu.

        3. Định cấu hình bản ghi DNS

        Quản lý DNS trên nền tảng đám mây
        • Trong cài đặt DNS Cloudflare của bạn, chúng tôi sẽ thêm hai bản ghi A mới.
        • Thêm những điều sau:
        Kiểu: A
        Tên: @
        Nội dung: 192.0.2.1
        TTL: Tự động
        Trạng thái ủy quyền: Được ủy quyền (đám mây màu cam - rất quan trọng)

        Kiểu: A
        Tên: www
        Nội dung: 192.0.2.1
        TTL: Tự động
        Trạng thái ủy quyền: Được ủy quyền (đám mây màu cam - rất quan trọng)

        IP 192.0.2.1 này là một địa chỉ “giả” đặc biệt. Nó được dành riêng cho tài liệu và thử nghiệm, điều này khiến nó trở nên hoàn hảo cho nhu cầu của chúng tôi.

        4. Kích hoạt proxy Cloudflare

        • Đảm bảo trạng thái proxy (biểu tượng đám mây màu cam) được bật cho bản ghi DNS của bạn.
        • Điều này cho phép Cloudflare ủy quyền lưu lượng truy cập của bạn và cần thiết để Cloudflare Workers hoạt động.

        5. Xác minh cấu hình

        • Sau khi thay đổi máy chủ tên được phổ biến, Cloudflare sẽ hiển thị tên miền của bạn là “Hoạt động”.
        • Bạn có thể xác minh điều này trong bảng điều khiển Cloudflare.

          Điểm mấu chốt ở đây là chúng tôi không trỏ miền của bạn tới bất kỳ dịch vụ lưu trữ web thực tế nào. Địa chỉ 192.0.2.1 chỉ là địa chỉ giữ chỗ. Cloudflare Worker mà chúng tôi sẽ thiết lập tiếp theo sẽ chặn tất cả các yêu cầu tới miền của bạn và xử lý logic rút ngắn URL.

          Mẹo chuyên nghiệp: Thiết lập này có nghĩa là bạn không cần phải trả tiền hoặc quản lý bất kỳ dịch vụ lưu trữ web nào. Cloudflare Workers sẽ xử lý tất cả các công việc nặng nhọc, khiến giải pháp này không chỉ miễn phí mà còn cực kỳ nhẹ và dễ bảo trì.

          Với DNS được định cấu hình đúng cách, giờ đây bạn đã sẵn sàng chuyển sang phần thú vị – thiết lập Cloudflare Worker để xử lý việc rút ngắn URL.

          Bước 3: Tạo Cloudflare Worker

          Bây giờ chúng ta đã định cấu hình miền của mình trong Cloudflare, đã đến lúc tạo Worker để xử lý các chuyển hướng của chúng ta. Cloudflare Workers cung cấp một môi trường thực thi không có máy chủ cho phép chúng tôi chạy mã ở biên, gần gũi với người dùng để có hiệu suất tối ưu.

          1. Tạo nhân viên Cloudflare

          • Truy cập phần Công nhân:
            • Đăng nhập vào bảng điều khiển Cloudflare của bạn.
            • Điều hướng đến phần “Công nhân” từ thanh bên.
            • Nhấp vào “Tạo dịch vụ” nếu đây là Công nhân đầu tiên của bạn hoặc “Tạo Công nhân” nếu bạn đã có Công nhân hiện có.
          • Đặt tên cho nhân viên của bạn:
            • Chọn tên mô tả cho Worker của bạn, chẳng hạn như “trình xử lý chuyển hướng hàng loạt”.
            • Nhấp vào “Tạo dịch vụ” để chuyển sang trình chỉnh sửa.
          • Viết tập lệnh công nhân:
            • Trong trình chỉnh sửa, thay thế mã mặc định bằng tập lệnh xử lý chuyển hướng:
          xuất mặc định {
          async fetch(yêu cầu) {
          const redirectMap = Bản đồ mới([
          ["google", "https://www.google.com?subId1=google"],
          ["bing", "https://www.bing.com?subId1=bing"],
          // Thêm nhiều chuyển hướng hơn ở đây nếu cần
          ]);

          const url = URL mới(request.url);
          console.log("URL đầy đủ:", url.toString());
          console.log("Tên máy chủ:", url.hostname);
          console.log("Tên đường dẫn:", url.pathname);

          hãy để path = url.pathname.toLowerCase().replace(/^\//, '').split('/')[0];

          if (url.hostname.includes('workers.dev')) {
          path = url.pathname.toLowerCase().replace(/^\//, '').split('/')[1] || '';
          }

          console.log("Đường dẫn đã xử lý:", path);

          const location = redirectMap.get(path);
          console.log("Chuyển hướng vị trí:", location);

          // Thay đổi thành 301 cho chuyển hướng vĩnh viễn
          nếu (vị trí) {
          trả về Response.redirect(location, 302);
          }

          // Nếu yêu cầu không có trong bản đồ, hãy trả về 404 hoặc dự phòng ưa thích của bạn
          return new Response(`Not Found: ${path}`, { status: 404 });
          },
          };
          • Hiểu kịch bản:
            • Chúng tôi xác định một bản đồ chuyển hướng chứa các đường dẫn ngắn của chúng tôi và các URL đầy đủ tương ứng của chúng.
                ["google", "https://www.google.com?subId1=google"],

          yourshorturl.com/google chuyển hướng đến -> https://www.google.com?subId1=google

          ["bing", "https://www.bing.com?subId1=bing"],

          yourshorturl.com/bing chuyển hướng đến -> https://www.bing.com?subId1=bing
          • Tập lệnh xử lý các yêu cầu đến, trích xuất đường dẫn và kiểm tra xem nó có khớp với bất kỳ chuyển hướng nào được xác định của chúng tôi hay không.
          • Nếu tìm thấy kết quả khớp, nó sẽ trả về 302 (Chuyển hướng tạm thời) cho URL tương ứng.
          • Nếu không tìm thấy kết quả phù hợp, nó sẽ trả về phản hồi 404 Không tìm thấy.
          • Kiểm tra công nhân:
            • Sử dụng tính năng “Chỉnh sửa nhanh” trong bảng điều khiển Cloudflare để thực hiện các thay đổi và kiểm tra Công nhân của bạn.
            • Bạn có thể sử dụng công cụ kiểm tra HTTP được cung cấp để mô phỏng các yêu cầu và xem Worker của bạn phản hồi như thế nào.
          • Triển khai công nhân:
            • Sau khi bạn hài lòng với các thử nghiệm của mình, hãy nhấp vào “Lưu và triển khai” để Công nhân của bạn hoạt động.
          • Thiết lập lộ trình công nhân:
          lộ trình công nhân đám mây
          • Sau khi triển khai, hãy chuyển đến tab “Kích hoạt” cho Công nhân của bạn.
          • Thêm tuyến đường phù hợp với miền của bạn, chẳng hạn như *khuyên dùng.link/*.
          • Điều này đảm bảo rằng tất cả các yêu cầu tới miền của bạn đều được Worker này xử lý.
          • Xác minh cài đặt:
            • Hãy thử truy cập vào một số đường dẫn chuyển hướng của bạn (ví dụ: https://recommends.link/url-shortener-guide) để đảm bảo chúng hoạt động như mong đợi.
            • Kiểm tra Nhật ký công nhân trong bảng điều khiển Cloudflare của bạn để xem đầu ra của bảng điều khiển và xác minh rằng các đường dẫn đang được xử lý chính xác.

          Bước 4: Tùy chỉnh thêm (Tùy chọn)

          Chuyển hướng động với Cloudflare KV

          Để làm cho hệ thống chuyển hướng của chúng tôi linh hoạt hơn và dễ quản lý hơn, chúng tôi có thể sử dụng bộ lưu trữ Cloudflare KV (Khóa-Giá trị) để lưu trữ các chuyển hướng của mình:

          Tạo không gian tên KV:

          • Trong bảng điều khiển Cloudflare của bạn, đi tới Công nhân > KV. Nhấp vào “Tạo không gian tên” và đặt tên cho nó (ví dụ: “REDIRECT_MAP”).
          Liên kết không gian tên KV với Công nhân của bạn:
          • Đi tới cài đặt Công nhân của bạn. Trong “Ràng buộc không gian tên KV”, hãy thêm một ràng buộc mới. Chọn không gian tên KV của bạn và đặt cho nó một tên biến (ví dụ: REDIRECTS).
          Sửa đổi tập lệnh Worker để sử dụng KV:

             xuất mặc định {
          async fetch(yêu cầu, env) {
          const url = URL mới(request.url);
          const path = url.pathname.toLowerCase().replace(/^\//, '').split('/')[0];

          const location = đang chờ env.REDIRECTS.get(path);

          nếu (vị trí) {
          trả về Response.redirect(location, 301);
          }

          return new Response(`Not Found: ${path}`, { status: 404 });
          },
          };

          Bây giờ bạn có thể thêm, cập nhật hoặc xóa chuyển hướng bằng cách sửa đổi cửa hàng KV mà không thay đổi mã Công nhân.

          Chuyển hướng tham số

          Cho phép các tham số động trong chuyển hướng của bạn:

               xuất mặc định {
            async fetch(yêu cầu, env) {
            const url = URL mới(request.url);
            const [path, ...params] = url.pathname.toLowerCase().replace(/^\//, '').split('/');

            hãy để vị trí = đang chờ env.REDIRECTS.get(path);

            nếu (vị trí) {
            // Thay thế phần giữ chỗ bằng các tham số thực tế
            params.forEach((param, index) => {
            location = location.replace(`{${index}}`, param);
            });
            trả về Response.redirect(location, 301);
            }

            return new Response(`Not Found: ${path}`, { status: 404 });
            },
            };

            Với thiết lập này, bạn có thể có một mục KV như “sản phẩm” : “https://mystore.com/item/{0}/details” và sử dụng nó làm yourshortlink.com/product/12345.

            Nhấp vào Theo dõi và phân tích

            Triển khai phân tích cơ bản bằng cách ghi nhật ký các sự kiện chuyển hướng:

                 xuất mặc định {
              async fetch(yêu cầu, env) {
              const url = URL mới(request.url);
              const path = url.pathname.toLowerCase().replace(/^\//, '').split('/')[0];

              const location = đang chờ env.REDIRECTS.get(path);

              nếu (vị trí) {
              // Ghi nhật ký sự kiện chuyển hướng
              đang chờ env.REDIRECTS.put(`${path__clicks`, (parseInt(await env.REDIRECTS.get(`${path__clicks`) || '0') + 1).toString());
              trả về Response.redirect(location, 301);
              }

              return new Response(`Not Found: ${path}`, { status: 404 });
              },
              };

              Các trang lỗi tùy chỉnh

              Thay vì phản hồi 404 bằng văn bản thuần túy, hãy trả về trang HTML tùy chỉnh:

                   const notFoundPage = `





                Không tìm thấy liên kết

                body { họ phông chữ: Arial, sans-serif; căn chỉnh văn bản: giữa; phần đệm trên cùng: 50px; }



                Ối! Không tìm thấy liên kết
                Liên kết ngắn bạn đang tìm kiếm không tồn tại.


                `;

                // Trong hàm tìm nạp của bạn:
                trả về Phản hồi mới (notFoundPage, {
                trạng thái: 404,
                tiêu đề: { 'Content-Type': 'text/html' }
                });

                Rate Limiting

                Thực hiện giới hạn tỷ lệ cơ bản để ngăn chặn lạm dụng:

                     xuất mặc định {
                  async fetch(yêu cầu, env) {
                  const ip = request.headers.get('CF-Connecting-IP');
                  const rateLimitKey = `ratelimit:${ip}`;
                  const currentRequests = ParseInt(await env.REDIRECTS.get(rateLimitKey) || '0');

                  if (currentRequests > 100) { // giới hạn 100 yêu cầu mỗi phút
                  return new Response('Vượt quá giới hạn tỷ lệ', { status: 429 });
                  }

                  đang chờ env.REDIRECTS.put(rateLimitKey, (currentRequests + 1).toString(), {expirationTtl: 60});

                  // Phần còn lại của logic chuyển hướng của bạn ở đây
                  },
                  };

                  Thử nghiệm A / B

                  Triển khai thử nghiệm A/B đơn giản cho các chuyển hướng của bạn:

                       xuất mặc định {
                    async fetch(yêu cầu, env) {
                    const url = URL mới(request.url);
                    const path = url.pathname.toLowerCase().replace(/^\//, '').split('/')[0];

                    const locationA = đang chờ env.REDIRECTS.get(`${path__A`);
                    const locationB = đang chờ env.REDIRECTS.get(`${path__B`);

                    if (locationA && locationB) {
                    vị trí const = Math.random() < 0.5? vị tríA : vị tríB;
                    trả về Response.redirect(location, 301);
                    }

                    // Dự phòng về chuyển hướng thông thường nếu thử nghiệm A/B chưa được thiết lập
                    const location = đang chờ env.REDIRECTS.get(path);
                    nếu (vị trí) {
                    trả về Response.redirect(location, 301);
                    }

                    return new Response(`Not Found: ${path}`, { status: 404 });
                    },
                    };

                    Những tùy chỉnh và mở rộng này bổ sung chức năng quan trọng cho hệ thống chuyển hướng hàng loạt của bạn, làm cho nó linh hoạt, mạnh mẽ và nhiều thông tin hơn. Mỗi tính năng này có thể được cải tiến và mở rộng hơn nữa dựa trên nhu cầu và trường hợp sử dụng cụ thể của bạn.

                    Trong suốt bài đăng trên blog này, chúng tôi đã khám phá cách tạo trình rút ngắn URL tùy chỉnh mạnh mẽ và linh hoạt bằng cách sử dụng Cloudflare Workers. Giải pháp này cung cấp một cách tiếp cận miễn phí và hiệu quả để tạo liên kết ngắn trên quy mô lớn.

                    TL; DR:

                    1. Cloudflare Workers cung cấp nền tảng không có máy chủ để triển khai logic chuyển hướng tùy chỉnh với khả năng phân phối toàn cầu và độ trễ thấp.
                    2. Cấu hình DNS và thiết lập Tuyến công nhân phù hợp là rất quan trọng để kết nối miền tùy chỉnh của bạn với Công nhân.
                    3. Một Worker dựa trên JavaScript đơn giản có thể xử lý các tình huống chuyển hướng phức tạp một cách hiệu quả.
                    4. Bộ lưu trữ Khóa-Giá trị (KV) của Cloudflare có thể được tận dụng để tạo bản đồ chuyển hướng năng động, dễ quản lý.
                    5. Các tính năng nâng cao như chuyển hướng được tham số hóa, theo dõi lần nhấp, trang lỗi tùy chỉnh, giới hạn tỷ lệ và thử nghiệm A/B có thể được triển khai trong hệ sinh thái Worker.
                    6. Hệ thống này mang lại những lợi thế đáng kể so với truyền thống phương pháp chuyển hướng, bao gồm cải thiện hiệu suất, quản lý dễ dàng hơn và nâng cao tính linh hoạt.

                    Giải pháp chúng tôi đã xây dựng mang lại một số lợi ích:

                    • khả năng mở rộng: Xử lý hàng triệu chuyển hướng mà không làm giảm hiệu suất.
                    • Linh hoạt: Dễ dàng thêm, sửa đổi hoặc xóa chuyển hướng mà không thay đổi logic cốt lõi.
                    • HIỆU QUẢ: Tận dụng mạng lưới toàn cầu của Cloudflare để chuyển hướng nhanh trên toàn thế giới.
                    • Tùy biến: Cho phép các tính năng nâng cao như phân tích và thử nghiệm A/B.
                    • Hiệu quả chi phí: Sử dụng kiến ​​trúc serverless, có khả năng giảm chi phí lưu trữ.
                    • Thay thế miễn phí tới các dịch vụ phổ biến như Bit.ly hoặc Của bạn để tạo các liên kết ngắn có thương hiệu trên một miền tùy chỉnh.

                    Bây giờ bạn đã hiểu sức mạnh và tính linh hoạt của hệ thống chuyển hướng dựa trên Cloudflare Worker này, đã đến lúc đưa nó vào hoạt động:

                    1. Nếu bạn chưa đăng ký, hãy đăng ký tài khoản Cloudflare và làm quen với nền tảng Công nhân.
                    2. Triển khai hệ thống này cho các liên kết ngắn mang thương hiệu của riêng bạn hoặc chuyển hướng hàng loạt.
                    3. Thử nghiệm các tính năng nâng cao mà chúng tôi đã thảo luận để điều chỉnh hệ thống theo nhu cầu cụ thể của bạn.
                    4. Chia sẻ kinh nghiệm của bạn hoặc đặt câu hỏi trong phần bình luận bên dưới. Những hiểu biết sâu sắc của bạn có thể giúp ích cho những người khác trong cộng đồng!
                    5. Đối với các trường hợp sử dụng nâng cao hơn hoặc cách triển khai tùy chỉnh, hãy cân nhắc liên hệ với chuyên gia hoặc dịch vụ tư vấn của Cloudflare Workers.

                    Luôn tò mò, tiếp tục học hỏi và đừng ngần ngại vượt qua giới hạn những gì có thể làm được bằng các công cụ như Cloudflare Workers.

                    về tác giả

                    Matt Ahlgren

                    Mathias Ahlgren là CEO và người sáng lập của Website Rating, chỉ đạo một đội ngũ biên tập viên và nhà văn toàn cầu. Ông có bằng thạc sĩ về khoa học và quản lý thông tin. Sự nghiệp của anh chuyển hướng sang SEO sau những trải nghiệm phát triển web ban đầu ở trường đại học. Với hơn 15 năm kinh nghiệm trong lĩnh vực SEO, tiếp thị kỹ thuật số và phát triển web. Trọng tâm của anh ấy cũng bao gồm bảo mật trang web, được chứng minh bằng chứng chỉ về An ninh mạng. Chuyên môn đa dạng này củng cố vai trò lãnh đạo của ông tại Website Rating.

                    Trang chủ » Tài nguyên & Công cụ » Tạo Trình rút ngắn URL tên miền tùy chỉnh miễn phí (với Cloudflare Workers)
                    Chia sẻ với...