<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/" >

<channel>
	<title>javascript &#8211; AnonyViet</title>
	<atom:link href="https://anonyviet.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>https://anonyviet.com</link>
	<description>Webiste chia sẻ kiến thức công nghệ thông tin, mạng máy tính, bảo mật phổ biến nhất Việt Nam. Luôn cập nhật tin tức, thủ thuật nóng hổi nhất</description>
	<lastBuildDate>Sat, 13 Dec 2025 14:11:56 +0000</lastBuildDate>
	<language>vi</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://anonyviet.com/wp-content/uploads/2018/10/cropped-ico-logo-75x75.png</url>
	<title>javascript &#8211; AnonyViet</title>
	<link>https://anonyviet.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Chia sẻ Code tuyết rơi cho Website đón Giáng Sinh</title>
		<link>https://anonyviet.com/chia-se-code-tuyet-roi-cho-website-don-giang-sinh/</link>
					<comments>https://anonyviet.com/chia-se-code-tuyet-roi-cho-website-don-giang-sinh/#respond</comments>
		
		<dc:creator><![CDATA[AnonyViet]]></dc:creator>
		<pubDate>Mon, 15 Dec 2025 21:08:30 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[code tuyết rơi]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[hiệu ứng]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[tuyết rơi]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=97007</guid>

					<description><![CDATA[Mỗi dịp Giáng sinh về, các Website đều thay đổi giao diện để hưởng ứng không khí lễ hội. Một trong những điểm nhấn đơn giản nhưng hiệu quả nhất chính là hiệu ứng tuyết rơi (Snowfall Effect). Tuy nhiên, nhiều script tuyết rơi cũ thường sử dụng thư viện jQuery nặng nề hoặc Canvas [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Mỗi dịp Giáng sinh về, các Website đều thay đổi giao diện để hưởng ứng không khí lễ hội. Một trong những điểm nhấn đơn giản nhưng hiệu quả nhất chính là <strong>hiệu ứng tuyết rơi (Snowfall Effect)</strong>.</p>
<p>Tuy nhiên, nhiều script tuyết rơi cũ thường sử dụng thư viện jQuery nặng nề hoặc Canvas phức tạp khiến website bị chậm, lag trên điện thoại. Trong bài viết này, mình sẽ chia sẻ đoạn <a href="https://anonyviet.com/?s=code+tuy%E1%BA%BFt+r%C6%A1i">code tuyết rơi</a> sử dụng <strong>CSS3 Animation và Vanilla JavaScript</strong> (JS thuần). Đảm bảo 3 tiêu chí: <strong>Siêu nhẹ &#8211; Không gây lag &#8211; Dễ cài đặt</strong>.</p>
<h2>Ưu điểm code tuyết rơi cho Website đón Giáng Sinh</h2>
<ul>
<li><strong>Tối ưu hiệu suất:</strong> Sử dụng <code>CSS Keyframes</code> để tạo chuyển động thay vì tính toán vị trí liên tục bằng JS, giúp giảm tải cho CPU.</li>
<li><strong>Không chặn tương tác:</strong> Đã được xử lý thuộc tính <code>pointer-events: none</code>, giúp người dùng vẫn click được vào các link/nút bấm bên dưới lớp tuyết mà không bị vướng.</li>
<li><strong>Tùy biến cao:</strong> Dễ dàng chỉnh số lượng tuyết, tốc độ rơi và hình dáng bông tuyết.</li>
</ul>
<h2>Full Code hiệu ứng tuyết rơi (HTML/CSS/JS)</h2>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-97009" src="https://anonyviet.com/wp-content/uploads/2025/12/cdoe-tuyet-trang-trang-tri-website.png" alt="cdoe tuyet trang trang tri website" width="748" height="443" title="Chia sẻ Code tuyết rơi cho Website đón Giáng Sinh 3" srcset="https://anonyviet.com/wp-content/uploads/2025/12/cdoe-tuyet-trang-trang-tri-website.png 748w, https://anonyviet.com/wp-content/uploads/2025/12/cdoe-tuyet-trang-trang-tri-website-300x178.png 300w" sizes="(max-width: 748px) 100vw, 748px" /></p>
<p>Dưới đây là đoạn mã đầy đủ. Bạn không cần tải file rườm rà, chỉ cần copy và dán.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">      &lt;style&gt;
  .snowflake {
    position: fixed;
    top: -10px;
    z-index: 9999;
    user-select: none;
    cursor: default;
    animation-name: fall;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
    color: #F527E4; /* Màu tuyết nếu dùng ký tự */
  }

  @keyframes fall {
    to {
      transform: translateY(100vh);
    }
  }
&lt;/style&gt;

&lt;script&gt;
  (function() {
    var snowflakes = [],
        browserWidth, browserHeight,
        numberOfSnowflakes = 50, // Số lượng bông tuyết
        resetPosition = false;

    function setup() {
        window.addEventListener("DOMContentLoaded", generateSnowflakes, false);
        window.addEventListener("resize", setResetFlag, false);
    }

    function setResetFlag(e) {
        resetPosition = true;
    }

    function generateSnowflakes() {

        var originalSnowflake = document.createElement("div");
        originalSnowflake.classList.add("snowflake");
        originalSnowflake.innerHTML = "❄"; 
        originalSnowflake.style.fontSize = "20px"; // Kích thước cơ bản

        var snowflakeContainer = document.body;
        
        browserWidth = document.documentElement.clientWidth;
        browserHeight = document.documentElement.clientHeight;

        for (var i = 0; i &lt; numberOfSnowflakes; i++) {
            var snowflakeClone = originalSnowflake.cloneNode(true);
            snowflakeContainer.appendChild(snowflakeClone);

            var initialX = Math.floor(Math.random() * browserWidth);
            var fallDuration = Math.floor(Math.random() * 10) + 5 + "s";
            var snowflakeSize = Math.floor(Math.random() * 20) + 10 + "px"; // Random kích thước
            var delay = Math.floor(Math.random() * 5) + "s";

            snowflakeClone.style.left = initialX + "px";
            snowflakeClone.style.animationDuration = fallDuration;
            snowflakeClone.style.fontSize = snowflakeSize;
            snowflakeClone.style.animationDelay = delay;
            snowflakeClone.style.opacity = Math.random(); // Độ mờ ngẫu nhiên
        }
    }
    setup();
  })();
&lt;/script&gt;</pre>
<p>Để đổi màu tuyết bạn thay đổi mã màu ở dòng <code>color: #F527E4;</code></p>
<h2>Full Code hiệu ứng tuyết rơi có động tuyết ở chân trang</h2>
<p><img decoding="async" class="aligncenter size-full wp-image-97008" src="https://anonyviet.com/wp-content/uploads/2025/12/code-tuyet-roi-ngung-dong-chan-trang.png" alt="code tuyet roi ngung dong chan trang" width="775" height="720" title="Chia sẻ Code tuyết rơi cho Website đón Giáng Sinh 4" srcset="https://anonyviet.com/wp-content/uploads/2025/12/code-tuyet-roi-ngung-dong-chan-trang.png 775w, https://anonyviet.com/wp-content/uploads/2025/12/code-tuyet-roi-ngung-dong-chan-trang-300x279.png 300w, https://anonyviet.com/wp-content/uploads/2025/12/code-tuyet-roi-ngung-dong-chan-trang-768x713.png 768w, https://anonyviet.com/wp-content/uploads/2025/12/code-tuyet-roi-ngung-dong-chan-trang-750x697.png 750w" sizes="(max-width: 775px) 100vw, 775px" /></p>
<p data-path-to-node="11"><i>Đây là phiên bản nâng cao sử dụng HTML5 Canvas. Hiệu ứng này sẽ cho phép tuyết rơi và đọng lại dưới chân trang web. Theo thời gian, lớp tuyết sẽ dày lên và có thể che phủ màn hình giống như một trận bão tuyết thực sự.</i></p>
<blockquote data-path-to-node="13">
<p data-path-to-node="13,0">Hiệu ứng tuyết tích tụ sẽ <b>che khuất nội dung</b> website của bạn từ dưới lên trên. Hãy cân nhắc kỹ trước khi sử dụng cho trang bán hàng vì khách có thể không nhìn thấy nút &#8220;Mua ngay&#8221; hoặc Footer. Bạn có thể chỉnh biến <code>maxSnowHeight</code> trong code để giới hạn độ cao của tuyết (ví dụ chỉ cho cao 100px rồi dừng).</p>
</blockquote>
<hr data-path-to-node="14" />
<h3 data-path-to-node="15">Giải thích các thông số trong code để bạn tùy chỉnh:</h3>
<ul>
<li data-path-to-node="16,0,0"><code>maxSnowHeight = height;</code>: Tuyết sẽ dâng lên mãi cho đến khi lấp đầy màn hình (full screen). Nếu bạn chỉ muốn nó dâng lên một chút rồi dừng (để không che web), hãy đổi thành số pixel cụ thể, ví dụ: <code>maxSnowHeight = 150;</code>.</li>
<li data-path-to-node="16,1,0"><code>snowflakeCount = 200;</code>: Số lượng hạt tuyết đang rơi. Tăng lên thì dày hơn nhưng máy yếu có thể lag.</li>
<li data-path-to-node="16,2,0"><code>snowPile</code>: Đây là mảng kỹ thuật để lưu &#8220;bản đồ địa hình&#8221; của lớp tuyết dưới đáy.</li>
</ul>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">&lt;canvas id="snowCanvas" style="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;"&gt;&lt;/canvas&gt;

&lt;script&gt;
(function() {
    var canvas = document.getElementById('snowCanvas');
    if (!canvas) { console.error("Không tìm thấy thẻ canvas"); return; }
    
    var ctx = canvas.getContext('2d');
    var width = window.innerWidth;
    var height = window.innerHeight;
    
    // --- CẤU HÌNH ---
    var maxSnowHeight = 200;    // Độ cao tối đa tuyết đọng (pixel)
    var snowflakeCount = 200;   // Số lượng hạt tuyết
    var snowColor = "#ADD8E6";  // Màu tuyết (Xanh nhạt để dễ test, muốn trắng sửa thành #FFFFFF)
    // ----------------
    
    canvas.width = width;
    canvas.height = height;

    var snowflakes = [];
    var snowPile = new Array(width).fill(0); 

    // Hàm tạo lại hạt tuyết khi rơi xuống hoặc mới bắt đầu
    function resetSnowflake(flake) {
        flake.x = Math.floor(Math.random() * width);
        flake.y = Math.floor(Math.random() * -height); 
        flake.size = Math.random() * 3 + 2; 
        flake.speed = (Math.random() * 1) + 1.5; // Tốc độ rơi
        flake.velY = flake.speed;
        flake.velX = 0;
        flake.opacity = (Math.random() * 0.5) + 0.3;
    }

    // Khởi tạo các hạt tuyết
    function init() {
        snowflakes = [];
        for (var i = 0; i &lt; snowflakeCount; i++) {
            var flake = {};
            resetSnowflake(flake);
            snowflakes.push(flake);
        }
        // GỌI HÀM UPDATE ĐỂ BẮT ĐẦU CHẠY
        update();
    }

    // Vòng lặp chuyển động
    function update() {
        ctx.clearRect(0, 0, width, height);

        // 1. Vẽ đống tuyết tích tụ dưới đáy
        ctx.fillStyle = snowColor;
        ctx.beginPath();
        ctx.moveTo(0, height);
        for (var x = 0; x &lt; width; x++) {
            ctx.lineTo(x, height - snowPile[x]);
        }
        ctx.lineTo(width, height);
        ctx.fill();

        // 2. Vẽ và cập nhật bông tuyết đang rơi
        for (var i = 0; i &lt; snowflakes.length; i++) {
            var f = snowflakes[i];

            f.x += Math.sin(f.y * 0.05) * 0.5; // Lắc lư nhẹ
            f.y += f.velY;

            var currentX = Math.floor(f.x);
            if (currentX &lt; 0) currentX = 0;
            if (currentX &gt;= width) currentX = width - 1;

            // Kiểm tra va chạm với đống tuyết
            var pileHeight = snowPile[currentX];
            
            if (f.y &gt;= height - pileHeight) {
                // Tích tụ tuyết nếu chưa vượt quá giới hạn
                if (pileHeight &lt; maxSnowHeight) {
                    var range = 3; 
                    for(var k = -range; k &lt;= range; k++) {
                        var neighborX = currentX + k;
                        if(neighborX &gt;=0 &amp;&amp; neighborX &lt; width) {
                             snowPile[neighborX] += f.size * 0.3; 
                        }
                    }
                }
                resetSnowflake(f); // Tạo lại hạt mới từ trên cao
            }

            // Vẽ bông tuyết đơn lẻ
            ctx.fillStyle = snowColor;
            ctx.globalAlpha = f.opacity; // Độ trong suốt
            ctx.beginPath();
            ctx.arc(f.x, f.y, f.size, 0, Math.PI * 2);
            ctx.fill();
            ctx.globalAlpha = 1; // Reset lại alpha
        }
        
        requestAnimationFrame(update);
    }

    // Xử lý khi resize màn hình
    window.addEventListener('resize', function() {
        width = window.innerWidth;
        height = window.innerHeight;
        canvas.width = width;
        canvas.height = height;
        snowPile = new Array(width).fill(0); // Reset tuyết đọng khi resize để tránh lỗi hiển thị
    });

    init();
})();
&lt;/script&gt;</pre>
<h2>Hướng dẫn thêm Code tuyết rơi Website Code tay (HTML/PHP)</h2>
<p>Đối với các website tự code hoặc các mã nguồn mở khác (Laravel, CodeIgniter&#8230;), bạn thực hiện như sau:</p>
<ol>
<li>Mở file <strong>footer</strong> của giao diện (thường là <code>footer.php</code>, <code>footer.html</code> hoặc file layout chính).</li>
<li>Tìm đến thẻ đóng <code>&lt;/body&gt;</code>.</li>
<li>Dán đoạn code ở mục 2 vào ngay phía trên thẻ <code>&lt;/body&gt;</code>.</li>
<li>Lưu file và tải lại trang (Ctrl + F5) để xem kết quả.</li>
</ol>
<h2>4. Hướng dẫn cài đặt cho WordPress</h2>
<p>Với WordPress, có 2 cách để chèn code này mà không cần cài plugin nặng nề tạo hiệu ứng:</p>
<h3>Cách 1: Sử dụng Plugin chèn Header &amp; Footer (Khuyên dùng)</h3>
<p>Cách này an toàn nhất, khi đổi giao diện (theme) code vẫn hoạt động.</p>
<ol>
<li>Cài đặt plugin <strong>WPCode</strong> (trước đây là Insert Headers and Footers) hoặc <strong>Header Footer Code Manager</strong>.</li>
<li>Vào menu plugin, chọn <strong>Add New Snippet</strong>.</li>
<li>Chọn vị trí chèn là <strong>Footer</strong>.</li>
<li>Dán đoạn code trên vào và bấm <strong>Save/Activate</strong>.</li>
</ol>
<h3>Cách 2: Chèn trực tiếp vào Theme (Dành cho Dev)</h3>
<ol>
<li>Vào trang quản trị WP -&gt; <strong>Giao diện (Appearance)</strong> -&gt; <strong>Chỉnh sửa giao diện (Theme File Editor)</strong>.</li>
<li>Tìm file <code>footer.php</code> ở cột bên phải.</li>
<li>Dán code vào trước thẻ đóng <code>&lt;/body&gt;</code>.</li>
<li>Bấm <strong>Cập nhật tệp tin</strong>.</li>
</ol>
<p><em>Lưu ý: Với cách 2, nếu bạn update theme thì code sẽ mất, nên sử dụng Child Theme để tránh tình trạng này.</em></p>
<p>Chỉ với vài dòng code đơn giản, website của bạn đã trở nên sinh động hơn rất nhiều trong mắt khách truy cập. Đây là một mẹo nhỏ trong <strong>UI/UX</strong> giúp giữ chân người dùng lâu hơn trong dịp lễ hội.</p>
<p>Chúc các bạn thực hiện thành công và có một mùa Giáng sinh an lành! Nếu có thắc mắc gì, hãy để lại bình luận bên dưới nhé.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/chia-se-code-tuyet-roi-cho-website-don-giang-sinh/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Hướng dẫn học lập trình miễn phí với Vue School</title>
		<link>https://anonyviet.com/huong-dan-hoc-lap-trinh-mien-phi-voi-vue-school/</link>
					<comments>https://anonyviet.com/huong-dan-hoc-lap-trinh-mien-phi-voi-vue-school/#respond</comments>
		
		<dc:creator><![CDATA[Thanh Kim]]></dc:creator>
		<pubDate>Sun, 02 Mar 2025 06:01:02 +0000</pubDate>
				<category><![CDATA[Khóa Học]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Vue School]]></category>
		<category><![CDATA[VueJS]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=82076</guid>

					<description><![CDATA[Bạn đang tìm kiếm cơ hội để học lập trình miễn phí? Hay bạn muốn nâng cao kỹ năng lập trình, đặc biệt là trong lĩnh vực frontend? Nếu câu trả lời là có, thì đây chính là thời điểm vàng để bạn hành động! Vue School &#8211; Nền tảng học lập trình trực tuyến [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Bạn đang tìm kiếm cơ hội để <strong>học lập trình miễn phí</strong>? Hay bạn muốn nâng cao kỹ năng lập trình, đặc biệt là trong lĩnh vực frontend? Nếu câu trả lời là có, thì đây chính là thời điểm vàng để bạn hành động! Vue School &#8211; Nền tảng học lập trình trực tuyến uy tín, đang mở cửa miễn phí toàn bộ hơn 1451 bài học chất lượng cao. Tin được không? Cơ hội này chỉ kéo dài đến ngày 03/03/2025, vậy nên hãy nhanh tay nhé!</p>
<h2><strong>Tại sao nên tận dụng ngay cơ hội học lập trình miễn phí này?</strong></h2>
<p>Trong thời đại công nghệ bùng nổ, học <a href="https://anonyviet.com/cach-bat-dau-hoc-lap-trinh-va-nhung-loi-thuong-mac-phai/">lập trình</a> miễn phí không chỉ là một lựa chọn thông minh mà còn là cách để bạn mở ra cánh cửa tương lai. Đặc biệt, nếu bạn yêu thích frontend, việc làm chủ các công cụ như VueJS sẽ giúp bạn tạo nên những sản phẩm web ấn tượng, chuyên nghiệp và tối ưu hóa trải nghiệm người dùng.</p>
<p>Thông thường, những khóa học chất lượng như vậy có giá không hề rẻ. Nhưng<strong> từ ngày 1 đến ngày 3/3/2025</strong>, Vue School mang đến cơ hội học lập trình miễn phí hoàn toàn, giúp bạn tiếp cận kiến thức từ các chuyên gia hàng đầu mà không mất một xu. Đây là dịp hiếm có để bạn đầu tư vào bản thân mà không lo về chi phí!</p>
<figure id="attachment_82078" aria-describedby="caption-attachment-82078" style="width: 600px" class="wp-caption aligncenter"><img decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2025/03/hoc-lap-trinh-mien-phi-1.jpg" alt="Tại sao nên tận dụng ngay cơ hội này?" width="600" height="400" title="Hướng dẫn học lập trình miễn phí với Vue School 10"><figcaption id="caption-attachment-82078" class="wp-caption-text">Tại sao nên tận dụng ngay cơ hội này?</figcaption></figure>
<h2><strong>Đối tượng nào nên tham gia học?</strong></h2>
<p>Chương trình này dành cho tất cả mọi người, dù là:</p>
<ul>
<li><strong>Người mới nhập môn:</strong> Chưa từng biết đến <a href="https://anonyviet.com/5-tien-ich-mo-rong-vs-code-hang-dau-de-tang-toc-do-code/">code</a>? Không vấn đề gì! Vue School có những khóa cơ bản dễ hiểu để bạn bắt đầu.</li>
<li><strong>Lập trình viên muốn nâng cao:</strong> Bạn đã có nền tảng và muốn chuyên sâu hơn? Các bài học nâng cao sẽ giúp bạn chinh phục những thử thách mới.</li>
<li><strong>Người đam mê công nghệ:</strong> Chỉ cần bạn tò mò và muốn thử sức, đây là cơ hội lý tưởng để khám phá lập trình.</li>
</ul>
<p>Chỉ cần một chút đam mê và thiết bị kết nối internet, bạn đã có thể học lập trình miễn phí với kho tài nguyên khổng lồ từ Vue School.</p>
<figure id="attachment_82082" aria-describedby="caption-attachment-82082" style="width: 600px" class="wp-caption aligncenter"><img decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2025/03/hoc-lap-trinh-mien-phi-5.jpg" alt="Đối tượng nào nên tham gia học?" width="600" height="400" title="Hướng dẫn học lập trình miễn phí với Vue School 11"><figcaption id="caption-attachment-82082" class="wp-caption-text">Đối tượng nào nên tham gia học?</figcaption></figure>
<h2><strong>Cách tham gia học lập trình miễn phí ngay hôm nay</strong></h2>
<p>Bắt đầu học tại Vue School thật sự rất đơn giản. Bạn chỉ cần:</p>
<p><strong>Bước 1:</strong> Truy cập trang web chương trình của Vue School <a href="https://vueschool.io/freeweekend" rel="noopener"><span style="text-decoration: underline;"><strong>TẠI ĐÂY</strong> </span></a>&gt; Điền email &gt; Nhấn<strong> Join Now</strong>.</p>
<figure id="attachment_82079" aria-describedby="caption-attachment-82079" style="width: 600px" class="wp-caption aligncenter"><img decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2025/03/hoc-lap-trinh-mien-phi-2.jpg" alt="Điền email" width="600" height="400" title="Hướng dẫn học lập trình miễn phí với Vue School 12"><figcaption id="caption-attachment-82079" class="wp-caption-text">Điền email</figcaption></figure>
<p><strong>Bước 2:</strong> Trả lời một vài câu hỏi khảo sát.</p>
<p><strong>Bước 3:</strong> Nhấn <strong>Start watching</strong>.</p>
<figure id="attachment_82080" aria-describedby="caption-attachment-82080" style="width: 600px" class="wp-caption aligncenter"><img decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2025/03/hoc-lap-trinh-mien-phi-3.jpg" alt="Nhấn Start watching" width="600" height="400" title="Hướng dẫn học lập trình miễn phí với Vue School 13"><figcaption id="caption-attachment-82080" class="wp-caption-text">Nhấn Start watching</figcaption></figure>
<p><strong>Bước 4:</strong> Đăng ký tài khoản.</p>
<p><strong>Bước 5:</strong> Duyệt qua danh sách hơn 1451 bài học và chọn nội dung phù hợp nhất để bắt đầu học ngay!</p>
<figure id="attachment_82081" aria-describedby="caption-attachment-82081" style="width: 600px" class="wp-caption aligncenter"><img decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2025/03/hoc-lap-trinh-mien-phi-4.jpg" alt="Chọn nội dung phù hợp nhất" width="600" height="400" title="Hướng dẫn học lập trình miễn phí với Vue School 14"><figcaption id="caption-attachment-82081" class="wp-caption-text">Chọn nội dung phù hợp nhất</figcaption></figure>
<h2><strong>Mẹo để tận dụng tối đa học lập trình miễn phí trong 3 ngày</strong></h2>
<p>Để không lãng phí cơ hội học hiếm có này, hãy lên kế hoạch rõ ràng:</p>
<ol>
<li>Chọn một chủ đề cụ thể để tập trung, như VueJS cơ bản hoặc <a href="https://anonyviet.com/hoc-javascript-thi-nen-hoc-nodejs/">JavaScript</a> nâng cao.</li>
<li>Xem trước danh sách bài học và ưu tiên những nội dung bạn cần nhất.</li>
<li>Dành ít nhất 2-3 giờ mỗi ngày để học trong khoảng thời gian từ ngày 1 đến ngày 3 tháng 3.</li>
</ol>
<h2><strong>Lời kết</strong></h2>
<p>Với hơn 1451 bài học miễn phí từ Vue School, đây là cơ hội vàng để bạn <strong>học lập trình miễn phí</strong> và nâng cao kỹ năng lập trình của mình. Thời gian có hạn, hãy truy cập Vue School, đăng ký và bắt đầu ngay thôi nào!</p>
<h2>Câu hỏi thường gặp</h2>
<h3>Chương trình học miễn phí này kéo dài trong bao lâu?</h3>
<p>Chương trình học lập trình miễn phí của Vue School kéo dài từ ngày 1 đến ngày 3 tháng 3 năm 2025.</p>
<h3>Tôi cần những gì để tham gia chương trình này?</h3>
<p>Bạn chỉ cần một thiết bị có kết nối internet và một chút đam mê học lập trình!</p>
<h3>Chương trình này phù hợp với ai?</h3>
<p>Chương trình phù hợp với mọi người, từ người mới bắt đầu đến lập trình viên muốn nâng cao kỹ năng,  kể cả những người chỉ đơn thuần đam mê công nghệ.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/huong-dan-hoc-lap-trinh-mien-phi-voi-vue-school/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Hướng dẫn sử dụng Discord Nitro miễn phí</title>
		<link>https://anonyviet.com/huong-dan-su-dung-discord-nitro-mien-phi/</link>
					<comments>https://anonyviet.com/huong-dan-su-dung-discord-nitro-mien-phi/#comments</comments>
		
		<dc:creator><![CDATA[Wdchocopie]]></dc:creator>
		<pubDate>Thu, 16 Nov 2023 00:41:21 +0000</pubDate>
				<category><![CDATA[Mẹo Vặt Máy Tính]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Discord]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mạng]]></category>
		<category><![CDATA[nitro]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[vencord]]></category>
		<category><![CDATA[wdchocopie]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=52606</guid>

					<description><![CDATA[Chắc hẳn nhiều bạn đang theo dõi Anonyviet sử dụng Discord phải không nhỉ? Discord tuy là 1 nền tảng mạng xã hội miễn phí lớn nhất dành cho các game thủ nhưng đôi khi các bạn vẫn sẽ phải trả tiền để sử dụng 1 vài tính năng đặc biệt. Nó được gọi là [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Chắc hẳn nhiều bạn đang theo dõi Anonyviet sử dụng <a href="https://discord.com/" target="_blank" rel="noopener">Discord</a> phải không nhỉ? Discord tuy là 1 nền tảng mạng xã hội miễn phí lớn nhất dành cho các game thủ nhưng đôi khi các bạn vẫn sẽ phải trả tiền để sử dụng 1 vài tính năng đặc biệt. Nó được gọi là Discord Nitro. Vậy thì ngày hôm nay, mình sẽ hướng dẫn các bạn cách để sử dụng Discord Nitro một cách miễn phí nhé!</strong></p>
<h2>Discord nitro &#8211; giới thiệu sơ lược</h2>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2023/11/Screenshot-2023-11-16-011807.jpg" alt="Discord Nitro" width="1617" height="736" title="Hướng dẫn sử dụng Discord Nitro miễn phí 20"></p>
<p>Dưới đây mình sẽ liệt kê qua các tính năng khi bạn sở hữu Discord nitro. Các tính năng này sẽ giúp các bạn có 1 trải nghiệm tuyệt vời hơn khi bạn sử dụng Discord. Nó bao gồm:</p>
<ul>
<li>Vô hạn lần sử dụng Super Reaction</li>
<li>Có thể sử dụng emoji tùy biến ở bất cứ đâu</li>
<li>Có thể sử dụng sticker tùy biến ở bất cứ đâu</li>
<li>Được phép tùy chọn logo của Discord</li>
<li>Có thể chia sẻ file với dung lượng cao hơn</li>
<li>Có khả năng phát trực tiếp với chất lượng cao hơn</li>
<li>Ảnh động ở Profile, Banner và Avatar</li>
<li>Có thể sử dụng tính năng Clips (tính năng mới của Discord)</li>
<li>Tùy biến profile trên server của bạn</li>
<li>Sở hữu Nitro Badage</li>
<li>Tùy biến ảnh nền trong cuộc gọi</li>
<li>Có thể tham gia tối đa 200 Server</li>
<li>Tin nhắn tối đa 4000 từ</li>
<li>Tùy chỉnh theme của Discord</li>
<li>Phát âm thanh tùy chỉnh mọi nơi</li>
<li>Đổi âm nhạc lúc log in của Discord</li>
<li>Có nhiều đồ trang trí cho profile của bạn</li>
</ul>
<h2>Hướng dẫn sử dụng Discord Nitro free thông qua Vencord</h2>
<h3>Tính năng</h3>
<p>Tuy cách dưới đây của mình không thể cho các bạn trải nghiệm toàn bộ những tính năng của Discord Nitro nhưng các tính năng các bạn có thể trải nghiệm bao gồm:</p>
<ul>
<li>Có khả năng phát trực tiếp 4k 60fps</li>
<li>có thể gửi các Emoji và Sticker từ các server khác</li>
<li>Sử dụng theme riêng cho Discord</li>
</ul>
<h3>Giới thiệu sơ qua Vencord</h3>
<p>Và công cụ để chúng ta fake Discord Nitro là Vencord. Vencord là 1 trong các Discord Client và Web extension có thể cho chúng ta 1 trải nghiệm tuyệt vời hơn khi sử dụng Discord với các Plugin và theme được thêm vào. Với các plugin được code từ Javascript và các theme được làm từ CSS, nó sẽ biến Discord của bạn còn tuyệt hơn so với Discord Nitro</p>
<h3>Hướng dẫn cài đặt Vencord</h3>
<p><strong>Bước 1</strong>: truy cập vào trang chủ chính thức của <a href="https://vencord.dev/" target="_blank" rel="noopener">Vencord</a> và tải file về</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2023/11/Screenshot-2023-11-16-005139.jpg" alt="Download Vencord" width="1221" height="402" title="Hướng dẫn sử dụng Discord Nitro miễn phí 21"></p>
<p><strong>Bước 2</strong>: Chạy File <code>VencordInstaller.exe</code></p>
<p><strong>Bước 3</strong>: Chọn nút install màu xanh lá cây góc bên trái</p>
<h3><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2023/11/Screenshot-2023-11-16-010100.jpg" alt="Install Vencord" width="1457" height="577" title="Hướng dẫn sử dụng Discord Nitro miễn phí 22"></h3>
<p>Sau khi các bạn tải xong, các bạn chỉ cần vào Discord Client như bình thường là các bạn đã có thể sử dụng các tính năng của Vencord rồi. Sau đây mình sẽ hướng dẫn cách fake Discord Nitro trên Vencord.</p>
<h3>Setup fake Discord Nitro trong Vencord</h3>
<p><strong>Bước 1</strong>: Truy cập phần setting của Discord</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2023/11/Screenshot-2023-11-16-005139-3.jpg" alt="Discord settings" width="430" height="150" title="Hướng dẫn sử dụng Discord Nitro miễn phí 23"></p>
<p><strong>Bước 2:</strong> Kéo xuống mục Vencord &gt; Plugin và tiến hành tìm kiếm từ khóa: <code>FakeNitro</code> và tiến hành bật plugin lên</p>
<p><img decoding="async" class="alignnone size-full " src="https://anonyviet.com/wp-content/uploads/2023/11/Screenshot-2023-11-16-010806.jpg" alt="Fake discord nitro plugin" width="1372" height="453" title="Hướng dẫn sử dụng Discord Nitro miễn phí 24"></p>
<p><strong>Bước 3</strong>: Tới đây các bạn khởi động lại Discord là các bạn có thể tận hưởng các tính năng trên. Ngoài ra có 1 số plugin các bạn có thể xem thêm bao gồm:</p>
<ul>
<li>BiggerStreamPreview &#8211; xem stream với màn hình to hơn</li>
<li>CallTimer &#8211; hiển thị thời gian trong cuộc gọi</li>
<li>MemberCount &#8211; Đếm thành viên của 1 server</li>
<li>MessageLogger &#8211; lưu lại tin nhắn đã xóa hoặc chỉnh sửa</li>
<li>PermissionFreeView &#8211; loại bỏ hạn chế xem channel từ phía client</li>
<li>PermissionViewer &#8211; xem các role có quyền truy cập vào các channel (phù hợp với ShowHiddenChannel)</li>
<li>PlatformIndicator &#8211; hiển thị thiết bị mà người bạn chat đang sử dụng</li>
<li>ShowHiddenChannel &#8211; hiển thị channel bị ẩn</li>
<li>VolumeBooster &#8211; tăng max âm lượng cho người dùng (max 400%)</li>
</ul>
<p><strong>Các bạn có thể xem thêm</strong>: <a href="https://anonyviet.com/cach-thay-doi-status-tren-discord-lien-tuc-bang-node-js/">Cách thay đổi Status trên Discord liên tục bằng Node.js</a></p>
<h2>Câu hỏi thường gặp</h2>
<h3>Vencord là gì và nó có an toàn không?</h3>
<p>Vencord là một ứng dụng mở rộng cho Discord, cho phép bạn thêm các plugin và theme để tùy chỉnh trải nghiệm. Về độ an toàn, cần thận trọng khi cài đặt bất kỳ phần mềm nào từ nguồn bên ngoài.  Hãy đảm bảo tải xuống từ nguồn chính thức và quét phần mềm bằng phần mềm diệt virus trước khi sử dụng.</p>
<h3>Tôi có thể sử dụng tất cả tính năng của Discord Nitro bằng Vencord không?</h3>
<p>Không. Vencord cho phép bạn sử dụng một số tính năng của Discord Nitro, nhưng không phải tất cả.  Việc sử dụng &#8220;Fake Nitro&#8221; chỉ mô phỏng một số tính năng, không phải là phiên bản Nitro đầy đủ.</p>
<h3>Nếu tôi gặp sự cố khi cài đặt hoặc sử dụng Vencord, tôi phải làm gì?</h3>
<p>Hãy tham khảo tài liệu hỗ trợ của Vencord hoặc tìm kiếm câu trả lời trên các diễn đàn cộng đồng.  Bạn cũng có thể thử gỡ cài đặt và cài đặt lại Vencord.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/huong-dan-su-dung-discord-nitro-mien-phi/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Code tự động liệt kê tất cả đơn hàng Shopee và tổng số tiền đã chi tiêu</title>
		<link>https://anonyviet.com/code-tu-dong-liet-ke-tat-ca-don-hang-shopee-va-tong-so-tien-da-chi-tieu/</link>
					<comments>https://anonyviet.com/code-tu-dong-liet-ke-tat-ca-don-hang-shopee-va-tong-so-tien-da-chi-tieu/#respond</comments>
		
		<dc:creator><![CDATA[AnonyViet]]></dc:creator>
		<pubDate>Thu, 05 Oct 2023 15:07:51 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[shopee]]></category>
		<category><![CDATA[thống kê đơn hàng shopee]]></category>
		<category><![CDATA[thương mại điện tử]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=51482</guid>

					<description><![CDATA[Shopee là sàn thương mại điện tử lớn nhất ở Việt Nam tại thời điểm hiện tại. Mọi người đang mua sắm trên Shopee ngày càng nhiều. Với hàng triệu sản phẩm và chiết khấu hấp dẫn, rất dễ để mua quá nhiều mà không để ý đến tổng số tiền đã chi tiêu. Để [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Shopee là sàn thương mại điện tử lớn nhất ở Việt Nam tại thời điểm hiện tại. Mọi người đang mua sắm trên Shopee ngày càng nhiều. Với hàng triệu sản phẩm và chiết khấu hấp dẫn, rất dễ để mua quá nhiều mà không để ý đến tổng số tiền đã chi tiêu. Để giải quyết vấn đề này, tác giả <a href="https://www.facebook.com/nttkq" target="_blank" rel="noopener">NT Tòng</a> đã chia sẻ cách tự động liệt kê tất cả đơn hàng Shopee và tổng số tiền đã chi tiêu bằng code JS khá đơn giản như rất chi tiết.</p>
<p>Đoạn code này sẽ truy cập vào lịch sử đơn hàng Shopee của bạn, quét tất cả các đơn hàng và chi tiết đơn hàng. Sau đó nó sẽ tổng hợp dữ liệu và xuất ra một bảng chứa tất cả các đơn hàng và tổng số tiền đã chi tiêu.</p>
<h2><strong>Ưu điểm của Code thống kê đơn hàng Shopee:</strong></h2>
<ul>
<li>Tự động liệt kê tất cả đơn hàng mà không cần nhập thủ công</li>
<li>Tiết kiệm thời gian so với kiểm tra từng đơn hàng</li>
<li>Cho biết chính xác tổng số tiền đã chi tiêu, giúp quản lý chi tiêu tốt hơn</li>
</ul>
<h2>Code tự động liệt kê tất cả đơn hàng Shopee và tổng số tiền đã chi tiêu</h2>
<p>Để tự động liệt kê tất cả đơn hàng Shopee và tổng số tiền đã chi tiêu, trước tiên bạn cần <a href="https://shope.ee/B29IhMjxA" target="_blank" rel="noopener">đăng nhập vào tài khoản Shopee trên Website</a>.</p>
<p>Sau đó nhấn phím <strong>F12 (số 1)</strong> và chọn vào <strong>Tab Console (số 2) </strong>dán Code ở bên dưới vào và nhấn Enter.</p>
<p>Code bạn có thể Copy bên dưới hoặc Copy tại trang chính chủ của tác giả <strong>NT Tòng:</strong> <a href="https://pastecode.io/s/7cpgip63" target="_blank" rel="noopener">https://pastecode.io/s/7cpgip63</a></p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2023/10/code-thong-ke-don-hang-shopee.png" alt="Code tự động liệt kê tất cả đơn hàng Shopee và tổng số tiền đã chi tiêu 2" width="1275" height="560" title="Code tự động liệt kê tất cả đơn hàng Shopee và tổng số tiền đã chi tiêu 27"></p>
<p>&nbsp;</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">async function getOrders(offset, limit) {
    let url = "https://shopee.vn/api/v4/order/get_all_order_and_checkout_list?limit=" + limit + "&amp;offset=" + offset;
    var ordersData = (await (await fetch(url)).json()).data.order_data;

    var detailList = ordersData.details_list
    if (detailList) {
        return detailList;
    } else {
        return [];
    }
}
function _VietNamCurrency(number) {
    return new Intl.NumberFormat('vi-VN', { style: 'currency', currency: 'VND' }).format(number);
}
async function getAllOrders() {
    const limit = 20;
    let offset = 0;
    let allOrders = [];
    allOrders.push(
        [
            'Tên chung', 'Số lượng', 'Tổng tiền', 'Trạng thái', 'Tên shop', 'Chi tiết', 'Tiền gốc'
        ].join('\t')
    )
    let sum = 0;
    let count = 0;
    while (true) {
        let data = await getOrders(offset, limit);
        if (data.length == 0)
            break;
        for (const item of data) {
            const infoCard = item.info_card;
            const listType = item.list_type;
            let strListType;
            switch (listType) {
                case 3: strListType = "Hoàn thành"; break;
                case 4: strListType = "Đã hủy"; break;
                case 7: strListType = "Vận chuyển"; break;
                case 8: strListType = "Đang giao"; break;
                case 9: strListType = "Chờ thanh toán"; break;
                case 12: strListType = "Trả hàng"; break;
                default: strListType = "Không rõ"; break;
            }

            const productCount = infoCard.product_count;
            let subTotal = infoCard.subtotal / 1e5;
            count += productCount;
            const orderCard = infoCard.order_list_cards[0];
            const shopName = orderCard.shop_info.username + " - " + orderCard.shop_info.shop_name;
            const products = orderCard.product_info.item_groups;
            const productSumary = products.map(product =&gt; product.items.map(item =&gt; item.name + "--amount: " + item.amount + "--price: " + _VietNamCurrency(item.item_price)).join(', ')).join('; ');
            const name = products[0].items[0].name;
            if (listType != 4 &amp;&amp; listType != 12)
                sum += subTotal;
            else
                subTotal = 0;

            const subTotalNative = _VietNamCurrency(subTotal);
            allOrders.push(
                [
                    name, productCount, subTotalNative, strListType, shopName, productSumary, subTotal
                ].join('\t')
            );

        }
        console.log('Colected: ' + offset);
        offset += limit;
    }

    allOrders.push(
        [
            'Tổng cộng: ', count, _VietNamCurrency(sum)
        ].join('\t')
    );
    var text = allOrders.join('\r\n');
    document.write('&lt;textarea&gt;' + text + '&lt;/textarea&gt;');
}
getAllOrders();</pre>
<p>Sau khi nhấn <strong>Enter</strong>, ở bên màn hình chính sẽ hiển thị 1 <strong>khung nội dung (số 3). </strong>Bạn nhấn <strong>Ctrl + A</strong> để bôi đen toàn bộ nội dung trong ô</p>
<p>Sau đó mở Excel lên, nhấn <strong>Ctrl + V</strong> để dán nội dung thống kê đơn hàng Shopee vào file Excel. Khi đó bạn sẽ thấy tổng thể tất cả đơn hàng đã mua hoặc đã hủy, trong đó gồm:  Tên chung, Số lượng, Tổng tiền Trạng thái, Tên shop, Chi tiết, Tiền gốc. Khi kéo xuống cuối file Excel bạn sẽ thấy được tổng số tiền đã chi tiết của mình khi mua hàng trên Shopee.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2023/10/code-thong-ke-tong-so-tien-da-mua-shopee.jpg" alt="code thong ke tong so tien da mua shopee" width="726" height="435" title="Code tự động liệt kê tất cả đơn hàng Shopee và tổng số tiền đã chi tiêu 28"></p>
<p>Như vậy bạn có thể biết đó hồi xưa giờ đã mua bao nhiêu đơn hàng trên Shopee và số tiền đã chi tiêu. Mình thì hơn 100 triệu rồi nên cũng lên được hạng Vàng.</p>
<h2><strong>Shopee đánh giá hạng thành viên theo tiêu chí sau:</strong></h2>
<ol>
<li>Hạng Bạc: Người mua hàng hoàn thành 3 đơn hàng hoặc chi tiêu 3.000.000 đồng trong vòng 6 tháng.</li>
<li>Hạng Vàng: Người mua hàng hoàn thành 75 đơn hàng hoặc chi tiêu 5.000.000 đồng trong vòng 6 tháng.</li>
<li>Hạng Kim Cương: Người mua hàng hoàn thành 75 đơn hàng hoặc chi tiêu 20.000.000 đồng trong vòng 6 tháng.</li>
</ol>
<p>Để tìm hiểu Quyền lợi của từng thứ hạng thành viên, bạn có thể xem thông tin tại trang <a href="https://shope.ee/A9pVEHGVpY" target="_blank" rel="noopener">Shopee Rewards</a> được mô tả rất chi tiết.</p>
<h2>Câu hỏi thường gặp</h2>
<h3>Tôi có cần cài đặt phần mềm nào để sử dụng code này không?</h3>
<p>Không, bạn chỉ cần trình duyệt web và tài khoản Shopee.</p>
<h3>Code này có an toàn cho tài khoản Shopee của tôi không?</h3>
<p>Code này chỉ truy cập thông tin công khai từ lịch sử đơn hàng của bạn trên Shopee.  Tuy nhiên, chúng tôi khuyến cáo bạn chỉ sử dụng code từ nguồn tin cậy.</p>
<h3>Nếu tôi gặp lỗi khi chạy code thì sao?</h3>
<p>Hãy kiểm tra lại xem bạn đã đăng nhập vào Shopee trên website, mở đúng tab Console (F12) và dán chính xác code vào. Nếu vẫn gặp sự cố, hãy liên hệ với tác giả code để được hỗ trợ.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/code-tu-dong-liet-ke-tat-ca-don-hang-shopee-va-tong-so-tien-da-chi-tieu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Khai thác XSS với Javascript/JPEG Polyglot</title>
		<link>https://anonyviet.com/khai-thac-xss-voi-javascript-jpeg-polyglot/</link>
					<comments>https://anonyviet.com/khai-thac-xss-voi-javascript-jpeg-polyglot/#respond</comments>
		
		<dc:creator><![CDATA[Ellyx13]]></dc:creator>
		<pubDate>Thu, 07 Sep 2023 23:48:08 +0000</pubDate>
				<category><![CDATA[Basic Hacking]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JPEG]]></category>
		<category><![CDATA[Polyglot]]></category>
		<category><![CDATA[XSS]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=42615</guid>

					<description><![CDATA[Cũng giống như PNG, JPEG và DOC là các loại tệp hợp lệ, polyglot là sự kết hợp của hai loại tệp khác nhau. Ví dụ: Phar + JPEG (tệp lưu trữ PHP và tệp JPEG), GIFAR (tệp Gif và Rar) Javascript + JPEG,&#8230;. Các ứng dụng chỉ cho phép một số loại tệp nhất [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Cũng giống như PNG, JPEG và DOC là các loại tệp hợp lệ, polyglot là sự kết hợp của hai loại tệp khác nhau. Ví dụ: Phar + JPEG (tệp lưu trữ PHP và tệp JPEG), GIFAR (tệp Gif và Rar) Javascript + JPEG,&#8230;.</p>
<p><img decoding="async" class="aligncenter  size-full" src="https://anonyviet.com/wp-content/uploads/2022/07/1_XEFzRbN-eiQnxTujnE0mSA.jpg" alt="Khai thác XSS với Javascript/JPEG Polyglot" width="700" height="394" title="Khai thác XSS với Javascript/JPEG Polyglot 38"></p>
<p>Các ứng dụng chỉ cho phép một số loại tệp nhất định trên các tính năng như tải tệp lên và không cho phép các loại tệp khác như tệp .php hoặc .js vì chúng có thể cho phép kẻ tấn công tải lên các tệp độc hại trên ứng dụng. Các ứng dụng thực hiện kiểm tra đuổi file bằng phần mở rộng kép (.jpg.php) hoặc sử dụng byte rỗng trong phần mở rộng (.php%00.jpg), tên tệp (.htaccess, .config,&#8230;) và nếu chữ ký của tệp được tải lên cũng phù hợp với loại nội dung của nó.</p>
<p>Ứng dụng khác nhau sử dụng các phương pháp khác nhau và polyglot có thể được sử dụng để bỏ qua một số kiểm tra xác thực này.</p>
<h2>Kiến trúc JPEG</h2>
<p>Hình ảnh JPEG được biểu diễn dưới dạng một chuỗi các phân đoạn trong đó mỗi phân đoạn bắt đầu bằng header. Mỗi header bắt đầu bằng một số byte. Payload theo header là khác nhau tùy theo loại header. Các loại điểm đánh dấu JPEG phổ biến như được liệt kê bên dưới:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">0xffd8: “Start of Image”,
0xffe0: “Application Default Header”,
0xffdb: “Quantization Table”,
0xffc0: “Start of Frame”,
0xffc4: “Define Huffman Table”,
0xffda: “Start of Scan”,
0xffd9: “End of Image”</pre>
<p>Mỗi tệp nhị phân chứa một vài header. Chúng rất quan trọng đối với tệp vì chúng xác định thông tin cụ thể của tệp. Hầu hết các header được theo sau bởi thông tin độ dài. Điều này cho chúng ta biết phân đoạn cụ thể đó dài bao nhiêu.</p>
<p>Phần đầu của header hình ảnh chứa FF D8. Nếu chúng ta không nhìn thấy nó, chúng ta có thể cho rằng đây là một tệp khác. Một điểm đánh dấu quan trọng khác là FF D9 cho biết phần cuối của hình ảnh.</p>
<p>Để làm cho payload trông giống như một tệp JPEG hợp pháp, chúng ta sẽ thêm độ dài của header, header nhận xét, các byte rỗng vào pad và sau đó là vectơ tấn công javascript.</p>
<p>Giả sử vectơ tấn công là một <a href="https://anonyviet.com/10-website-giup-ban-thuc-hanh-ky-nang-hack-xss/">lỗ hổng XSS</a> <code>*/=alert(“XSS”)/*</code> Chuyển nó thành hệ thập lục phân sẽ như thế này.</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2022/07/1_tl0RmvkwMWXXLaZctB-WXA.jpg" alt="Khai thác XSS với Javascript/JPEG Polyglot 11" width="416" height="335" title="Khai thác XSS với Javascript/JPEG Polyglot 39"></p>
<p>Payload trong hex:</p>
<p><code>2A 2F 3D 61 6C 65 72 74 28 22 58 53 53 2E 22 29</code></p>
<p>Chúng ta có thể sử dụng một trình soạn thảo hex để đưa javascript vào metadata của hình ảnh. Điều này hoạt động được vì các trình duyệt diễn giải code khi chúng hiển thị hình ảnh thành HTML.</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2022/07/1_97wCGHxeo_yv9uJIUm4clA.jpeg" alt="Khai thác XSS với Javascript/JPEG Polyglot 12" width="473" height="266" title="Khai thác XSS với Javascript/JPEG Polyglot 40"></p>
<p>Mình đã nhận được một image test.jpg và dưới đây là hexdump của test.jpg. Với sự trợ giúp của trình soạn thảo ghex, chúng ta sẽ thay thế một số ký tự hex và lưu chúng.</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2022/07/1_HS9YL0FAk7wSPGplGsK83w.jpg" alt="Khai thác XSS với Javascript/JPEG Polyglot 13" width="1025" height="556" title="Khai thác XSS với Javascript/JPEG Polyglot 41"></p>
<p>Như chúng ta biết FF D8 là phần bắt đầu của hình ảnh, hai byte tiếp theo đại diện cho hai byte sắp tới, 00 10 đại diện cho độ dài của tiêu đề JPEG tương đương với số thập phân là 16 byte.</p>
<h2>Thời gian tiêm</h2>
<p>Chúng ta sẽ đưa payload vào giữa FF E0 và FF DB. Hãy bắt đầu với 2F 2A, là đại diện hex của /*</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2022/07/1_mv3lnPCjPR-XLFFiNVvtMA.jpg" alt="Khai thác XSS với Javascript/JPEG Polyglot 14" width="1025" height="81" title="Khai thác XSS với Javascript/JPEG Polyglot 42"></p>
<p>Chúng ta vừa thay thế 00 10 trước đây bằng 2F 2A và tương đương thập phân của hex 2F 2A là 12074 byte. Vì vậy, bây giờ <em class="iu">header </em>hình ảnh được thay đổi từ 16 byte thành 12074 byte.</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2022/07/1_5R_HeJdgeQV9vIUSFCilSw.jpg" alt="Khai thác XSS với Javascript/JPEG Polyglot 15" width="397" height="98" title="Khai thác XSS với Javascript/JPEG Polyglot 43"></p>
<p>Từ ảnh chụp màn hình ở trên, chúng ta có thể thấy kích thước của payload là 18 byte, vì vậy chúng ta phải xóa các byte còn lại bằng null là 12074–16–18 = 12040 byte.</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2022/07/1_a1tqwT8TDI_FENAxG7Q73w.jpg" alt="Khai thác XSS với Javascript/JPEG Polyglot 16" width="668" height="320" title="Khai thác XSS với Javascript/JPEG Polyglot 44"></p>
<p>Các lệnh trên sẽ đọc test.jpg, chèn payload vào giữa 2F 2A FF DB thay đổi hệ lục phân vào bộ đệm, thêm 12040 byte rỗng và ghi nó vào tệp test_new.jpg. Bây giờ trong trình soạn thảo ghex đóng thẻ comment trước FF D9</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2022/07/1__xpTlKAEluicg-GSmiHkLw.jpg" alt="Khai thác XSS với Javascript/JPEG Polyglot 17" width="493" height="347" title="Khai thác XSS với Javascript/JPEG Polyglot 45"></p>
<pre class="ma mb mc md gt me bt mf"><span id="2954" class="fw kc kd iu mg b do mh mi l mj" data-selectable-paragraph="">Code to execute image as javascript:-</span><span id="958e" class="fw kc kd iu mg b do mk ml mm mn mo mi l mj" data-selectable-paragraph="">&lt;script charset="ISO-8859-1" src="test_new.jpeg"&gt;</span></pre>
<p>Trên Firefox khi sử dụng bộ ký tự UTF-8, nó sẽ làm hỏng polyglot khi được đưa vào dưới dạng tập lệnh. Vì vậy, để tập lệnh hoạt động, chúng ta cần chỉ định bộ ký tự ISO-8859–1 trên thẻ script và nó thực thi tốt.</p>
<p>Và đây là khi test trên trình duyệt.</p>
<p><img decoding="async" class="size-full aligncenter" src="https://media.giphy.com/media/BSoVfZaXQWFjlseWrx/giphy.gif" width="800" height="480" alt="Khai thác XSS với Javascript/JPEG Polyglot 18" title="Khai thác XSS với Javascript/JPEG Polyglot 46"></p>
<p><strong class="lc iv">Polyglot</strong> <strong class="lc iv">javascript/jpeg</strong> của chúng ta đã hoạt động rồi đó.</p>
<p>Cập nhật: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1288361" target="_blank" rel="noopener">Mozilla đã sửa lỗi này trong Firefox 51</a> và các phiên bản sau.</p>
<h2>Câu hỏi thường gặp</h2>
<h3>Javascript/JPEG Polyglot là gì?</h3>
<p>Javascript/JPEG Polyglot là một tệp kết hợp cả mã Javascript và hình ảnh JPEG.  Nó được sử dụng để bỏ qua các cơ chế kiểm tra loại tệp, cho phép mã độc được tải lên dưới dạng hình ảnh.</p>
<h3>Tại sao kỹ thuật này hoạt động?</h3>
<p>Kỹ thuật này hoạt động vì một số trình duyệt có thể diễn giải mã Javascript được nhúng trong metadata của tệp JPEG, ngay cả khi tệp được tải lên dưới dạng hình ảnh.</p>
<h3>Có nguy cơ nào khi sử dụng Javascript/JPEG Polyglot không?</h3>
<p>Có.  Kỹ thuật này có thể được sử dụng để thực hiện các cuộc tấn công XSS (Cross-Site Scripting) và các cuộc tấn công khác.  Các nhà phát triển nên thực hiện các biện pháp bảo mật để ngăn chặn việc tải lên các tệp độc hại.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/khai-thac-xss-voi-javascript-jpeg-polyglot/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Code tạo Page tự động trên Facebook</title>
		<link>https://anonyviet.com/code-tao-page-tu-dong-tren-facebook/</link>
					<comments>https://anonyviet.com/code-tao-page-tu-dong-tren-facebook/#comments</comments>
		
		<dc:creator><![CDATA[AnonyViet]]></dc:creator>
		<pubDate>Sun, 30 Apr 2023 07:23:53 +0000</pubDate>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[code tạo fanpage]]></category>
		<category><![CDATA[code tạo page]]></category>
		<category><![CDATA[Fanpage]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[page]]></category>
		<category><![CDATA[tạo fanpage hàng loạt]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=46877</guid>

					<description><![CDATA[Code tạo Page tự động trên Facebook giúp bạn tạo nhanh hàng loạt Fanpage mà không cần phải tao thác từng click chuột. Chỉ cần dán đoạn Code dưới đây và thay vào bằng nội dung tên Fanpage, Code sẽ tự động ra Page Facebook cho bạn một cách đơn giản. Code tạo Page tự [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Code tạo Page tự động trên Facebook giúp bạn tạo nhanh hàng loạt Fanpage mà không cần phải tao thác từng click chuột. Chỉ cần dán đoạn Code dưới đây và thay vào bằng nội dung tên Fanpage, Code sẽ tự động ra Page Facebook cho bạn một cách đơn giản.</strong></p>
<h2>Code tạo Page tự động trên Facebook</h2>
<p><strong>Bước 1:</strong> Đăng nhập vào Facebook cá nhân của bạn trên máy tính.</p>
<p><strong>Bước 2:</strong> Nhấn nút <strong>F12</strong> để hiển thị Developer Tool.</p>
<p><strong>Bước 3:</strong> Chuyển qua Tab <strong>Console.</strong></p>
<p><strong>Bước 4:</strong> Nhấn vào biểu tượng hình tròn có dấu chéo.</p>
<figure id="attachment_46878" aria-describedby="caption-attachment-46878" style="width: 766px" class="wp-caption aligncenter"><img decoding="async" class="size-full " src="https://anonyviet.com/wp-content/uploads/2023/04/code-tao-page-facebook.jpg" alt="Code tạo Page tự động trên Facebook 22" width="766" height="344" title="Code tạo Page tự động trên Facebook 51"><figcaption id="caption-attachment-46878" class="wp-caption-text">code tạo page facebook</figcaption></figure>
<p>Tại ô trống bên dưới Console, nhập đoạn code dưới đây vào:</p>
<p>Bạn thay chỗ <code>var namepage = "Tên Fanpage sẽ được tạo ra"</code></p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">var spinr = require(["SiteData"]).__spin_r;
var spinB = require(["SiteData"]).__spin_b;
var spinT = require(["SiteData"]).__spin_t;
var jazoest = require(["SprinkleConfig"]).jazoest;
var fb_dtsg = require(["DTSGInitialData"]).token;
var uid = require(["CurrentUserInitialData"]).ACCOUNT_ID;
var lsd = require(["LSD"]).token;
var hsi = require(["SiteData"]).hsi;
var namepage = "AnonyViet - Page truyền thống";
var url = "https://www.facebook.com/api/graphql/";
var data = "av=" + uid + "&amp;__user=" + uid + "&amp;__a=1&amp;__req=2s&amp;__hs=19473.HYP%3Acomet_pkg.2.1..2.1&amp;dpr=1&amp;__ccg=GOOD&amp;__rev=" + spinr + "+&amp;__s=q1oivb%3Ajceyva%3Aetcul5&amp;__hsi=" + hsi + "+&amp;__dyn=&amp;__csr=&amp;__comet_req=15&amp;fb_dtsg=" + fb_dtsg + "&amp;jazoest=" + jazoest + "&amp;lsd=" + lsd + "&amp;__aaid=&amp;__spin_r=" + spinr + "&amp;__spin_b=trunk&amp;__spin_t=1682474861&amp;fb_api_caller_class=RelayModern&amp;fb_api_req_friendly_name=CometPageCreateMutation&amp;variables=%7B%22input%22%3A%7B%22categories%22%3A%5B%22164886566892249%22%5D%2C%22creation_source%22%3A%22comet%22%2C%22description%22%3A%22Code Reg Page%22%2C%22name%22%3A%22" + namepage + "%22%2C%22publish%22%3Atrue%2C%22ref%22%3A%22launch_point%22%2C%22actor_id%22%3A%22" + uid + "%22%2C%22client_mutation_id%22%3A%222%22%7D%7D&amp;server_timestamps=true&amp;doc_id=5094699180629920";
fetch(url, {
        method: 'POST',
        body: data,
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        }
    }).then(response =&gt; response.json())
    .then(data =&gt; {
        const page = data.data.page_create.page;
        const pageUrl = page.url;
        const successMsg = `Tạo Page: ${namepage }  Thành Công!`;
        alert(successMsg);
    })
    .catch(error =&gt; {
        console.error('erol', error);
    });</pre>
<figure id="attachment_46879" aria-describedby="caption-attachment-46879" style="width: 1187px" class="wp-caption aligncenter"><img decoding="async" class="size-full " src="https://anonyviet.com/wp-content/uploads/2023/04/code-js-tao-page-facebook-truyen-thong.png" alt="Code tạo Page tự động trên Facebook 23" width="1187" height="621" title="Code tạo Page tự động trên Facebook 52"><figcaption id="caption-attachment-46879" class="wp-caption-text">code js tao page facebook truyen thong</figcaption></figure>
<p>Nếu xuất hiện chữ Promise {&lt;pending&gt;} thì bạn gần như thành công, chờ 1 xíu sẽ thấy thông báo như hình bên dưới</p>
<figure id="attachment_46880" aria-describedby="caption-attachment-46880" style="width: 881px" class="wp-caption aligncenter"><img decoding="async" class="size-full " src="https://anonyviet.com/wp-content/uploads/2023/04/javascript-reg-page-facebook-auto.png" alt="Code tạo Page tự động trên Facebook 24" width="881" height="268" title="Code tạo Page tự động trên Facebook 53"><figcaption id="caption-attachment-46880" class="wp-caption-text">javascript reg page facebook auto</figcaption></figure>
<p>Trường hợp nếu bị báo lỗi màu đỏ VM&#8230;. ở dưới thì bạn thực hiện lại như sau:</p>
<p>Nhấn lại phím F12 để tắt Developer Tool đi</p>
<p>Nhấn vào biểu tượng Facebook ở góc trái để tải lại trang Facebook của bạn</p>
<p>Nhấn lại phím F12 để mở Developer Tool</p>
<p>Vào lại Tab Console, nhấn vào nút hình tròn có dấu gạch chéo</p>
<p>Khoan&#8230;</p>
<p>Bây giờ bạn sẽ thấy trên thanh địa chỉ là <code>m.facebook.com</code> hãy xóa chữ <code>m.</code> đi để quay lại là trang <code>facebook.com</code></p>
<p>Lại nhấn <strong>F12</strong> để tắt Developer Tool đi.</p>
<p>Tiếp tục <strong>tắt luôn Tab Facebook</strong> đang mở trên trình duyệt (Nhấn Ctrl + W)</p>
<p>Bây giờ bạn vào lại trang <a href="https://www.facebook.com/" target="_blank" rel="noopener">https://www.facebook.com/</a></p>
<p>Nhấn lại phím F12 để mở Developer Tool</p>
<p>Bây giờ lại tiếp tục nhấn vào nút hình tròn gạch chéo chỗ Console và dán Code tạo Page tự động trên Facebook vào ô bên dưới Console. Chờ một xíu nếu hiện thông báo là thành công.</p>
<p>Để kiểm tra Page vừa tạo bằng Code, bạn vào <a href="https://www.facebook.com/pages/?category=your_pages&amp;ref=bookmarks" target="_blank" rel="noopener">trang quản lý Page</a>. Kéo xuống dưới cuối sẽ thấy Page được được tạo tự động từ Code.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2023/04/code-tao-fanpage-hang-loat-.png" alt="code tao fanpage hang loat" width="723" height="380" title="Code tạo Page tự động trên Facebook 54"></p>
<p>Như vậy với code tạo fanpage hàng loạt bạn sẽ rất tiết kiệm thời gian khi có nhu cầu tạo nhiều Fanpage Facebook mà không cần click chuột. Code tạo Page Facebook tự động này hoàn toàn an toàn vì không gửi dữ liệu ra bên ngoài. Bạn có thể yên tâm sử dụng.</p>
<h2>Câu hỏi thường gặp</h2>
<h3>Tôi có cần cài đặt phần mềm nào để sử dụng code này không?</h3>
<p>Không, bạn không cần cài đặt bất kỳ phần mềm nào. Code này hoạt động trực tiếp trên trình duyệt web của bạn.</p>
<h3>Nếu code báo lỗi, tôi phải làm thế nào?</h3>
<p>Hãy thử làm theo các bước khắc phục sự cố được hướng dẫn trong bài viết, bao gồm tắt và mở lại Developer Tool, tải lại trang Facebook, và đảm bảo bạn đang ở trên trang facebook.com (không phải m.facebook.com).</p>
<h3>Code này có an toàn không? Có rủi ro gì không?</h3>
<p>Code này được cho là an toàn vì nó không gửi dữ liệu ra bên ngoài. Tuy nhiên, việc sử dụng các công cụ bên thứ ba luôn tiềm ẩn rủi ro.  Hãy sử dụng thận trọng và tự chịu trách nhiệm cho hành động của mình.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/code-tao-page-tu-dong-tren-facebook/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>ASCII Đức Phật phù hộ Code không Bug</title>
		<link>https://anonyviet.com/ascii-duc-phat-phu-ho-code-khong-bug/</link>
					<comments>https://anonyviet.com/ascii-duc-phat-phu-ho-code-khong-bug/#respond</comments>
		
		<dc:creator><![CDATA[AnonyViet]]></dc:creator>
		<pubDate>Mon, 13 Feb 2023 12:20:34 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[ascii]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[F12]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=45163</guid>

					<description><![CDATA[Gần đây ở một số Website khi bạn nhấn F12 để View Code sẽ thấy hình Đức Phật trong phần Code. Thật ra đây là hình được tạo ra từ các ký tự ASCII. Mình cũng đã có một số bài viết hướng dẫn tạo ảnh từ ASCII miễn phí. Nếu bạn là người theo [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Gần đây ở một số Website khi bạn nhấn F12 để View Code sẽ thấy hình Đức Phật trong phần Code. Thật ra đây là hình được tạo ra từ các ký tự <a href="https://anonyviet.com/?s=ascii">ASCII</a>. Mình cũng đã có một số bài viết hướng dẫn tạo ảnh từ ASCII miễn phí.</strong></p>
<p>Nếu bạn là người theo hệ tâm linh, có thể dùng các hình ASCII Đức Phật để đưa vào phần comment của Code như vậy, khi view code sẽ thấy hình được hiện lên mà không ảnh hưởng đến hoạt động của Website hay phần mềm.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2023/02/cach-tao-hinh-ascii-Duc-Phat-khi-nhan-F12.jpg" alt="cach tao hinh ascii Duc Phat khi nhan F12" width="540" height="357" title="ASCII Đức Phật phù hộ Code không Bug 56"></p>
<h2>Cách hiện hình đức Phật khi nhấn F12 trên Website</h2>
<p>Một đích của việc nhấn F12 là để xem Source Code Website. Như vậy bạn hoàn toàn có thể đưa hình Đức Phật vào file Javascript, sau đó gọi file này lên. Do các hình bên dưới đều có dấu <code>//</code> ở đầu (ký hiệu comment) nên hình sẽ được hiện lên mà không ảnh hưởng giao diện của Web. Bây giờ chúng ta sẽ làm như sau:</p>
<p>Chọn một trong các hình bên dưới và bỏ giữa vào đoạn <code>&lt;script&gt;&lt;/script&gt;</code> là xong. Ví dụ:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">&lt;script&gt;
//   _
//  (")
// (-"-)
//(_`/._)
&lt;/script&gt;</pre>
<p>ASCII Đức Phật phù hộ Code không bao giờ Bug.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">//                       _oo0oo_
//                      o8888888o
//                      88" . "88
//                      (| -_- |)
//                      0\  =  /0
//                    ___/`---'\___
//                  .' \\|     |// '.
//                 / \\|||  :  |||// \
//                / _||||| -:- |||||- \
//               |   | \\\  -  /// |   |
//               | \_|  ''\---/''  |_/ |
//               \  .-\__  '-'  ___/-. /
//             ___'. .'  /--.--\  `. .'___
//          ."" '&lt;  `.___\_&lt;|&gt;_/___.' &gt;' "".
//         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
//         \  \ `_.   \_ __\ /__ _/   .-` /  /
//     =====`-.____`.___ \_____/___.-`___.-'=====
//                       `=---='
//
//     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//            Phật phù hộ, không bao giờ BUG
//     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</pre>
<p>Đức Phật dưới cây bồ đề</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">//    ---==Đức Phật ngồi dưới cây Âm Dương==---
//                         
//
//       69696969                         69696969
//    6969    696969                   696969    6969
//  969    69  6969696               6969  6969     696
// 969        696969696             696969696969     696
//969        69696969696           6969696969696      696
//696      9696969696969           969696969696       969
// 696     696969696969             969696969        969
//  696     696  96969      _=_      9696969  69    696
//    9696    969696      q(-_-)p      696969    6969
//       96969696         '_) (_`         69696969
//          96            /__/  \            69
//          69          _(&lt;_   / )_          96
//         6969        (__\_\_|_/__)        9696
//
</pre>
<p>ASCII Phật ngồi</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢀⠤⠒⠒⠢⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀  ⢀⡯⠴⠶⠶⠒⠢⢇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀  ⡎⡤⠖⠂⡀⠒⡢⡌⢣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣷⠯⢭⣵⠑⣯⡭⢹⡎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡆⠀⢠⣤⠄⠀⣸⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣷⢄⣈⣟⢁⢴⠿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⣀⢴⠒⡝⠁⠬⠛⣚⡩⠔⠉⢻⠒⣦⢄⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⢀⢎⠁⡌⢰⠁⠀⠀⠀⠀⠀⠀⠀⢸⠀⡛⠀⡷⡀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⣀⣾⣷⣠⠃⢸⠀⠀⠀⠀⠀⠀⠀⠀⣸⠀⢹⢰⠁⢳⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⢸⡿⠟⢿⢳⡏⠀⠀⠀⠀⠀⠀⠀⢠⡟⣶⣘⢞⡀⠘⡆⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⡼⢺⣯⢹⢰⡏⠒⠒⠒⠊⠀⠐⢒⣾⣹⣸⢹⣾⡇⠀⢣⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⣏⣾⠃⠀⣼⡟⣢⣀⡠⠤⣀⡰⢋⡝⣱⣹⠇⣿⣧⣴⠸⡄⠀⠀⠀⠀
//⠀⠀⠀⠀⡏⡞⡆⢠⡇⣟⠭⡒⠭⠭⠤⠒⣡⠔⣽⡇⣂⣿⠟⠃⢀⡇⠀⠀⠀⠀
//⠀⠀⠀⠀⢧⡇⡧⢫⠃⣷⣽⣒⣍⣉⣈⡩⢴⠾⡳⢡⢸⣛⣪⡗⢴⠁⠀⠀⠀⠀
//⠀⠀⠀⠀⣼⢃⠷⣸⣤⣯⢞⡥⢍⣐⣂⠨⠅⠊⡠⢃⣟⢏⠹⣎⣆⡀⠀⠀⠀⠀
//⠀⡠⠶⠚⠛⠛⠽⢹⡟⡖⢓⠿⣝⠓⠒⠒⠒⠭⢤⠗⣯⣩⣽⣿⠷⣾⣿⢷⣆⠀
//⠜⣌⠢⢄⣀⡀⠀⡞⢡⠘⢄⠑⠨⢉⣀⠉⣀⠄⢊⠜⡸⠛⣿⡍⠉⠉⠈⢁⠁⠇
//⠈⢯⡓⠦⠤⠬⠭⣵⠀⠱⢄⠑⠲⠤⠤⠤⠤⠒⢁⡔⠁⢠⣏⣡⣤⣤⡶⠜⣻⠃
//⠀⠈⠙⠛⠒⠛⠻⠯⠕⠤⣀⣉⣓⣒⣂⣒⣒⣊⣁⣠⠔⠛⠂⠒⠛⠓⠛⠚⠉⠀</pre>
<p>ASCII Phật pháp nhiệm màu</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">//
//_      `-._     `-.     `.   \      :      /   .'     .-'     _.-'      _
// `--._     `-._    `-.    `.  `.    :    .'  .'    .-'    _.-'     _.--'
//      `--._    `-._   `-.   `.  \   :   /  .'   .-'   _.-'    _.--'
//`--.__     `--._   `-._  `-.  `. `. : .' .'  .-'  _.-'   _.--'     __.--'
//__    `--.__    `--._  `-._ `-. `. \:/ .' .-' _.-'  _.--'    __.--'    __
//  `--..__   `--.__   `--._ `-._`-.`_=_'.-'_.-' _.--'   __.--'   __..--'
//--..__   `--..__  `--.__  `--._`-q(-_-)p-'_.--'  __.--'  __..--'   __..--
//      ``--..__  `--..__ `--.__ `-'_) (_`-' __.--' __..--'  __..--''
//...___        ``--..__ `--..__`--/__/  \--'__..--' __..--''        ___...
//      ```---...___    ``--..__`_(&lt;_   _/)_'__..--''    ___...---'''
//```-----....._____```---...___(__\_\_|_/__)___...---'''_____.....-----'''
//</pre>
<p>ASCII khuôn mặt Phật</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">//⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣉⡉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠚⠛⠛⠛⠛⠂⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⣠⣴⣶⣾⣿⣿⣿⣿⣶⣶⣦⣀⠀⠀⠀⠀⠀
//⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠀
//⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀
//⠀⠀⣾⣿⡿⠁⠀⠈⠙⠛⠻⠛⠛⠉⠀⠀⢻⣿⣿⣧⠀⠀
//⣠⣴⣿⡿⠁⠀⠀⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠹⣿⣿⣤⣄
//⣿⡉⠛⠁⠀⠀⠀⠀⠀⠀⠻⠃⠀⠀⠀⠀⠀⠀⠙⠛⢩⣿
//⢹⡇⠀⣤⠀⠠⣤⣠⣤⠄⠀⠀⢤⣄⣠⡤⠀⢠⡀⢠⣿⠁
//⢸⣇⠀⢻⡇⠀⠈⠉⠁⠀⠀⠀⠀⠉⠉⠀⢀⣿⠃⢸⣿⠀
//⠸⣿⠀⢸⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⠀⢸⡿⠀
//⠀⢿⣆⣾⠟⣿⡀⠀⠐⠶⠶⠶⠖⠀⠀⣼⠏⢿⣦⣾⠃⠀
//⠀⠀⠉⠁⠀⠈⠻⣦⡀⠀⠀⠀⢀⣠⣾⠋⠀⠀⠉⠁⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⠶⠿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀</pre>
<p>Hình Phật đơn giản</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">//       _=_
//     q(-_-)p
//     '_) (_`
//     /__/  \
//   _(&lt;_   / )_
//  (__\_\_|_/__)
//
//       _=_
//     q(-_-)p
//     ,&lt;___/\
//    (&lt;_`. _/)
//   (_\_\_|_/_)

//     q(-_-)p
//     ,&lt;___/\
//    (&lt;_`.__/)
//   (_\_\_\_/_)
//
//     q(-_-)p
//    ,(&lt;__/ \
//    (_\_\_\_/)</pre>
<p>Các hình ASCII nhỏ</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">//   _
//  (")
// (-"-)
//(_`/._)   
//
//   _
//  (")
// (/ \)
//(_`/._)   
//
//     _
//    (-)
//  _(   )_
//  (_`/._)</pre>
<h2>Câu hỏi thường gặp</h2>
<h3>Tôi có thể sử dụng các hình ảnh ASCII Đức Phật này như thế nào?</h3>
<p>Bạn có thể chèn các đoạn mã ASCII Đức Phật vào phần comment (bắt đầu bằng //) trong code của website hoặc phần mềm. Điều này sẽ hiển thị hình ảnh khi người dùng kiểm tra mã nguồn (nhấn F12) mà không ảnh hưởng đến chức năng của website/phần mềm.</p>
<h3>Có ảnh hưởng gì đến hiệu năng website/phần mềm khi sử dụng các hình ảnh ASCII này không?</h3>
<p>Không, vì các hình ảnh được đặt trong phần comment của code nên chúng sẽ không được trình duyệt xử lý, do đó không ảnh hưởng đến hiệu năng website/phần mềm.</p>
<h3>Tôi có thể tìm thấy thêm các hình ảnh ASCII Đức Phật ở đâu?</h3>
<p>Bài viết đã cung cấp một số hình ảnh ASCII Đức Phật. Bạn có thể tìm kiếm thêm trên internet bằng từ khóa &#8220;ASCII art Buddha&#8221; hoặc &#8220;ASCII art Đức Phật&#8221;.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/ascii-duc-phat-phu-ho-code-khong-bug/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cách dùng InAppBrowser để kiểm tra trình duyệt có theo dõi bạn không?</title>
		<link>https://anonyviet.com/cach-dung-inappbrowser-de-kiem-tra-ung-dung/</link>
					<comments>https://anonyviet.com/cach-dung-inappbrowser-de-kiem-tra-ung-dung/#respond</comments>
		
		<dc:creator><![CDATA[AnonyViet]]></dc:creator>
		<pubDate>Mon, 22 Aug 2022 12:52:29 +0000</pubDate>
				<category><![CDATA[Phần mềm điện thoại]]></category>
		<category><![CDATA[bảo mật]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[InAppBrowser]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[theo dõi người dùng]]></category>
		<category><![CDATA[trình duyệt]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=43292</guid>

					<description><![CDATA[Một trang web có tên InAppBrowser đã được Felix Krause tạo ra giúp người dùng có thể biết được trình duyệt đang thu thập những thông tin gì từ người dùng. Gần đây, nhà nghiên cứu bảo mật Felix Krause đã phát hiện trình duyệt tích hợp trong các ứng dụng mạng xã hội như [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Một trang web có tên InAppBrowser đã được Felix Krause tạo ra giúp người dùng có thể biết được trình duyệt đang thu thập những thông tin gì từ người dùng. Gần đây, nhà nghiên cứu bảo mật Felix Krause đã phát hiện trình duyệt tích hợp trong các ứng dụng mạng xã hội như Tiktok, Facebook… có đính kèm mã Javascript theo dõi người dùng, nguy hiểm hơn có ứng dụng có cả chức năng Keylog có thể ghi lại những gì bạn gõ trên bàn phím. Mình sẽ hướng dẫn bạn cách dùng InAppBrowser để kiểm tra trình duyệt có theo dõi bạn không?</strong></p>
<h2 class="ads_google_ads">Cách dùng InAppBrowser để kiểm tra trình duyệt có theo dõi bạn không?</h2>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/08/cach-dung-InAppBrowser-kiem-tra-trinh-duyet.png" alt="cach dung InAppBrowser kiem tra trinh duyet" width="522" height="347" title="Cách dùng InAppBrowser để kiểm tra trình duyệt có theo dõi bạn không? 58"></p>
<p>Theo như thử nghiệm của InAppBrowser, khi dùng TikTok để mở bất kỳ trang web nào trong ứng dụng, sẽ nhập mã theo dõi có thể giám sát tất cả các lần gõ bàn phím, bao gồm cả mật khẩu và tất cả các lần nhấn. Như vậy bạn hoàn toàn có thể bị lộ tài khoản đăng nhập khi dùng TikTok, rất nguy hiểm.</p>
<p>Cách dùng InAppBrowser để liệt kê các lệnh JavaScript được thực thi bởi ứng dụng trên iOS:</p>
<p>Mở ứng dụng (trình duyệt) để phân tích:</p>
<ol>
<li>Chia sẻ link <a href="https://InAppBrowser.com" target="_blank" rel="noopener">https://InAppBrowser.com</a> ở đâu đó bên trong ứng dụng (ví dụ: gửi tin nhắn trực tiếp cho bạn bè hoặc đăng lên New Feed, bình luận)</li>
<li>Nhấn vào link bạn mới chia sẻ</li>
<li>Đọc báo cáo trên màn hình, sẽ cho bạn biết trình duyệt này đang theo dõi bạn những nội dung gì</li>
</ol>
<p>Tác giả InAppBrowser đã sử dụng công cụ này để phân tích các ứng dụng iOS phổ biến nhất có trình duyệt trong ứng dụng của riêng chúng. Dưới đây là kết quả Felix Krause đã tìm thấy.</p>
<p>Đối với phân tích này, tác giả đã loại trừ tất cả các trình duyệt iOS của bên thứ ba (Chrome, Brave, v.v.), vì chúng sử dụng JavaScript để cung cấp một số chức năng như trình quản lý mật khẩu. Apple yêu cầu tất cả các ứng dụng trình duyệt iOS của bên thứ ba phải sử dụng công cụ Safari WebKit.</p>
<p>Lưu ý quan trọng: InAppBrowser không thể phát hiện tất cả các lệnh JavaScript được thực thi, do đó có thể có sai sót xảy ra.</p>
<h3><strong>Ứng dụng iOS có Trình duyệt trong ứng dụng riêng</strong></h3>
<ul>
<li><strong>Tùy chọn để mở trong trình duyệt mặc định</strong>: Ứng dụng có cung cấp tính năng để mở liên kết hiện được hiển thị trong trình duyệt mặc định không?</li>
<li><strong>Sửa đổi trang</strong>: Ứng dụng có đưa mã JavaScript vào các trang web của bên thứ ba để sửa đổi nội dung của nó không? Bao gồm việc thêm mã theo dõi (như đầu vào, lựa chọn văn bản, click, v.v.), đưa vào các tệp JavaScript bên ngoài, cũng như tạo các phần tử HTML mới.</li>
<li><strong>Tìm nạp metadata</strong>: Ứng dụng có chạy mã JavaScript để tìm nạp metadata trang web không? Việc này không gây ra bất kỳ rủi ro bảo mật hoặc quyền riêng tư thực sự nào.</li>
<li><strong>JS</strong>: Một liên kết đến mã JavaScript, có thể có mã khác được thực thi.</li>
</ul>
<table width="720">
<tbody>
<tr>
<td><strong>Ứng dụng</strong></td>
<td><strong>Tùy chọn để mở trong trình duyệt mặc định</strong></td>
<td><strong>Sửa đổi trang</strong></td>
<td><strong>Tìm nạp Metada</strong></td>
<td><strong>JS</strong></td>
<td><strong>Ngày cập nhật</strong></td>
</tr>
<tr>
<td>TikTok</td>
<td>⛔️</td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/tiktok.png" target="_blank" rel="noopener"><strong>Có</strong></a></td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/tiktok.png" target="_blank" rel="noopener"><strong>Có</strong></a></td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_js/tiktok.js" target="_blank" rel="noopener">.js</a></td>
<td>2022-08-18</td>
</tr>
<tr>
<td>Instagram</td>
<td>✅</td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/instagram.png" target="_blank" rel="noopener"><strong>Có</strong></a></td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/instagram.png" target="_blank" rel="noopener"><strong>Có</strong></a></td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_js/instagram.js" target="_blank" rel="noopener">.js</a></td>
<td>2022-08-18</td>
</tr>
<tr>
<td>FB Messenger</td>
<td>✅</td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/messenger.png" target="_blank" rel="noopener"><strong>Có</strong></a></td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/messenger.png" target="_blank" rel="noopener"><strong>Có</strong></a></td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_js/messenger.js" target="_blank" rel="noopener">.js</a></td>
<td>2022-08-18</td>
</tr>
<tr>
<td>Facebook</td>
<td>✅</td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/facebook.png" target="_blank" rel="noopener"><strong>Có</strong></a></td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/facebook.png" target="_blank" rel="noopener"><strong>Có</strong></a></td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_js/facebook.js" target="_blank" rel="noopener">.js</a></td>
<td>2022-08-18</td>
</tr>
<tr>
<td>Amazon</td>
<td>✅</td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/amazon.png" target="_blank" rel="noopener"><strong>Không có</strong></a></td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/amazon.png" target="_blank" rel="noopener"><strong>Có</strong></a></td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_js/amazon.js" target="_blank" rel="noopener">.js</a></td>
<td>2022-08-18</td>
</tr>
<tr>
<td>Snapchat</td>
<td>✅</td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/snapchat.png" target="_blank" rel="noopener"><strong>Không có</strong></a></td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/snapchat.png" target="_blank" rel="noopener"><strong>Không có</strong></a></td>
<td></td>
<td>2022-08-18</td>
</tr>
<tr>
<td>Người hùng Robin Hood</td>
<td>✅</td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/robinhood.png" target="_blank" rel="noopener"><strong>Không có</strong></a></td>
<td><a href="https://krausefx.com/assets/posts/inappbrowser/app_screenshots/robinhood.png" target="_blank" rel="noopener"><strong>Không có</strong></a></td>
<td></td>
<td>2022-08-18</td>
</tr>
</tbody>
</table>
<p>Bạn có thể click vào từng Có/Không có để xem kết quả InAppBrowser phân tích từ trình duyệt của các ứng dụng trên.</p>
<h2>Câu hỏi thường gặp</h2>
<h3>InAppBrowser là gì và nó hoạt động như thế nào?</h3>
<p>InAppBrowser là một công cụ do Felix Krause tạo ra để kiểm tra xem trình duyệt tích hợp trong các ứng dụng di động có theo dõi hoạt động của người dùng hay không. Nó hoạt động bằng cách phân tích các lệnh JavaScript được thực thi khi mở một liên kết cụ thể thông qua trình duyệt trong ứng dụng.</p>
<h3>Tôi có thể sử dụng InAppBrowser trên hệ điều hành nào?</h3>
<p>Bài viết tập trung vào việc sử dụng InAppBrowser trên iOS.  Tuy nhiên, nguyên tắc hoạt động của nó có thể được áp dụng cho các hệ điều hành khác, tùy thuộc vào khả năng truy cập và phân tích mã JavaScript của ứng dụng.</p>
<h3>InAppBrowser có phát hiện tất cả các hoạt động theo dõi không?</h3>
<p>Không, InAppBrowser không thể phát hiện tất cả các hoạt động theo dõi. Có thể có một số lệnh JavaScript hoặc kỹ thuật theo dõi mà công cụ này bỏ sót.  Do đó, kết quả chỉ mang tính tham khảo.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/cach-dung-inappbrowser-de-kiem-tra-ung-dung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>5 bài tập Code giúp bạn tăng kinh nghiệm lập trình Web</title>
		<link>https://anonyviet.com/5-bai-tap-code-giup-ban-tang-kinh-nghiem-lap-trinh-web/</link>
					<comments>https://anonyviet.com/5-bai-tap-code-giup-ban-tang-kinh-nghiem-lap-trinh-web/#respond</comments>
		
		<dc:creator><![CDATA[Ellyx13]]></dc:creator>
		<pubDate>Mon, 15 Aug 2022 00:21:44 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[kỹ năng code]]></category>
		<category><![CDATA[lập trình web]]></category>
		<category><![CDATA[phát triển web]]></category>
		<category><![CDATA[thiết kế web]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=42674</guid>

					<description><![CDATA[Hiện nay, nhu cầu tạo trang Web rất nhiều, do đó số lượng lập trình viên Website cũng tăng lên đáng kể. Nhưng để nâng cao kinh nghiệm trong lập trình Web, bạn cần phải thực hành thường xuyên và nghiên cứu Code. Hãy thử sức với 5 Project dưới đây, bạn sẽ cải thiện [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Hiện nay, nhu cầu tạo trang Web rất nhiều, do đó số lượng lập trình viên Website cũng tăng lên đáng kể. Nhưng để nâng cao kinh nghiệm trong lập trình Web, bạn cần phải thực hành thường xuyên và nghiên cứu Code. Hãy thử sức với 5 Project dưới đây, bạn sẽ cải thiện kỹ năng Code của mình.</strong></p>
<p><img decoding="async" class="aligncenter  size-full" src="https://anonyviet.com/wp-content/uploads/2022/07/1_tQqvbxnmRHcv6YTdc4K3VA-1.jpeg" alt="5 dự án giúp bạn trở thành nhà phát triển web giỏi hơn" width="960" height="540" title="5 bài tập Code giúp bạn tăng kinh nghiệm lập trình Web 60"></p>
<p>Làm việc trên các dự án phát triển web là cách tiếp cận lý tưởng để có được kinh nghiệm trong lĩnh vực này nếu bạn cũng quan tâm đến nó. Các kỹ năng của bạn sẽ cải thiện khi bạn thực hành và thử nghiệm với các dự án phát triển web.</p>
<h2>5 bài tập Code giúp bạn tăng kinh nghiệm lập trình Web</h2>
<h3>1. Tạo đồng hồ</h3>
<p>Đây là một ứng dụng đơn giản mà bạn có thể lập trình bằng HTML và CSS. Trong dự án này, bạn phải thiết kế một trang web đơn giản và sau đó cập nhật thời gian.</p>
<p>Để làm cho nó hấp dẫn hơn, bạn có thể thêm các tính năng bắt đầu, dừng. Ngoài ra, bạn có thể thêm chức năng báo thức, chức năng nhạc chuông cho báo thức,&#8230;</p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-default-tab="html,result" data-slug-hash="MWOWyNJ" data-user="rainboestrykr">See the Pen <a href="https://codepen.io/rainboestrykr/pen/MWOWyNJ" target="_blank" rel="noopener"><br />
Clock</a> by Abhiraj Bhowmick (<a href="https://codepen.io/rainboestrykr" target="_blank" rel="noopener">@rainboestrykr</a>)<br />
on <a href="https://codepen.io" target="_blank" rel="noopener">CodePen</a>.</p>
<p><script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></p>
<h3>2. Ứng dụng Thời tiết/Tin tức</h3>
<p>Tạo ứng dụng thời tiết/tin tức sẽ kiểm tra kỹ năng của bạn và trong dự án này bạn sẽ tăng kinh nghiệm lập trình Web, bạn có thể sử dụng hai API:</p>
<ul>
<li>Một để biết vị trí của người dùng.</li>
<li>Một cách khác để tìm nạp dữ liệu thời tiết dựa trên vị trí của người dùng.</li>
</ul>
<p>Là một người mới bắt đầu, có dự án này trong sơ yếu lý lịch của bạn sẽ giúp bạn nổi bật giữa đám đông.</p>
<h3 id="1002" class="lh li ja bn lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me gc">3. To-do list &#8211; Danh sách công việc</h3>
<p>Đây là một trong những dự án đơn giản và tốt nhất mà bạn có thể phát triển bằng cách sử dụng HTML, CSS và JS. Dự án này sẽ giúp bạn lưu trữ danh sách việc cần làm và nó sẽ được lưu trong bộ nhớ cục bộ của bạn, có thể được truy cập bất cứ lúc nào.</p>
<p>Hơn nữa, ngay cả khi bạn lưu trữ ứng dụng, dữ liệu cũng sẽ được lưu trữ trong bộ nhớ cục bộ của máy tính của người dùng để duy trì quyền riêng tư.</p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-default-tab="html,result" data-slug-hash="mdqdPvv" data-user="rainboestrykr">See the Pen <a href="https://codepen.io/rainboestrykr/pen/mdqdPvv" target="_blank" rel="noopener"><br />
To-do app</a> by Abhiraj Bhowmick (<a href="https://codepen.io/rainboestrykr" target="_blank" rel="noopener">@rainboestrykr</a>)<br />
on <a href="https://codepen.io" target="_blank" rel="noopener">CodePen</a>.</p>
<p><script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></p>
<h3>4. Form &#8211; Biểu mẫu</h3>
<p>HTML, CSS và JavaScript đều có thể được sử dụng để tạo biểu mẫu. Bạn có thể tạo ra một thiết kế tuyệt đẹp với một chút nỗ lực. Bạn có thể bắt đầu với một dự án khiêm tốn, chẳng hạn như thiết kế biểu mẫu khảo sát hoặc biểu mẫu tư vấn, tùy thuộc vào loại hình kinh doanh bạn đang bắt đầu.</p>
<p>Tên, địa chỉ, e-mail, ngày sinh, số điện thoại và các thông tin thích hợp khác có thể được bao gồm trong biểu mẫu. Bạn có thể gửi biểu mẫu cho bạn bè của mình và xem họ nói gì.</p>
<p>Các công ty ngày nay sử dụng các mẫu khảo sát để thu thập thông tin từ các đối tượng mục tiêu của họ. Ngoài ra, có một dự án trang đích trong sơ yếu lý lịch của bạn cũng sẽ là một điểm cộng.</p>
<h3>5. Tung đồng xu</h3>
<p>Đây là mục không mong đợi nhất trong danh sách nhưng nó có thể rất hữu ích về lâu dài. Bạn có thể tìm hiểu về cách sử dụng phương pháp ngẫu nhiên để lấy kết quả ngẫu nhiên từ một mảng các tùy chọn.</p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-default-tab="html,result" data-slug-hash="ExbxyvR" data-user="rainboestrykr">See the Pen <a href="https://codepen.io/rainboestrykr/pen/ExbxyvR" target="_blank" rel="noopener"><br />
CoinFlip</a> by Abhiraj Bhowmick (<a href="https://codepen.io/rainboestrykr" target="_blank" rel="noopener">@rainboestrykr</a>)<br />
on <a href="https://codepen.io" target="_blank" rel="noopener">CodePen</a>.</p>
<p><script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></p>
<h2>Kết luận</h2>
<p>Đây là 5 bài tập Code giúp bạn tăng kinh nghiệm lập trình Web hàng đầu. Tất cả các dự án được liệt kê đều thân thiện với người mới bắt đầu và làm việc trên chúng sẽ giúp bạn cải thiện khả năng phát triển web và nâng cao sự nghiệp của mình.</p>
<p>Ngoài ra, bạn cũng có thể xem top 7 trang web tốt nhất để học lập trình web <a href="https://anonyviet.com/top-7-trang-web-tot-nhat-de-hoc-lap-trinh-web/">tại đây</a>.</p>
<h2>Câu hỏi thường gặp</h2>
<h3>Tôi có cần kiến thức lập trình sâu rộng để bắt đầu các bài tập này không?</h3>
<p>Không cần! Các bài tập được thiết kế thân thiện với người mới bắt đầu, giúp bạn học hỏi và phát triển kỹ năng lập trình web một cách hiệu quả.</p>
<h3>Làm thế nào để tôi có thể tìm thêm tài liệu hỗ trợ cho các bài tập?</h3>
<p>Bài viết đã cung cấp các ví dụ CodePen trực quan.  Bạn cũng có thể tìm kiếm thêm tài liệu trực tuyến bằng các từ khóa liên quan đến từng bài tập.</p>
<h3>Sau khi hoàn thành các bài tập này, tôi sẽ đạt được gì?</h3>
<p>Bạn sẽ cải thiện kỹ năng lập trình web, xây dựng portfolio dự án và tự tin hơn khi ứng tuyển vào các vị trí liên quan.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/5-bai-tap-code-giup-ban-tang-kinh-nghiem-lap-trinh-web/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cách ẩn Code HTML không cho người khác View Source</title>
		<link>https://anonyviet.com/cach-an-code-html-khong-cho-nguoi-khac-view-source/</link>
					<comments>https://anonyviet.com/cach-an-code-html-khong-cho-nguoi-khac-view-source/#respond</comments>
		
		<dc:creator><![CDATA[Ellyx13]]></dc:creator>
		<pubDate>Tue, 28 Jun 2022 23:45:22 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[ẩn mã nguồn]]></category>
		<category><![CDATA[ẩn Source Code]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[view source]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=42148</guid>

					<description><![CDATA[Bạn mới viết ra một đoạn code HTML cực hay, nhưng lại không muốn người khác copy mã nguồn của mình. Bằng một số thủ thuật nhỏ dưới đây sẽ giúp các lập trình viên ẩn Code HTML trên Website của mình tránh bị người khác copy. &#160; Cách ẩn Code HTML không cho người [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Bạn mới viết ra một đoạn code HTML cực hay, nhưng lại không muốn người khác copy mã nguồn của mình. Bằng một số thủ thuật nhỏ dưới đây sẽ giúp các lập trình viên ẩn Code HTML trên Website của mình tránh bị người khác copy.</strong></p>
<p><img decoding="async" class="aligncenter  size-full" src="https://anonyviet.com/wp-content/uploads/2022/06/2022-06-20_20-31.jpg" alt="Cách ẩn mã nguồn HTML không cho người khác viewsource" width="602" height="400" title="Cách ẩn Code HTML không cho người khác View Source 64"></p>
<p>&nbsp;</p>
<h2>Cách ẩn Code HTML không cho người khác viewsource</h2>
<h3>Vô hiệu hoá phím Ctrl và F12 bằng javascript</h3>
<p>Phím F12 dùng để Mở Công cụ dành cho nhà phát triển của Chrome (<a href="https://anonyviet.com/3-meo-hay-de-su-dung-chrome-devtools-cho-nguoi-khong-biet-code/"><strong class="bn nf">Chrome Developer Tools</strong></a>). <strong class="bn nf">Chrome Developer Tools</strong> cung cấp một bộ công cụ mà bạn có thể sử dụng để xem mã nguồn và hành vi của trang web.</p>
<p>Phím <strong>Ctrl</strong> chủ yếu được sử dụng kết hợp với các phím khác để xem mã nguồn của web.</p>
<p>Ví dụ:</p>
<p>Ctrl + S: Nó được sử dụng để lưu toàn bộ trang web.</p>
<p>Ctrl + U: Nó được sử dụng để mở mã nguồn của web trong tab mới.</p>
<p>Bạn có thể sử dụng code này trong thẻ script để vô hiệu hoá phím Ctrl và F12.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">document.addEventListener("keydown", function (event){
    if (event.ctrlKey){
       event.preventDefault();
    }
    if(event.keyCode == 123){
       event.preventDefault();
    }
});</pre>
<h3>Vô hiệu hóa nhấp chuột phải bằng cách sử dụng javascript</h3>
<p>Bằng cách nhấp chuột phải vào trang web, nó sẽ cung cấp cho bạn tùy chọn để xem và kiểm tra mã nguồn của trang web.</p>
<p>Bạn có thể sử dụng code này trong thẻ script để vô hiệu hóa nhấp chuột phải.</p>
<blockquote>
<p>document.addEventListener(&#8216;contextmenu&#8217;,<br />
event =&gt; event.preventDefault()<br />
);</p>
</blockquote>
<h3>Các kỹ thuật cao cấp hơn</h3>
<p>Hai cách trên rất tốt cho những người không rành về kỹ thuật hoặc cho một số người mới bắt đầu học lập trình.</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2022/06/1_-zpxbdSICkKkaw2cR59KEw.jpeg" alt="Cách ẩn Code HTML không cho người khác View Source 27" width="400" height="250" title="Cách ẩn Code HTML không cho người khác View Source 65"></p>
<p>Còn các nhà phát triển Web (chuyên gia kỹ thuật) thì sao?</p>
<p>Họ vẫn có thể xem mã nguồn của web bằng tiện ích mở rộng chrome, trình chặn HTML (BURP) hoặc <a href="https://viblo.asia/p/mot-so-cach-de-su-dung-postman-hieu-qua-hon-PwRkgmbAGEd" target="_blank" rel="noopener">postman</a>.</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2022/06/1_sS04Pr9uFDKIpc9q6eMKsQ.jpg" alt="Cách ẩn Code HTML không cho người khác View Source 28" width="700" height="380" title="Cách ẩn Code HTML không cho người khác View Source 66"></p>
<h2>Vậy làm thế nào để ẩn Source Code?</h2>
<p>Bạn không thể ẩn Code HTML của mình trong trình duyệt vì trình duyệt của bạn cần mã nguồn HTML để chạy và xem trang web.</p>
<p>Tuy nhiên, dưới đây là một số kỹ thuật khác để giảm thiểu việc quét web hoặc sao chép mã nguồn:</p>
<ul>
<li>Sử dụng REACT JS để đóng gói mã nguồn của bạn ở mức tối thiểu.</li>
<li>Sử dụng kết xuất phía máy chủ để thay đổi cấu trúc code theo thời gian.</li>
<li>Áp dụng đạo luật bản quyền cho các hành động pháp lý.</li>
<li>Cho phép chứng nhận SSL để mã hóa dữ liệu giữa phía máy khách và máy chủ.</li>
</ul>
<h2>Kết luận</h2>
<p>Nếu bạn ẩn Code HTML trên Website, trình thu thập thông tin của Google vẫn có thể đọc code đó, nhưng một số phần nhất định, chẳng hạn như No-Follow và No-Index, sẽ cho trình thu thập thông tin biết có nên lập chỉ mục trang web hay không.</p>
<p>“Việc ẩn văn bản hoặc liên kết trong nội dung của bạn để thao túng thứ hạng tìm kiếm của Google có thể được coi là hành vi lừa đảo và vi phạm Nguyên tắc quản trị trang web của Google.”</p>
<p>Bạn có thể ẩn dữ liệu với người dùng nhưng không ẩn dữ liệu khỏi trình thu thập thông tin, nhưng giờ đây, các con bot có thể đọc tất cả mã nguồn trên trang web của bạn.</p>
<p>Với lại mình nghĩ rằng việc ẩn Code HTML không phải là một ý kiến ​​hay. Bạn có thể phải đối mặt với một số vấn đề về SEO trong tương lai.</p>
<h2>Câu hỏi thường gặp</h2>
<h3>Làm thế nào để ngăn chặn người dùng xem mã nguồn HTML của tôi bằng cách nhấp chuột phải?</h3>
<p>Bạn có thể sử dụng đoạn mã JavaScript sau trong thẻ `<script>` của trang web:  <code>document.addEventListener('contextmenu', event => event.preventDefault());</code>.  Tuy nhiên, phương pháp này chỉ ngăn người dùng bình thường, không ngăn được người dùng có kỹ thuật cao.</p>
<h3>Có cách nào hoàn toàn ẩn mã nguồn HTML khỏi người dùng không?</h3>
<p>Không có cách nào hoàn toàn ẩn mã nguồn HTML.  Trình duyệt cần mã nguồn để hiển thị trang web.  Các phương pháp ngăn chặn chỉ làm khó người dùng, không ngăn được hoàn toàn.</p>
<h3>Vậy tôi nên làm gì để bảo vệ mã nguồn của mình?</h3>
<p>Tập trung vào các biện pháp bảo vệ khác như sử dụng ReactJS để tối ưu hóa mã nguồn, áp dụng bản quyền và sử dụng SSL để mã hóa dữ liệu. Việc ngăn người dùng xem mã nguồn chỉ mang tính chất hạn chế.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/cach-an-code-html-khong-cho-nguoi-khac-view-source/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
