NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Instagram unprotect // @namespace http://lbreda.com/ // @version 2.6 // @description Unprotects Instagram images in the single-image pages // @author Lorenzo Breda // @license MIT // @match https://*.instagram.com/* // @grant none // ==/UserScript== function unprotectImage(root) { let waitForImage = setInterval(() => { if([...root.querySelectorAll('._aagv img')].length) { [...root.querySelectorAll('._aagv img')].forEach((image) => { (new MutationObserver(removeSrcset)).observe(image, { attributes: true, childList: false, subtree: false }); let imgContainer = image?.parentNode.parentNode; if(imgContainer?.getElementsByTagName('div')[1]) imgContainer?.removeChild(imgContainer?.getElementsByTagName('div')[1]); }); clearInterval(waitForImage); } }, 20); } function unprotectImageOnEachArticle(mutationList, observer) { mutationList.forEach((mutation) => { if(mutation.type == 'childList') { mutation.addedNodes.forEach((node) => { if(node.tagName.toLowerCase() == 'article') { unprotectImage(node); } }); } }); } function unprotectImageOnEachLi(mutationList, observer) { mutationList.forEach((mutation) => { if(mutation.type == 'childList') { mutation.addedNodes.forEach((node) => { if(node.tagName.toLowerCase() == 'li') { unprotectImage(node); } }); } }); } function removeSrcset(mutationList, observer) { mutationList.forEach((mutation) => { if(mutation.type == 'attributes' && mutation.attributeName == 'srcset' && mutation.target.srcset) { mutation.target.removeAttribute('srcset'); } }); } function observeNewArticles() { (new MutationObserver(unprotectImageOnEachArticle)).observe(document.querySelector('body'), { attributes: false, childList: true, subtree: true }); } function observeNewLi() { let waitForImage = setInterval(() => { if(document.querySelectorAll('._aagv img').length){ clearInterval(waitForImage) let ul = [...document.querySelectorAll('._aagv img')].reduce((acc, curr) => curr.closest('ul')); if (ul) { (new MutationObserver(unprotectImageOnEachLi).observe(ul, { attributes: false, childList: true, subtree: true })); } } }, 20); } (function() { 'use strict'; let currentURL = location.href; let firstCycle = true; let mainCycle = setInterval(() => { if(currentURL != location.href || firstCycle) { currentURL = location.href; firstCycle = false; if(currentURL.startsWith("https://www.instagram.com/p/")) { unprotectImage(document); observeNewLi(); } else if (currentURL == "https://www.instagram.com/") { unprotectImage(document.getElementsByTagName('body')[0]); observeNewArticles(); } } }, 20) })();