Cách Tạo Trang Chuyển Hướng Safelink Mã Hoá URL Cho Blog

Chào các bạn đã đến với bài viết tiếp theo của Anh Tuấn Blog, hôm nay sau khi đọc Comment mình nhận được khá nhiều yêu cầu hướng dẫn tạo trang Safelink. Vì vậy hôm này mĩnh sẽ hướng dẫn các bạn tạo một trang Safelink đơn giản. Đây là một dạng trang sẽ được mã hoá URL khi chuyển hướng nên rất an toàn nhé và đặc biệt là nó tự động được áp dụng khi nhấn vào các liên kết chuyển hướng ra bên ngoài !!

Cách Tạo Trang Chuyển Hướng Safelink Mã Hoá URL Cho Blog
Preview Safelink
Các bước thực hiện để tạo ra một trang Safelink
Bước 1: Đăng nhập vào trang Blogger.com
Bước 2: Nhấn vào phần Trang và tạo 1 trang mới
Bước 3: Chỉnh sửa Trang dưới dạng Code HTML và copy toàn bỏ đoạn Code dưới đây dán vào đó
<div class="safelink-button" id="safelink">
  <div style="text-align: center;">
    <div class="button outline" id="safelink-wait">Please wait...</div>
       <script>/*<![CDATA[*/ var currentURL = location.href; var str = currentURL; var res = str.replace('https://www.ngohoanganhtuan.net/p/safelink.html' + '?url=', " "); function changeLink(){ var decodedString = Base64.decode(res); window.open(decodedString, '_blank')}; document.write('<a href="#getLink" id="safelink-download" class="button">Nhấn vào đây để tiếp tục</a>'); var linkDL = document.getElementById("safelink-download"); var notif = document.getElementById("safelink-wait"); var time = 15; var textTime = document.createElement("span"); linkDL.parentNode.replaceChild(textTime, linkDL); var id; id = setInterval(function () { time--; if (time < 0) { textTime.parentNode.replaceChild(linkDL, textTime); clearInterval(id); notif.style.display = "none"; linkDL.style.display = "inline-block"; } else { textTime.innerHTML = "Liên kết sẽ xuất hiện sau " + time.toString() + " giây"; }}, 1000); /*]]>*/</script>
  </div>
</div>
<div class="safelink-content">
<h3 style="text-align: left;">Blogger là gì?</h3><div style="text-align: left;">Blogger là một platform có thể hỗ trợ bạn tự thiết kế một trang blog miễn phí với nhiều tính năng hấp dẫn. Có thể bạn không biết Blogger là gì vì nó được phát triển và ra đời cách đây khá lâu, kể từ cuối những năm thập niên 90. Vào thời điểm ấy, Blogger khá là đình đám và đóng vai trò quan trọng trong việc phát triển các trang blog. Tuy nhiên, theo thời gian, Blogger rơi vào giai đoạn thoái trào nên cuối cùng Blogger đã bị Google mua lại vào năm 2003. Nhưng cũng nhờ Google, kể từ thời điểm đó, Blogger đã quay trở lại và phát triển nhanh chóng với nhiều tính năng nổi bật, hấp dẫn hơn. Dưới đây là một số điểm nổi bật của Blogger mà chúng tôi muốn chia sẻ với bạn.</div> 
<h3 style="text-align: left;">Blogger luôn Miễn phí</h3><div style="text-align: left;">Nếu như ai đã biết Blogger là gì thì chắc chắn sẽ nhận thấy tiện ích đầu tiên khi sử dụng Blogger là nền tảng này hoàn toàn miễn phí. Để sử dụng nền tảng này, bạn đơn giản chỉ cần dành ra vài phút để đăng ký và tạo tài khoản. Và như đã đề cập, vì Blogger đã được Google mua lại nên nếu bạn đã có tài khoản Gmail thì chỉ cần đăng nhập trực tiếp bằng tài khoản này là được.
Sau đó, để tạo trang blog cho mình, bạn chỉ việc đăng nhập vào Blogger và nhấn chọn “New Blog”. Tiếp theo, bạn chỉ cần đặt tên cho trang blog, xác nhận địa chỉ trang blog, chọn template và cuối cùng là nhấn ok. Như vậy là xong. Thật đơn giản và nhanh chón đúng không nào? Chính sự tiện dụng này mà Blogger đang dần thu hút lại người dùng của mình đấy.</div>
<h3 style="text-align: left;">Chức năng dễ sử dụng</h3><div style="text-align: left;">Như đã đề cập, nhiệm vụ chính của Blogger là thiết kế blog do đó các chức năng trên Blogger vô cùng đơn giản và dễ sử dụng. Sau khi dành ra vài phút để tạo tài khoản và thiết lập trang blog của mình, bạn chỉ cần đăng nhập vào là có thể đăng những bài post đầu tiên cho blog.
Giao diện của phần tạo bài viết vô cùng đơn giản, tương tự như khi bạn đang soạn thảo văn bản trên Word hay trên các Word Processor khác. Tại đây, bạn có thể đặt tên cho bài viết của mình ở ngay phần đầu giao diện soạn thảo. Ngay phía dưới là phần để bạn viết nội dung, cập nhật thông tin. Bạn cũng có thể chèn hình ảnh vào phần soạn thảo này. Ngoài ra, bạn cũng sẽ thấy các tính năng khác như điều chỉnh font chữ, màu sắc, canh hàng, canh lề... Có thể nói, cho dù bạn chưa biết Blogger là gì thì vẫn có thể sử dụng nó một cách nhanh chóng.</div>
</div>
<div class="safelink-create" style="text-align: center;">
  <div id="getLink">
    <a class="button" href="javascript:;" onclick="changeLink();" rel="noreferrer noopener" target="_blank">Get link</a>
  </div>
</div>
<style>
  /* Safelink */
:root {--link-outline-color:#48525c;--link-bg-color:#204ecf;}
.button{display: inline-flex;align-items: center;margin: 15px 15px;padding: 10px 20px;outline: 0;border: 2px solid;border-radius: 6px;color: #fefefe;background-color: black;font-size: 14px;white-space: nowrap;overflow: hidden;max-width: 100%;line-height: 2em}
.button.outline{color: var(--link-outline-color);background-color: transparent;border: 1px solid #ebeced}
.button.outline:hover{border-color: var(--link-bg-color)}
.safelink-button, .safelink-create > *{margin: 1.8em 0}
.safelink-button span{display: block;font-size: 12px}
#getLink{margin: 5px 0}
#getLink .button{display: none}
#getLink:target .button{display: inline-flex}</style>  

Các bạn thay Phần in đậm thành Link trang Safelink của các bạn sau khi đã được tạo nhé

Bước 4: Thêm đoạn JS xoá ?m=1 để tránh gây lỗi trên Mobile

Các bạn truy cập vào Chủ đềChỉnh sửa với HTML, sau đó copy toàn bộ đoạn Code dướI đây dán vào trước thẻ </body>

  <script>
    //<![CDATA[
      var uri = window.location.toString();
      if (uri.indexOf("?m=1", "?m=1") > 0) {
        var clean_uri = uri.substring(0, uri.indexOf("?m=1"));
        window.history.replaceState({}, document.title, clean_uri);
      }
    //]]>
  </script>
Bước 5: Thêm đoạn JS tự động bắt liên kết chuyển hướng cho Blog và mã hoá URL

Các bạn cũng copy toàn bộ doạn Code sau và dán chúng trước thẻ </body>

  <b:if cond='data:view.isSingleItem'>
    <script>
        /*<![CDATA[*/
        var Base64 = {
            _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
            encode: function(input) {
                var output = "";
                var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
                var i = 0;
                input = Base64._utf8_encode(input);
                while (i < input.length) {
                    chr1 = input.charCodeAt(i++);
                    chr2 = input.charCodeAt(i++);
                    chr3 = input.charCodeAt(i++);
                    enc1 = chr1 >> 2;
                    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
                    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
                    enc4 = chr3 & 63;
                    if (isNaN(chr2)) {
                        enc3 = enc4 = 64;
                    } else if (isNaN(chr3)) {
                        enc4 = 64;
                    }
                    output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
                }
                return output;
            },
            decode: function(input) {
                var output = "";
                var chr1, chr2, chr3;
                var enc1, enc2, enc3, enc4;
                var i = 0;
                input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
                while (i < input.length) {
                    enc1 = this._keyStr.indexOf(input.charAt(i++));
                    enc2 = this._keyStr.indexOf(input.charAt(i++));
                    enc3 = this._keyStr.indexOf(input.charAt(i++));
                    enc4 = this._keyStr.indexOf(input.charAt(i++));
                    chr1 = (enc1 << 2) | (enc2 >> 4);
                    chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
                    chr3 = ((enc3 & 3) << 6) | enc4;
                    output = output + String.fromCharCode(chr1);
                    if (enc3 != 64) {
                        output = output + String.fromCharCode(chr2);
                    }
                    if (enc4 != 64) {
                        output = output + String.fromCharCode(chr3);
                    }
                }
                output = Base64._utf8_decode(output);
                return output;
            },
            _utf8_encode: function(string) {
                string = string.replace(/\r\n/g, "\n");
                var utftext = "";
                for (var n = 0; n < string.length; n++) {
                    var c = string.charCodeAt(n);
                    if (c < 128) {
                        utftext += String.fromCharCode(c);
                    } else if ((c > 127) && (c < 2048)) {
                        utftext += String.fromCharCode((c >> 6) | 192);
                        utftext += String.fromCharCode((c & 63) | 128);
                    } else {
                        utftext += String.fromCharCode((c >> 12) | 224);
                        utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                        utftext += String.fromCharCode((c & 63) | 128);
                    }
                }
                return utftext;
            },
            _utf8_decode: function(utftext) {
                var string = "";
                var i = 0;
                var c = c1 = c2 = 0;
                while (i < utftext.length) {
                    c = utftext.charCodeAt(i);
                    if (c < 128) {
                        string += String.fromCharCode(c);
                        i++;
                    } else if ((c > 191) && (c < 224)) {
                        c2 = utftext.charCodeAt(i + 1);
                        string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                        i += 2;
                    } else {
                        c2 = utftext.charCodeAt(i + 1);
                        c3 = utftext.charCodeAt(i + 2);
                        string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                        i += 3;
                    }
                }
                return string;
            }
        };
        var protected_links = "";
        var a_to_va = 0;
        var a_to_vb = 0;
        var a_to_vc = "";

        function auto_safelink() {
            auto_safeconvert();
        };

        function auto_safeconvert() {
            var a_to_vd = window.location.hostname;
            if (protected_links != "" && !protected_links.match(a_to_vd)) {
                protected_links += ", " + a_to_vd;
            } else if (protected_links == "") {
                protected_links = a_to_vd;
            }
            var a_to_ve = "";
            var a_to_vf = new Array();
            var a_to_vg = 0;
            a_to_ve = document.getElementsByTagName("a");
            a_to_va = a_to_ve.length;
            a_to_vf = a_to_fa();
            a_to_vg = a_to_vf.length;
            var a_to_vh = false;
            var j = 0;
            var daftarPostingan = ["https://www.ngohoanganhtuan.net/p/safelink.html"];
            var randomPostingan = daftarPostingan[Math.floor(Math.random() * daftarPostingan.length)];
            var a_to_vi = "";
            for (var i = 0; i < a_to_va; i++) {
                a_to_vh = false;
                j = 0;
                while (a_to_vh == false && j < a_to_vg) {
                    a_to_vi = a_to_ve[i].href;
                    if (a_to_vi.match(a_to_vf[j]) || !a_to_vi || !a_to_vi.match("https")) {
                        a_to_vh = true;
                    }
                    j++;
                }
                if (a_to_vh == false) {
                    var encryptedUrl = Base64.encode(a_to_vi);
                    a_to_ve[i].href = randomPostingan + "?url=" + encryptedUrl;
                    a_to_ve[i].rel = "noopener noreferrer";
                    a_to_vb++;
                    a_to_vc += i + ":::" + a_to_ve[i].href + "\n";
                }
            }
            var a_to_vj = "";
            var a_to_vk = "";
            if (a_to_vj) {
                a_to_vj.innerHTML += a_to_vb;
            }
            if (a_to_vk) {
                a_to_vk.innerHTML += a_to_va;
            }
        };

        function a_to_fa() {
            var a_to_vf = new Array();
            protected_links = protected_links.replace(" ", "");
            a_to_vf = protected_links.split(",");
            return a_to_vf;
        }; /*]]>*/
    </script>

    <!--[Protect link from encode]-->
    <script>
        protected_links = &quot;
        facebook.com, instagram.com, twitter.com, www.ngohoanganhtuan.net, ngohoanganhtuan.net, 1. bp, dmca.com &quot;;
        auto_safelink();
    </script>
</b:if>
  • https://www.ngohoanganhtuan.net/p/safelink.html Ở phần này các bạn thay bằng link trang Safelink đã tạo phía trên của các bạn nhé!
  • facebook.com, instagram.com, twitter.com, www.ngohoanganhtuan.net, ngohoanganhtuan.net, 1. bp, dmca.com Phần này các bạn có thêm những trang các bạn không muốn chuyển hướng tới trang Safelink và mã hoá URL. Các domain cách nhau bằng dấu phẩy nhé
Bước 6: Nhấn Lưu lại và tận hưởng thành quả thôi nào!

Như vậy qua bài viết này, mình đã có thể hướng dẫn cho các bạn cách để tạo ra một trang Safelink tự động bắt các liên kết ngoài đến trang Safelink chuyển hướng và mã hoá URL. Nếu các bạn thấy hay hoặc có bất kì thắc mắc nào có thể Comment bên dưới, mình sẽ hỗ trợ các bạn tận tình. Xin cảm ơn!!!

Bài viết liên quan: