Add BazQux's proxy for Instagram images

Use BazQux's proxy for preventing from cdninstagram.com's same-origin issue

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Add BazQux's proxy for Instagram images
// @namespace    https://github.com/gslin/add-proxy-to-instagram-images-in-bazqux-userscript
// @version      0.20210825.0
// @description  Use BazQux's proxy for preventing from cdninstagram.com's same-origin issue
// @author       Gea-Suan Lin <[email protected]>
// @match        https://bazqux.com/*
// @grant        none
// @license      MIT
// ==/UserScript==

(() => {
    'use strict';

    const r = /^https:\/\/[^\.]+\.cdninstagram\.com\//;
    const proxy_url = 'https://img.bazqux.com/image_proxy/1920x1920/';

    let ob = new window.MutationObserver(events => {
        events.forEach(ev => {
            ev.addedNodes.forEach(node => {
                let imgs = document.getElementsByTagName('img');
                for (let img of imgs) {
                    if (img.src.match(r)) {
                        img.src = proxy_url + img.src;
                    }
                }
            });
        });
    });

    ob.observe(document, {
        childList: true,
        subtree: true,
    });
})();