Tải tất cả các phần mềm trên trang web của NirSoft

Hướng dẫn tự động tìm và tải về các phần mềm của NirSoft.

Tải tất cả các phần mềm trên trang web của NirSoft
Tải về tất cả phần mềm của NirSoft

Các phần mềm NirSoft

NirSoft là nơi chứa bộ sưu tập các công cụ phần mềm hệ thống miễn phí “tuy nhỏ nhưng cực kỳ có võ” được phát triển bởi thanh niên Nir Sofer có địa chỉ tại nirsoft.net.

Một trong những công cụ tôi hay dùng nhất chính là dòng lệnh NirCmd.

Ở bài viết này tôi không có ý định nói về mục đích hay cách sử dụng các công cụ này mà vấn đề của tôi là làm sao tải hết chỗ phần mềm ở đó về máy vì …nhiều quá, mỗi cái một trang nhưng lại không có tùy chọn cho tải hết về.

Ừ thì đương nhiên bạn chỉ nên chọn phần mềm nào cần thiết thì mới tải về thôi, nhưng tôi lại coi việc tải hết app từ trang web của anh bạn này là một thử thách vui vẻ.

Tải các phần mềm NirSoft

Các phần mềm NirSoft được liệt kê tại mục All Utilities. đây là một danh sách cỡ hơn 250 phần mềm khác nhau. Mỗi phần mềm lại được mô tả trong một trang HTML và có link tải ở phía dưới cùng. Có thể là bộ cài .exe hoặc file .zip, bản 32-bit hoặc 64-bit.

Như vậy để tim đến link tải phần mềm, ta cần một công cụ web scraper dò tìm theo quy luật như trên. Tôi quyết định chọn Nightmare.js.

Lấy danh sách tải phần mềm NirSoft với NightmareJS

Trước dây tôi hay dùng PhantomJS để đào web, nhưng PhantomJS có rất nhiều giới hạn: Quá nhiều API rườm rà, code viết rất dài và nested và đặc biệt là không hỗ trợ JavaScript ES6. Trái lại, Nightmare.js khắc phục được những vấn đề trên.

Để sử dụng được Nightmare.js thì trước hết bạn cần phải cài đặt Node.js.

Cài đặt module Nightmare.js bằng npm như sau:

npm install nightmare --save-dev

Đoạn mã findapps.js dưới đây sử dụng 2 instance Nightmare để đào website NirSoft

  • 1 instance duyệt trang All Utilities để lấy danh sách web page phần mềm.
  • 1 instance để duyệt từng web page để tìm danh sách link tải về.

Đầu ra của script là một danh sách thông tin về link tải. Tôi không muốn dùng Nightmare để tải file vì đó không phải là thế mạnh của các headless browser.

nirsoft_get_apps.js

const Nightmare = require('nightmare');

const getAppLinks = () => [...document.querySelectorAll('tr.filesrow > td > a.filetitle')]
        .map( a => [ a.innerText, a.href ] );

const getDownloadLink = () => [ ...document.querySelectorAll('a.downloadline') ]
        .map(a => a.href);

(async () => {
    try {
        const nightmare = Nightmare({ show: false });

        // Get All Utilities page
        const apps = await nightmare.goto("https://www.nirsoft.net/utils/index.html")
                .evaluate(getAppLinks);

        for (let i = 0; i < apps.length; i++) {
            // Get the download links
            const downloads = await nightmare.goto(apps[i][1])
                    .evaluate(getDownloadLink);

            downloads.forEach(download => console.log(apps[i][0] + "|" + apps[i][1] + "|" + download));
        }
    } catch (error) {
        console.error(error);
        process.exitCode = 1
    } finally {
        await nightmare.end();
        process.exit();
    }
})();

Tải các phần mềm NirSoft

Từ danh sách link phần mềm trên, tôi dùng lệnh tải file rất mạnh là aria2c– hỗ trợ resume và download nhiều luồng. Nếu là trên Windows, bạn có thể cài đặt Cygwin để có aria2c và chạy được Shell script dưới đây.

nirsoft_download.sh

#!/bin/bash

# Read the input file, the arguments are separated by "|" 
while IFS="|" read name referer url; do
    # Each app is downloaded to a separated directory
    mkdir -p "${name}"

    echo "Downloading: ${name}"
    aria2c -s 4 -x 4 -d "${name}" --referer=${referer} ${url}

    sleep 5 # a short break to avoid blacklisted
done

Kết luận

Vậy để tải các phần mềm NirSoft, ta kết hợp hai công cụ như sau:

node ./nirsoft_get_apps.js > nirsoft.txt
./nirsoft_download.sh < nirsoft.txt

Ngồi đợi thôi, lâu phết đấy!

Phản hồi về bài viết

Cùng thảo luận chút nhỉ!

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.