Cách tải toàn bộ ảnh và video của người dùng Instagram

Trong bài viết này, mình sẽ hướng dẫn các bạn tải toàn bộ ảnh và video của người dùng Instagram. Mình sẽ sử dụng tool của bác Hoang Tran. Nếu các bạn thấy hay thì có thể cho 1 sao trong github của bác ấy tại đây nhé.

Cách tải toàn bộ ảnh và video của người dùng Instagram

Cách tải toàn bộ ảnh và video của người dùng Instagram

Đầu tiên, các bạn copy code dưới đây.

javascript: (function () {
  if (window.location.host === "www.instagram.com") {
    console.log("Đang lấy user id ...");
    fetch(location.href + "?__a=1")
      .then((response) => response.json())
      .then((json) => {
        const {
          fbid,
          id,
          username,
          full_name,
          profile_pic_url_hd,
          profile_pic_url,
          edge_owner_to_timeline_media,
        } = json.graphql.user;
        console.log(json.graphql.user);
        window.prompt(`User ID của ${username}:`, id);
      })
      .catch((e) => {
        alert("Lỗi: " + e.toString());
      });
  } else {
    alert(
      "Bookmark này chỉ hoạt động trên trang www.instagram.com\nBạn hãy vào trang www.instagram.com và ấn lại bookmark để lấy token an toàn nhé."
    );
    window.open("https://www.instagram.com");
  }
})();

Sau đó chuột phải vào bookmarks và chọn “Add this page to favorites”.

Cách tải toàn bộ ảnh và video của người dùng Instagram 13

Đổi tên chỗ phần name lại thành “get insta user id” và dán code đã copy vào phần URL rồi nhấn Save.

Cách tải toàn bộ ảnh và video của người dùng Instagram 14

Tiếp tục copy code dưới đây.

javascript: (async function () {
  let user_id = prompt("Enter user id:", "");
  if (!user_id) return;

  function getBiggestMediaFromNode(node) {
    if (node.is_video) {
      return getUniversalCdnUrl(node.video_url);
    } else {
      let r = node.display_resources;
      return r[r.length - 1]?.src;
    }
  }

  function download(data, filename, type) {
    var file = new Blob([data], { type: type });
    if (window.navigator.msSaveOrOpenBlob)
      window.navigator.msSaveOrOpenBlob(file, filename);
    else {
      var a = document.createElement("a"),
        url = URL.createObjectURL(file);
      a.href = url;
      a.download = filename;
      document.body.appendChild(a);
      a.click();
      setTimeout(function () {
        document.body.removeChild(a);
        window.URL.revokeObjectURL(url);
      }, 0);
    }
  }

  function getUniversalCdnUrl(cdnLink) {
    const cdn = new URL(cdnLink);
    cdn.host = "scontent.cdninstagram.com";
    return cdn.href;
  }

  let all_urls = [];
  let after = "";

  while (true) {
    console.log("FETCHING...");
    let data = await fetch(
      `https://www.instagram.com/graphql/query/?query_hash=396983faee97f4b49ccbe105b4daf7a0&variables={"id":"${user_id}","first":50,"after":"${after}"}`
    );
    let json = await data.json();
    let edges = json?.data?.user?.edge_owner_to_timeline_media?.edges || [];

    console.log(`Found ${edges?.length} medias. Processing...`);

    let urls = [];
    edges.forEach((e) => {
      let childs = e.node?.edge_sidecar_to_children?.edges;

      if (childs) {
        urls.push(...childs.map((c) => getBiggestMediaFromNode(c.node)));
      } else {
        urls.push(getBiggestMediaFromNode(e.node));
      }
    });

    all_urls.push(...urls);
    console.log(`Saved ${urls.length} medias. (TOTAL: ${all_urls.length})`);

    let pageInfo = json?.data?.user?.edge_owner_to_timeline_media?.page_info;
    if (pageInfo?.has_next_page) {
      after = pageInfo?.end_cursor;
    } else {
      console.log("[STOP] THIS IS THE LAST PAGE.");
      break;
    }
  }
  console.log(all_urls);

  download(all_urls.join("\n"), user_id, ".txt");
})();

Đổi tên phần name lại thành “get media user insta”, dán đoạn code đã copy ở trên vào mục URL và nhấn Save.

Cách tải toàn bộ ảnh và video của người dùng Instagram 15

Giờ các bạn truy cập vào trang instagram bạn muốn tải ảnh và video. Sau đó nhấn F12 và chuyển qua tab Console. Tiếp theo nhấn vào “get insta user id”.

Cách tải toàn bộ ảnh và video của người dùng Instagram 16

Sao chép ID của Insta bạn muốn.

Cách tải toàn bộ ảnh và video của người dùng Instagram 17

Tiếp theo nhấn vào “get media user insta”.

Cách tải toàn bộ ảnh và video của người dùng Instagram 18

Sau đó dán ID bạn vừa copy vào và nhấn OK.

Cách tải toàn bộ ảnh và video của người dùng Instagram 19

Các bạn đợi chút để tool lấy link ảnh và video.

Cách tải toàn bộ ảnh và video của người dùng Instagram 20

Sau khi hoàn tất thì trình duyệt sẽ yêu cầu bạn tải file link về. Các bạn lưu ở chỗ nào dễ nhớ nhé.

Cách tải toàn bộ ảnh và video của người dùng Instagram 21

Tiếp theo các bạn tải tool FBMediaDownloader tại đây và cài đặt thêm NodeJS (version 14 trở lên) tại đây.

Mở cmd trong folder dự án vừa tải về và chạy lệnh npm install để cài đặt tool.

Copy code dưới đây và tạo bookmarks tương tự như trên để lấy access token. Sau đó dán access token vào file config.js.Cách tải toàn bộ ảnh và video của người dùng Instagram 22

javascript: (function () {
  try {
    const encoded = document.cookie
      .split("; ")
      ?.find((_) => _.startsWith("fbsr"))
      ?.split(".")[1];
    if (encoded) {
      const decoded = JSON.parse(atob(encoded));
      console.log(decoded);
      window.prompt("Access token: ", decoded.oauth_token);
    } else {
      alert(
        "Không tìm thấy thông tin access token trong cookie!\nBạn đã đăng nhập instagram chưa??"
      );
    }
  } catch (e) {
    alert("Lỗi: " + e.toString());
  }
})();

Tiếp theo chạy lệnh node index.js trong cmd hoặc VScode và bạn sẽ thấy giao diện dưới đây. Nhấn phím 6 để tải ảnh từ file link. Sau đó kéo file link vào cmd hoặc bạn cũng có thể tự gõ đường dẫn. Cuối cùng là nhập tên folder.

Cách tải toàn bộ ảnh và video của người dùng Instagram 23

Các bạn truy cập vào folder dự án vừa tải về > download > from-file > samdoesarts. Và đây là thành quả của bạn.

Cách tải toàn bộ ảnh và video của người dùng Instagram 24

Vậy là bạn đã tải ảnh từ instagram của người khác thành công rồi đó. Ngoài ảnh ra thì bạn cũng có thể tải video nữa đó. Nếu thấy hay thì tặng 1 sao cho github của bác ấy nhé.

Previous Post Next Post