// ==UserScript== // @name Copy Real Link (Facebook) // @version 2.0.1 // @namespace https://github.com/HungNth/userscripts // @license MIT // @description Extract and copy clean URLs from Facebook redirect links, stripping tracking parameters like fbclid. // @author HungNth // @match *://*.facebook.com/* // @icon https://www.google.com/s2/favicons?domain=facebook.com // @grant GM_setClipboard // ==/UserScript== !function(){"use strict";const e=["fbclid","fb_action_ids","fb_action_types","fb_source","fb_ref","fbid","action_object_map","action_type_map","action_ref_map","utm_source","utm_medium","utm_campaign","utm_term","utm_content","utm_id","utm_source_platform","utm_creative_format","utm_marketing_tactic","gclid","gclsrc","gbraid","wbraid","msclkid","ref","referral","_hsenc","_hsmi","mc_cid","mc_eid","igshid","yclid","zanpid","dclid","srsltid"];document.addEventListener("contextmenu",(function(t){let n=t.target;for(;n&&"A"!==n.tagName;)n=n.parentElement;if(!n||"A"!==n.tagName||!n.href)return;let o=n.href,i=null;const l=o.match(/[?&]u=([^&]+)/);if(i=l?decodeURIComponent(l[1]):o,i=(t=>{try{const n=new URL(t);return e.forEach((e=>n.searchParams.delete(e))),n.toString()}catch{return t}})(i),i&&i!==o){const e=(e=>{const t=document.createElement("button");return t.style.position="absolute",t.style.zIndex="1000",t.style.backgroundColor="#007bff",t.style.color="#fff",t.style.border="none",t.style.padding="5px 10px",t.style.borderRadius="4px",t.style.cursor="pointer",t.style.display="flex",t.style.alignItems="center",t.style.gap="5px",t.innerHTML=' Copy Real Link',t.onclick=()=>{GM_setClipboard(e),t.textContent="Copied!",setTimeout((()=>t.remove()),2e3)},t})(i);document.body.appendChild(e);const t=n.getBoundingClientRect();e.style.top=`${t.top+window.scrollY}px`,e.style.left=`${t.right+window.scrollX+5}px`,setTimeout((()=>e.remove()),5e3)}}))}();