您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
İnstagram yardımcı eklenti
// ==UserScript== // @name İnstagram ext // @namespace Violentmonkey Scripts // @match https://www.instagram.com/* // @grant none // @version 1.5 // @grant GM_addStyle // @author @mmnyldrm // @description İnstagram yardımcı eklenti // ==/UserScript== GM_addStyle(` .menuHrefs { background-color: #fff; top: 60px; position: absolute; box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.116); padding: 20px 30px; border-radius: 10px; display: none; left: -75px; border: 1px solid #dfdfdf; width: 200px; } .menuHrefs > .link { padding: 8px 12px; font-weight: 500; font-size: 15px; display: flex; align-items: center; flex-direction: row; margin: 0px -15px; border-radius: 4px; margin-bottom: 4px; cursor: pointer; } .menuHrefs > .link:hover { background-color: #eeeeee; } .menuHrefs > .link > span { margin-left: 10px; color: #50505a; } .defBTN { padding: 0px; background-color: transparent; border-width: 0; margin: 0px; } .menuHrefs > .link.active { background-color: #5f7beb21; } .menuHrefs > .link.active:hover { background-color: #5f7beb3a; } .user_profile { display: flex; } .user_profile > img { width: 30px; height: 30px; border-radius: 100%; border: 2px solid #dddddd; } .user_name_username > .welcome { font-size: 14px; color: #5e5e5e; } .user_name_username > .name { font-weight: 600; font-size: 16px; } .line_head { font-weight: 700; font-size: 13px; color: #a3a4aa; letter-spacing: 1px; margin-bottom: 12px; } .success_btn { background-color: #5feb8e21; color: #087e1c !important; } .success_btn:hover { background-color: #5feb8e5e !important; } .s_span { color: #087e1c !important; } .ftayfur { margin-left: 10px; position: relative; } .unfollow_area { width: 100%; background-color: #ffffff; box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.116); border: 1px solid #dfdfdf; padding: 20px 30px; margin-bottom: 40px; border-radius: 5px; } .total_list { font-size: 15px; font-weight: 500; display: flex; flex-direction: row; } .total_list > span { font-weight: 700; font-size: 18px; margin-bottom: 10px; } .flexbtn { margin-bottom: 10px; display: flex; flex-direction: row; } .flexbtn > button { border-width: 0; background-color: #3aad73; padding: 10px 20px; border-radius: 5px; font-weight: 500; cursor: pointer; color: #fff; margin-right: 10px; } .flexbtn > button:first-child { background-color: #4679d8; } #unfollowliststop { background-color: #ad5a3a; } .log { max-height: 200px; overflow-y: auto; } .item { font-family: "Inter", sans-serif; display: flex; flex-direction: row; } .successItem { margin-right: 5px; color: #087e1c; } .item > b { margin-right: 5px; } .modal { width: 100%; height: 100vh; position: absolute; top: 0; background-color: #616161b8; display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 222222222222; } .settings { width: 400px; background-color: #fff; border: 1px solid #eee; border-radius: 4px; } .settings > header { display: flex; flex-direction: row; justify-content: space-between; align-items: center; font-weight: 500; font-size: 18px; padding: 10px 20px; border-bottom: 1px solid #eeeeee; } .settings > header > button { border-width: 0; background-color: #dddddd63; padding: 7px 7px; display: flex; flex-direction: row; align-items: center; border-radius: 4px; } .settings > header > button:hover { background-color: #ddddddc0; cursor: pointer; } .menu_set { padding: 10px 20px; } .menu_set > h4 { font-size: 16px; font-weight: 600; margin: 0px; margin-bottom: 5px !important; } .menu_set > p { font-size: 13px; margin-top: 0px; margin-bottom: 10px; } .menu_set > input { width: calc(100% - 30px); border: 1px solid #dddddd; padding: 10px 15px; outline: none; border-radius: 4px; } .settings > .save { width: calc(100% - 40px); background-color: #5f68eb; color: #fff; margin: 10px 20px; padding: 10px 0px; border-radius: 5px; border-width: 0; cursor: pointer; } .settings > .save:hover { background-color: #4c56e4; } .success_modal { text-align: center; width: calc(100% - 40px); margin: 0px 20px; margin-bottom: 10px; padding: 10px 0px; background-color: #15b86c23; color: #127245; border-radius: 5px; } #ucount, #yucount { margin-left: 15px; } `); const URL_USER_INFO = "https://www.instagram.com/*/?__a=1"; const URL_HOME = "https://www.instagram.com/"; const URL_UNFOLLOW = "https://www.instagram.com/web/friendships/*/unfollow/"; const URL_FOLLOW = "https://www.instagram.com/web/friendships/*/follow/"; const URL_LIKE = "https://www.instagram.com/web/likes/*/like/"; let currentUrl = document.location.href; let otherUserName; let userId; let actionTime = parseInt(localStorage.getItem("hiz_saniye")) || 3000; const _cookies = document.cookie.split(";"); const _csrftoken = _cookies .find((item) => item.includes("csrftoken")) .replace(" csrftoken=", ""); const _userId = _cookies .find((item) => item.includes("ds_user_id")) .replace(" ds_user_id=", ""); const success_color = "#087e1c"; const inActiveColor = "#bbbcc1"; const successClass = "success_btn"; let unfollow_list = new Array(); let like_list = new Array(); let follow_list = new Array(); let unfollowCursor = 0; let followCursor = 0; let likeCursor = 0; let valueChange = actionTime; const likeIsSuccess = (successVal, failVal) => { const url = "https://www.instagram.com/"; if (currentUrl === url) { return successVal; } return failVal; }; let free = []; let unfollow_count = 0; let follow_count = 0; let like_count = 0; const successMessage = '<div class="item"><span class="successItem">Başarılı - </span> <b>*/name*/ </b> */message*/</div>'; const errorMessage = '<div class="item"><span class="errItem">Hata - </span> <b>*/type*/ </b> */message*/</div>'; const openOrCloseMenu = () => { const menuList = document.getElementById("menu_list"); const isShow = menuList.dataset.show === "true"; const styleMenu = menuList.style; if (isShow) { styleMenu.display = "none"; menuList.setAttribute("data-show", "false"); } else { styleMenu.display = "block"; menuList.setAttribute("data-show", "true"); } }; const setMenu = () => { const className = document.getElementsByClassName("_47KiJ"); const createElementDiv = document.createElement("div"); createElementDiv.className = "ftayfur"; createElementDiv.innerHTML = `<div class="ftayfur"><a id="menu_btn" class="_0ZPOP kIKUG "> <svg class="_8-yf5 " xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22" width="22" height="22"> <path fill="none" d="M0 0h24v24H0z"/> <path d="M3 4h18v2H3V4zm0 7h12v2H3v-2zm0 7h18v2H3v-2z"/> </svg> </a> <div data-show="false" id="menu_list" class="menuHrefs"> <h4 class="line_head">İşlemler</h4> <div id="follow_btn" class="link "> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="22" height="22"> <path fill="none" d="M0 0h24v24H0z"/> <path fill="${inActiveColor}" d="M14 14.252v2.09A6 6 0 0 0 6 22l-2-.001a8 8 0 0 1 10-7.748zM12 13c-3.315 0-6-2.685-6-6s2.685-6 6-6 6 2.685 6 6-2.685 6-6 6zm0-2c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm5.793 8.914l3.535-3.535 1.415 1.414-4.95 4.95-3.536-3.536 1.415-1.414 2.12 2.121z"/> </svg> <span>Takip</span> </div> <div id="unfollow_btn" class="link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="22" height="22"> <path fill="none" d="M0 0h24v24H0z"/> <path fill="#bbbcc1" d="M14 14.252v2.09A6 6 0 0 0 6 22l-2-.001a8 8 0 0 1 10-7.748zM12 13c-3.315 0-6-2.685-6-6s2.685-6 6-6 6 2.685 6 6-2.685 6-6 6zm0-2c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm7 6.586l2.121-2.122 1.415 1.415L20.414 19l2.122 2.121-1.415 1.415L19 20.414l-2.121 2.122-1.415-1.415L17.586 19l-2.122-2.121 1.415-1.415L19 17.586z"/> </svg> <span>Unfollow</span> </div> <div id="like_btn" class="link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="22" height="22"> <path fill="none" d="M0 0h24v24H0z"/> <path fill="${inActiveColor}" d="M16.5 3C19.538 3 22 5.5 22 9c0 7-7.5 11-10 12.5C9.5 20 2 16 2 9c0-3.5 2.5-6 5.5-6C9.36 3 11 4 12 5c1-1 2.64-2 4.5-2zm-3.566 15.604c.881-.556 1.676-1.109 2.42-1.701C18.335 14.533 20 11.943 20 9c0-2.36-1.537-4-3.5-4-1.076 0-2.24.57-3.086 1.414L12 7.828l-1.414-1.414C9.74 5.57 8.576 5 7.5 5 5.56 5 4 6.656 4 9c0 2.944 1.666 5.533 4.645 7.903.745.592 1.54 1.145 2.421 1.7.299.189.595.37.934.572.339-.202.635-.383.934-.571z"/> </svg> <span>Like</span> </div> <div id="setting_btn" class="link success_btn"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="22" height="22"> <path fill="none" d="M0 0h24v24H0z"/> <path fill="${success_color}" d="M3.34 17a10.018 10.018 0 0 1-.978-2.326 3 3 0 0 0 .002-5.347A9.99 9.99 0 0 1 4.865 4.99a3 3 0 0 0 4.631-2.674 9.99 9.99 0 0 1 5.007.002 3 3 0 0 0 4.632 2.672c.579.59 1.093 1.261 1.525 2.01.433.749.757 1.53.978 2.326a3 3 0 0 0-.002 5.347 9.99 9.99 0 0 1-2.501 4.337 3 3 0 0 0-4.631 2.674 9.99 9.99 0 0 1-5.007-.002 3 3 0 0 0-4.632-2.672A10.018 10.018 0 0 1 3.34 17zm5.66.196a4.993 4.993 0 0 1 2.25 2.77c.499.047 1 .048 1.499.001A4.993 4.993 0 0 1 15 17.197a4.993 4.993 0 0 1 3.525-.565c.29-.408.54-.843.748-1.298A4.993 4.993 0 0 1 18 12c0-1.26.47-2.437 1.273-3.334a8.126 8.126 0 0 0-.75-1.298A4.993 4.993 0 0 1 15 6.804a4.993 4.993 0 0 1-2.25-2.77c-.499-.047-1-.048-1.499-.001A4.993 4.993 0 0 1 9 6.803a4.993 4.993 0 0 1-3.525.565 7.99 7.99 0 0 0-.748 1.298A4.993 4.993 0 0 1 6 12c0 1.26-.47 2.437-1.273 3.334a8.126 8.126 0 0 0 .75 1.298A4.993 4.993 0 0 1 9 17.196zM12 15a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-2a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/> </svg> <span class="s_span">Ayarlar</span> </div> </div> </div>`; if (className) { for (var i = 0; i < className.length; i++) { className[i].appendChild(createElementDiv); } } if (document.getElementById("menu_btn")) { document .getElementById("menu_btn") .addEventListener("click", (event) => { openOrCloseMenu(); }); } if (document.getElementById("setting_btn")) { document .getElementById("setting_btn") .addEventListener("click", (event) => { openOrCloseMenu(); const mainReactArea = document.getElementById( "react-root", ); const createUnModalDiv = document.createElement("div"); createUnModalDiv.className = "modal"; createUnModalDiv.setAttribute("id", "modal_close"); createUnModalDiv.innerHTML = ` <div id="setNoti" class="settings"> <header> Ayarlar <button id="close_set"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"> <path fill="none" d="M0 0h24v24H0z"/> <path fill="#818181" d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/> </svg> </button> </header> <div class="menu_set"> <h4>İşlem hızı</h4> <p>Saniye başına yapılacak işlem hızı <b>Mili saniye cinsinden</b></p> <input id="change_second" type="number" value="${actionTime}" placeholder="3 ( saniye ) * 1000 ( milisaniye ) = 3000" /> </div> <button id="save_set" class="save">Kayıt et</button> </div>`; if (mainReactArea) { mainReactArea.appendChild(createUnModalDiv); } if (document.getElementById("close_set")) { document .getElementById("close_set") .addEventListener("click", () => { document.getElementById("modal_close").remove(); }); } if (document.getElementById("save_set")) { document .getElementById("save_set") .addEventListener("click", (e) => { const mainMArea = document.getElementById( "setNoti", ); const createUnSuccessDiv = document.createElement( "div", ); createUnSuccessDiv.className = "success_modal"; createUnSuccessDiv.setAttribute( "id", "successMessage", ); const newTime = parseInt( document.getElementById("change_second").value, ); actionTime = newTime; localStorage.setItem("hiz_saniye", newTime); createUnSuccessDiv.innerHTML += "Kayıt başarılı"; if (mainMArea) { mainMArea.appendChild(createUnSuccessDiv); } setTimeout( () => document .getElementById("successMessage") .remove(), 3000, ); }); } }); } if (document.getElementById("like_btn")) { document .getElementById("like_btn") .addEventListener("click", (event) => { openOrCloseMenu(); const mainArea = document.getElementsByClassName( "cGcGK", ); const createUnfollowDiv = document.createElement("div"); createUnfollowDiv.innerHTML = ` <div class="unfollow_area"> <div class="flexbtn"> <button id="unfollowlistadd">LİSTE EKLE</button> <button id="unfollowliststop">DURDUR</button> <button id="unf_go">BAŞLAT</button> </div> <div class="total_list">toplam like listesi: <span id="ucount">${like_list.length}</span></div> <div class="total_list">toplam like edilen post: <span id="yucount">${like_count}</span></div> <div id="log_unf" class="log"></div> </div>`; if (mainArea) { mainArea[0].insertBefore( createUnfollowDiv, mainArea[0].childNodes[0], ); } if (document.getElementById("unfollowlistadd")) { const setLikeList = () => { fetch( `https://www.instagram.com/graphql/query/?query_hash=e3ae866f8b31b11595884f0c509f3ec5&variables={"cached_feed_item_ids":[],"fetch_media_item_count":12,"fetch_comment_count":4,"fetch_like":3,"has_stories":false,"has_threaded_comments":true ${ likeCursor ? ',"fetch_media_item_cursor": "' + likeCursor + '"' : "" }}`, ) .then((responseJson) => responseJson.json()) .then((responseJson) => { const newList = responseJson.data.user.edge_web_feed_timeline .edges; if ( likeCursor !== null && like_list.length <= 80 ) { like_list = like_list.concat(newList); likeCursor = responseJson.data.user.edge_web_feed_timeline .page_info.end_cursor; } }); setTimeout( () => (document.getElementById("ucount").innerHTML = like_list.length), 500, ); }; document .getElementById("unfollowlistadd") .addEventListener("click", (event) => { var myVar = setInterval(setLikeList, 1000); document .getElementById("unfollowliststop") .addEventListener("click", (event) => { clearInterval(myVar); }); }); document .getElementById("unf_go") .addEventListener("click", (event) => { like_list.map((item, index) => setTimeout( () => ActionLike(item), actionTime * (index + 1), ), ); }); } }); } if (document.getElementById("follow_btn")) { document .getElementById("follow_btn") .addEventListener("click", (event) => { openOrCloseMenu(); const mainArea = document.getElementsByClassName( "v9tJq", ); const createUnfollowDiv = document.createElement("div"); createUnfollowDiv.innerHTML = ` <div class="unfollow_area"> <div class="flexbtn"> <button id="unfollowlistadd">LİSTE EKLE</button> <button id="unfollowliststop">DURDUR</button> <button id="unf_go">BAŞLAT</button> </div> <div class="total_list">toplam takip listesi: <span id="ucount">${unfollow_list.length}</span></div> <div class="total_list">toplam takip edilen kullanıcı: <span id="yucount">${unfollow_count}</span></div> <div id="log_unf" class="log"></div> </div>`; if (mainArea) { mainArea[0].insertBefore( createUnfollowDiv, mainArea[0].childNodes[0], ); } if (document.getElementById("unfollowlistadd")) { const setfollowList = () => { fetch( `https://www.instagram.com/graphql/query/?query_hash=c76146de99bb02f6415203be841dd25a&variables={"id":${userId},"include_reel":true,"fetch_mutual":false,"first":20 ${ followCursor ? ',"after": "' + followCursor + '"' : "" }}`, ) .then((responseJson) => responseJson.json()) .then((responseJson) => { const newList = responseJson.data.user.edge_followed_by.edges; newList.map((item) => { fetch( URL_USER_INFO.replace( "*", item.node.username, ), ) .then((responseJson) => responseJson.json()) .then((responseJson) => { const takip_ediliyor = responseJson.graphql.user .followed_by_viewer; const istek_gonderildi = responseJson.graphql.user .requested_by_viewer; if (!takip_ediliyor && !istek_gonderildi) { free.push(item); } }); }); if (followCursor !== null) { followCursor = responseJson.data.user.edge_followed_by .page_info.end_cursor; } }); if (follow_list.length <= 80) { follow_list = follow_list.concat(free); } setTimeout( () => (document.getElementById("ucount").innerHTML = follow_list.length), 500, ); free = []; }; document .getElementById("unfollowlistadd") .addEventListener("click", (event) => { var myVar = setInterval(setfollowList, 1000); document .getElementById("unfollowliststop") .addEventListener("click", (event) => { clearInterval(myVar); }); }); document .getElementById("unf_go") .addEventListener("click", (event) => { follow_list.map((item, index) => setTimeout( () => ActionFollow(item), actionTime * (index + 1), ), ); }); } }); } if (document.getElementById("unfollow_btn")) { document .getElementById("unfollow_btn") .addEventListener("click", (event) => { openOrCloseMenu(); const mainArea = document.getElementsByClassName( "v9tJq", ); const createUnfollowDiv = document.createElement("div"); createUnfollowDiv.innerHTML = ` <div class="unfollow_area"> <div class="flexbtn"> <button id="unfollowlistadd">LİSTE EKLE</button> <button id="unfollowliststop">DURDUR</button> <button id="unf_go">BAŞLAT</button> </div> <div class="total_list">toplam unfollow listesi: <span id="ucount">${unfollow_list.length}</span></div> <div class="total_list">toplam unfollow edilen kullanıcı: <span id="yucount">${unfollow_count}</span></div> <div id="log_unf" class="log"></div> </div>`; if (mainArea) { mainArea[0].insertBefore( createUnfollowDiv, mainArea[0].childNodes[0], ); } if (document.getElementById("unfollowlistadd")) { const setUnfollowList = () => { fetch( `https://www.instagram.com/graphql/query/?query_hash=d04b0a864b4b54837c0d870b0e77e076&variables={"id":${userId},"include_reel":true,"fetch_mutual":false,"first":20 ${ unfollowCursor ? ',"after": "' + unfollowCursor + '"' : "" }}`, ) .then((responseJson) => responseJson.json()) .then((responseJson) => { const newList = responseJson.data.user.edge_follow.edges; if ( unfollowCursor !== null && unfollow_list.length <= 80 ) { unfollow_list = unfollow_list.concat(newList); unfollowCursor = responseJson.data.user.edge_follow.page_info .end_cursor; } }); setTimeout( () => (document.getElementById("ucount").innerHTML = unfollow_list.length), 500, ); }; document .getElementById("unfollowlistadd") .addEventListener("click", (event) => { var myVar = setInterval(setUnfollowList, 1000); document .getElementById("unfollowliststop") .addEventListener("click", (event) => { clearInterval(myVar); }); }); document .getElementById("unf_go") .addEventListener("click", (event) => { unfollow_list.map((item, index) => setTimeout( () => ActionUnfollow(item), actionTime * (index + 1), ), ); }); } }); } }; const ActionUnfollow = (item) => { fetch(URL_UNFOLLOW.replace("*", item.node.id), { method: "POST", headers: { "x-csrftoken": _csrftoken, "x-instagram-ajax": 1, "x-requested-with": "XMLHttpRequest" }, }) .then((responseJson) => responseJson.json()) .then((responseJson) => { const status = responseJson.status === "ok"; if (status) { unfollow_count++; document.getElementById( "yucount", ).innerHTML = unfollow_count; document.getElementById( "log_unf", ).innerHTML += successMessage .replace("*/name*/", item.node.username) .replace("*/message*/", "Unfollow edildi"); } else { document.getElementById( "log_unf", ).innerHTML += errorMessage .replace("*/type*/", "Limit") .replace("*/message*/", "aşımı"); } }) .catch((err) => { if (err) { document.getElementById( "log_unf", ).innerHTML += errorMessage .replace("*/type*/", "Limit") .replace("*/message*/", "aşımı"); } }); }; const ActionLike = (item) => { fetch(URL_LIKE.replace("*", item.node.id), { method: "POST", headers: { "x-csrftoken": _csrftoken, "x-instagram-ajax": 1, "x-requested-with": "XMLHttpRequest" }, }) .then((responseJson) => responseJson.json()) .then((responseJson) => { const status = responseJson.status === "ok"; if (status) { like_count++; document.getElementById( "yucount", ).innerHTML = like_count; document.getElementById( "log_unf", ).innerHTML += successMessage .replace("*/name*/", item.node.id) .replace("*/message*/", "Beğenildi"); } else { document.getElementById( "log_unf", ).innerHTML += errorMessage .replace("*/type*/", "Limit") .replace("*/message*/", "aşımı"); } }) .catch((err) => { if (err) { document.getElementById( "log_unf", ).innerHTML += errorMessage .replace("*/type*/", "Limit") .replace("*/message*/", "aşımı"); } }); }; const ActionFollow = (item) => { fetch(URL_FOLLOW.replace("*", item.node.id), { method: "POST", headers: { "x-csrftoken": _csrftoken, "x-instagram-ajax": 1, "x-requested-with": "XMLHttpRequest" }, }) .then((responseJson) => responseJson.json()) .then((responseJson) => { follow_count++; document.getElementById( "yucount", ).innerHTML = follow_count; if (responseJson.result === "requested") { document.getElementById( "log_unf", ).innerHTML += successMessage .replace("*/name*/", item.node.username) .replace("*/message*/", "İstek gönderildi"); } else { document.getElementById( "log_unf", ).innerHTML += successMessage .replace("*/name*/", item.node.username) .replace("*/message*/", "Takip edildi"); } }) .catch((err) => { if (err) { document.getElementById( "log_unf", ).innerHTML += errorMessage .replace("*/type*/", "Limit") .replace("*/message*/", "aşımı"); } }); }; window.onload = () => { setMenu(); let observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { const btnMenu = document.getElementById("menu_btn"); if (currentUrl != document.location.href && !btnMenu) { /* Changed ! your code here */ currentUrl = document.location.href; setMenu(); } else { if (!btnMenu) { setMenu(); } } if (currentUrl !== URL_HOME) { let nowUserName = document.getElementsByClassName( "_7UhW9", )[0].innerText; if ( otherUserName !== nowUserName && nowUserName !== "Başlarken" ) { otherUserName = document.getElementsByClassName( "_7UhW9", )[0].innerText; fetch(URL_USER_INFO.replace("*", otherUserName)) .then((responseJson) => responseJson.json()) .then((responseJson) => { userId = responseJson.graphql.user.id; }); } } }); }); var bodyList = document.querySelector("body"); var config = { childList: true, subtree: true, }; observer.observe(bodyList, config); };