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
Đầ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.comnBạ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”.
Đổ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.
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.
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”.
Sao chép ID của Insta bạn muốn.
Tiếp theo nhấn vào “get media user insta”.
Sau đó dán ID bạn vừa copy vào và nhấn OK.
Các bạn đợi chút để tool lấy link ảnh và video.
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é.
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.
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á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.
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é.