Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
a7d55a7
feat: openurlparam/unskim- check orig URL searchParam
mobilemind Feb 2, 2026
2b75978
chore: openurlparam/unskim- bump version, update dist & README
mobilemind Feb 2, 2026
b648035
chore: update dependencies
mobilemind Feb 4, 2026
18412c0
feat(utmstrip): always offer to copy URL even if "cleaning" does no c…
mobilemind Feb 4, 2026
edf0f81
chore: remove eslint-plugin-security (redundant to TypeScript + ESlin…
mobilemind Feb 6, 2026
78eba29
add bookmarklets for Chrome, Edge, Opera, & Orion browsers
mobilemind Feb 7, 2026
1cc17d5
chore: update config files & SECURITY.md
mobilemind Feb 7, 2026
d8a8cab
Merge branch 'main' into feat/openurl-unskim-check-orig-url
mobilemind Feb 7, 2026
e223582
docs(README): fix trailing space on a line
mobilemind Feb 7, 2026
e52592b
Merge branch 'feat/openurl-unskim-check-orig-url' of github.com:mobil…
mobilemind Feb 7, 2026
f73c3ff
fix: update scripts/utils.js for new security linting
mobilemind Feb 7, 2026
9d84dbd
fix: fix OpenInChrome & OpenInOpera
mobilemind Feb 7, 2026
cacbb38
docs: correct OpenInOpera scheme
mobilemind Feb 7, 2026
35a3965
feat: add OpenInDDG
mobilemind Feb 7, 2026
bf341d9
fix: address Copilot concerns w/ OpenInChrome & OpenInDDG
mobilemind Feb 7, 2026
e0cc0be
fix(openinddg): correct typo ("$")
mobilemind Feb 7, 2026
dc507c8
chore(openinddg): add stronger typing in src
mobilemind Feb 7, 2026
be22b02
chore: consistent code formatting (space indent)
mobilemind Feb 7, 2026
7b7c381
chore: update to ECMAscript 2021, dependencies @types/node 25.2.2
mobilemind Feb 9, 2026
c397d3e
chore: update config files to enable ECMAscript 2023
mobilemind Feb 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .cspell/dictionary-custom.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,20 @@ Blogsy
Bronto
Codacy
cyclonedx
DDG
delighter
Ghostery
Klaviyo
Listrak
Matomo
Octocat
Omeda
openurlparam
smushing
Temu
Textastic
uglifyjs
unskim
utmstrip
Vero
x-man
45 changes: 35 additions & 10 deletions .github/linters/eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const globals = require("globals");
const js = require("@eslint/js");
const security = require("eslint-plugin-security");
const noUnsanitized = require("eslint-plugin-no-unsanitized");
const tsParser = require("@typescript-eslint/parser");
const tsPlugin = require("@typescript-eslint/eslint-plugin");

Expand Down Expand Up @@ -101,23 +101,24 @@ const baseRules = {
"symbol-description": "error",
"unicode-bom": "error",
"vars-on-top": "error",
...security.configs['recommended'].rules,
"security/detect-non-literal-regexp": "off"
...noUnsanitized.configs.recommended.rules
};

module.exports = [
{
files: ["src/*.js"],
ignores: [".cspell.json","*.json", "**/*{.,-}min.js", "node_modules/*", "dist/*.bookmarklet"],
languageOptions: {
ecmaVersion: 2020,
ecmaVersion: 2023,
globals: {...globals.browser, ...globals.node},
parserOptions: {
ecmaFeatures: {globalReturn: false, impliedStrict: true}
},
sourceType: "script"
},
plugins: {security},
plugins: {
"no-unsanitized": noUnsanitized
},
rules: {
...baseRules,
"init-declarations": "error",
Expand All @@ -141,7 +142,7 @@ module.exports = [
},
plugins: {
"@typescript-eslint": tsPlugin,
security
"no-unsanitized": noUnsanitized
},
rules: {
...baseRules,
Expand All @@ -160,24 +161,48 @@ module.exports = [
}
},
{
files: ["scripts/*.js", ".github/linters/*.js"],
files: [".temp/*.js"],
ignores: [".cspell.json","*.json", "**/*{.,-}min.js", "node_modules/*", "dist/*.bookmarklet"],
languageOptions: {
ecmaVersion: 2020,
globals: {...globals.browser, ...globals.node},
parserOptions: {
ecmaFeatures: {globalReturn: false, impliedStrict: true}
},
sourceType: "script"
},
plugins: {
"no-unsanitized": noUnsanitized
},
rules: {
...baseRules,
"init-declarations": "error",
"no-await-in-loop": "error",
"no-console": "error",
"no-inline-comments": "error",
"no-param-reassign": "error"
}
},
{
files: ["scripts/*.js", ".github/linters/*.js"],
ignores: [".cspell.json","*.json", "**/*{.,-}min.js", "node_modules/*", "dist/*.bookmarklet"],
languageOptions: {
ecmaVersion: 2023,
globals: globals.node,
parserOptions: {
ecmaFeatures: {globalReturn: false, impliedStrict: true}
},
sourceType: "script"
},
plugins: {security},
plugins: {
"no-unsanitized": noUnsanitized
},
rules: {
...baseRules,
"no-await-in-loop": "off",
"no-console": "off",
"no-inline-comments": "off",
"no-param-reassign": "off",
"security/detect-non-literal-fs-filename": "off"
"no-param-reassign": "off"
}
}
];
5 changes: 1 addition & 4 deletions .npmrc
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# enforce engine compatibility - fail if Node.js/npm version doesn't match
engine-strict=true

# save exact versions (no ^ or ~ ranges) for better reproducibility
# save exact versions (avoid ^ or ~ ranges) for better reproducibility
save-exact=true

# use public registry
Expand All @@ -18,9 +18,6 @@ audit-level=low
# security: block automatic lifecycle scripts (preinstall, postinstall, & prepare)
ignore-scripts=true

# prefer offline - use cache when possible for faster installs
prefer-offline=true

# disable fund messages for cleaner CI logs
fund=false

Expand Down
66 changes: 54 additions & 12 deletions README.md

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ updates:

| Version | Supported |
| ------- | ------------------ |
| 4.1.x | :white_check_mark: |
| 4.2.x | :white_check_mark: |

## Reporting a Vulnerability

Expand Down Expand Up @@ -64,8 +64,8 @@ npm version patch # or minor, or major
git push --follow-tags

# Or manually create and push a signed tag
git tag -s 4.1.1 -m "Release version 4.1.1"
git push origin 4.1.1
git tag -s 4.2.0 -m "Release version 4.2.0"
git push origin 4.2.0
```

## Release Verification
Expand All @@ -76,10 +76,10 @@ All releases should be signed with GPG/SSH signatures for verification:

```bash
# Verify the signature on a release tag
git verify-tag 4.1.1
git verify-tag 4.2.0

# Show tag details with signature
git tag -v 4.1.1
git tag -v 4.2.0
```

### Verifying Signed Commits
Expand Down
31 changes: 28 additions & 3 deletions bookmarklets.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,21 @@
"file": "openinbrave.bookmarklet",
"version": "1.1.2"
},
{
"name": "OpenInChrome",
"file": "openinchrome.bookmarklet",
"version": "1.0.0"
},
{
"name": "OpenInDDG",
"file": "openinddg.bookmarklet",
"version": "1.0.0"
},
{
"name": "OpenInEdge",
"file": "openinedge.bookmarklet",
"version": "1.0.0"
},
{
"name": "OpenInFirefox",
"file": "openinfirefox.bookmarklet",
Expand All @@ -45,6 +60,16 @@
"file": "openingoodreader.bookmarklet",
"version": "1.5.2"
},
{
"name": "OpenInOpera",
"file": "openinopera.bookmarklet",
"version": "1.0.0"
},
{
"name": "OpenInOrion",
"file": "openinorion.bookmarklet",
"version": "1.0.0"
},
{
"name": "OpenInTextastic",
"file": "openintextastic.bookmarklet",
Expand All @@ -58,12 +83,12 @@
{
"name": "OpenURLParam",
"file": "openurlparam.bookmarklet",
"version": "1.2.0"
"version": "1.2.1"
},
{
"name": "UtmStrip",
"file": "utmstrip.bookmarklet",
"version": "2.2.0"
"version": "2.3.0"
},
{
"name": "deLighter",
Expand All @@ -73,7 +98,7 @@
{
"name": "unskim",
"file": "unskim.bookmarklet",
"version": "2.0.1"
"version": "2.0.2"
},
{
"name": "x-man",
Expand Down
1 change: 1 addition & 0 deletions dist/openinchrome.bookmarklet
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
javascript:'use%20strict'%3Bif(%2FiP(ad%7Chone)%2F.test(navigator.userAgent))%7Bconst%20o=%60googlechrome%24%7B'https:'===location.protocol%3F's':''%7D:%2F%2F%60%3Blocation.href=%60%24%7Bo%7D%24%7Blocation.host%7D%24%7Blocation.pathname%7D%24%7Blocation.search%7D%24%7Blocation.hash%7D%60%7Dvoid'1.0.0'
1 change: 1 addition & 0 deletions dist/openinddg.bookmarklet
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
javascript:if(%2FiP(ad%7Chone)%2F.test(navigator.userAgent))location.href=%60ddgQuickLink:%2F%2F%24%7Blocation.host%7D%24%7Blocation.pathname%7D%24%7Blocation.search%7D%24%7Blocation.hash%7D%60%3Bvoid'1.0.0'
1 change: 1 addition & 0 deletions dist/openinedge.bookmarklet
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
javascript:if(%2FiP(ad%7Chone)%2F.test(navigator.userAgent))location.href='microsoft-edge-'%2Blocation.href%3Bvoid'1.0.0'
1 change: 1 addition & 0 deletions dist/openinopera.bookmarklet
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
javascript:if(%2FiP(ad%7Chone)%2F.test(navigator.userAgent))location.href='touch-'%2Blocation.href%3Bvoid'1.0.0'
1 change: 1 addition & 0 deletions dist/openinorion.bookmarklet
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
javascript:if(%2FiP(ad%7Chone)%2F.test(navigator.userAgent))location.href='orion:%2F%2Fopen-url%3Furl='%2BencodeURIComponent(location.href)%3Bvoid'1.0.0'
2 changes: 1 addition & 1 deletion dist/openurlparam.bookmarklet
Original file line number Diff line number Diff line change
@@ -1 +1 @@
javascript:'use%20strict'%3B(()=%3E%7Bconst%20t=new%20URL(document.location.href)%3Bif(11%3Et.search.length)return%3Bconst%20e=new%20URLSearchParams(t.search)%2Cn=%5B'url'%2C'destination'%2C'redirect'%2C'target'%2C'goto'%2C'u'%2C'dest'%2C'link'%2C'out'%5D.filter(t=%3Ee.has(t)).map(t=%3E%7Bconst%20n=e.get(t)%3Breturn%20n%3FdecodeURIComponent(n):''%7D).find(t=%3Et.match(%2F%5Ehttps:%2F))%3Bn%26%26window.location.replace(new%20URL(n))%7D)()%3Bvoid'1.2.0'
javascript:'use%20strict'%3B(()=%3E%7Bconst%20t=new%20URL(document.location.href)%3Bif('https:'!==t.protocol%7C%7C13%3Et.search.length)return%3Bconst%20e=new%20URLSearchParams(t.search)%2Cn=%5B'url'%2C'destination'%2C'redirect'%2C'target'%2C'goto'%2C'u'%2C'dest'%2C'link'%2C'out'%5D.filter(t=%3Ee.has(t)).map(t=%3E%7Bconst%20n=e.get(t)%3Breturn%20n%3FdecodeURIComponent(n):''%7D).find(t=%3Et.match(%2F%5Ehttps:%2F))%3Bn%26%26window.location.replace(new%20URL(n))%7D)()%3Bvoid'1.2.1'
2 changes: 1 addition & 1 deletion dist/unskim.bookmarklet
Original file line number Diff line number Diff line change
@@ -1 +1 @@
javascript:'use%20strict'%3B(()=%3E%7Blet%20e=new%20URL(document.location.href)%3Bif('safari-resource:%2FErrorPage.html'===e.href)%7Bconst%20t=document.querySelector('p.error-message')%3F.textContent%3F.match(%2FSafari%20can't%20open%20the%20page%20%22(https%3F:%5B%5E%22%5D%2B)%22%2F)%3F.%5B1%5D%3Bt%26%26(e=new%20URL(t))%7Dif(''===e.search)return%3Bconst%20t=new%20URLSearchParams(e.search)%2Cr=%5B'url'%2C'destination'%2C'redirect'%2C'target'%2C'goto'%2C'u'%2C'dest'%2C'link'%2C'out'%5D.filter(e=%3Et.has(e)).map(e=%3E%7Bconst%20r=t.get(e)%3Breturn%20r%3FdecodeURIComponent(r):''%7D).find(e=%3Ee.match(%2F%5Ehttps%3F:%2F))%3Br%26%26window.location.replace(new%20URL(r))%7D)()%3Bvoid'2.0.1'
javascript:'use%20strict'%3B(()=%3E%7Blet%20e=new%20URL(document.location.href)%3Bif('safari-resource:%2FErrorPage.html'===e.href)%7Bconst%20t=document.querySelector('p.error-message')%3F.textContent%3F.match(%2FSafari%20can't%20open%20the%20page%20%22(https%3F:%5B%5E%22%5D%2B)%22%2F)%3F.%5B1%5D%3Bt%26%26(e=new%20URL(t))%7Dif(13%3Ee.search.length)return%3Bconst%20t=new%20URLSearchParams(e.search)%2Cr=%5B'url'%2C'destination'%2C'redirect'%2C'target'%2C'goto'%2C'u'%2C'dest'%2C'link'%2C'out'%5D.filter(e=%3Et.has(e)).map(e=%3E%7Bconst%20r=t.get(e)%3Breturn%20r%3FdecodeURIComponent(r):''%7D).find(e=%3Ee.match(%2F%5Ehttps%3F:%2F))%3Br%26%26window.location.replace(new%20URL(r))%7D)()%3Bvoid'2.0.2'
2 changes: 1 addition & 1 deletion dist/utmstrip.bookmarklet
Original file line number Diff line number Diff line change
@@ -1 +1 @@
javascript:'use%20strict'%3B(()=%3E%7Bconst%20t=location.pathname%2Ce=location.search%3Bif(3%3Ee.length%26%26!t.includes('%2Famp'))return%3Bconst%20i=location.hostname%2Cs=new%20URLSearchParams(e)%2Ca=%5B'assetType'%2C'elqTrack'%2C'mkt%5Ftok'%2C'originalReferer'%2C'referrer'%2C'terminal%5Fid'%2C'trk'%2C'trkCampaign'%2C'trkInfo'%2C'anid'%2C'assetid'%2C'campaignid'%2C'eid'%2C'gclid'%2C'recipientid'%2C'siteid'%2C'sib%5Fcuid'%2C'sib%5Fsid'%2C'%5Fbta%5Ftid'%2C'%5Fbta%5Fc'%2C'%5F%5Fs'%2C'fbclid'%2C'hrc'%2C'igsh'%2C'igshid'%2C'refsrc'%2C'%5Fgl'%2C'gclsrc'%2C'srsltid'%2C'%5Fhsenc'%2C'%5Fhsmi'%2C'%5F%5Fhsfp'%2C'%5F%5Fhssc'%2C'%5F%5Fhstc'%2C'cm%5Fmmc'%2C'cm%5Fre'%2C'cm%5Fsp'%2C'manual%5Fcm%5Fmmc'%2C'%5Fke'%2C'%5Fkx'%2C'trk%5Fcontact'%2C'trk%5Fmsg'%2C'trk%5Fmodule'%2C'trk%5Fsid'%2C'mc%5Fcid'%2C'mc%5Feid'%2C'iesrc'%2C'msclkid'%2C'dclid'%2C'twclid'%2C'ttclid'%2C'oly%5Fenc%5Fid'%2C'oly%5Fanon%5Fid'%2C'epik'%2C'vero%5Fid'%5D%2C%5F=%5B'fb%5F'%2C'action%5F'%2C'ga%5F'%2C'utm%5F'%2C'hmb%5F'%2C'hsa%5F'%2C'mtm%5F'%2C'pk%5F'%2C'oly%5F'%2C'stm%5F'%5D%3B%2F%5C.aliexpress%5C.%5Ba-z%5D%7B2%2C3%7D%24%2F.test(i)%3F(a.push('algo%5Fevid'%2C'algo%5Fpvid'%2C'btsid'%2C'spm'%2C'scm'%2C'ws%5Fab%5Ftest')%2C%5F.push('aff%5F')):%2F(%7C%5C.)amazon%5C.com%24%2F.test(i)%3Fa.push('%5Fencoding'%2C'asc%5Fcampaign'%2C'asc%5Frefurl'%2C'asc%5Fsource'%2C'ascsubtag'%2C'content-id'%2C'crid'%2C'cv%5Fct%5Fcx'%2C'dib%5Ftag'%2C'dib'%2C'ie'%2C'language'%2C'linkCode'%2C'linkId'%2C'pd%5Frd%5Fi'%2C'pd%5Frd%5Fr'%2C'pd%5Frd%5Fw'%2C'pd%5Frd%5Fwg'%2C'pf%5Frd%5Fi'%2C'pf%5Frd%5Fm'%2C'pf%5Frd%5Fp'%2C'pf%5Frd%5Fr'%2C'pf%5Frd%5Fs'%2C'pf%5Frd%5Ft'%2C'pf'%2C'psc'%2C'qid'%2C'ref%5F'%2C'sprefix'%2C'sr'%2C'tag'%2C'th'):i.endsWith('.ebay.com')%7C%7C%2F%5C.ebay%5C.co%5C.%5Ba-z%5D%7B2%7D%24%2F.test(i)%3Fa.push('mkevt'%2C'mkcid'%2C'mkrid'%2C'campid'%2C'toolid'%2C'customid'%2C'norover'%2C'itm'%2C'amdata'):%2F(%5E%7C%5C.)google%5C.(com%7C%5Ba-z%5D%7B2%7D%7Ccom%3F%5C.%5Ba-z%5D%7B2%7D)%24%2F.test(i)%26%26t.startsWith('%2Fsearch')%3Fa.push('aqs'%2C'ei'%2C'gs%5Flp'%2C'gs%5Fssp'%2C'iflsig'%2C'sca%5Fesv'%2C'ved'%2C'oq'%2C'sa'%2C'uact'%2C'rlz'%2C'sxsrf'%2C'bih'%2C'biw'%2C'client'%2C'prmd'%2C'sclient'%2C'source'%2C'sourceid'%2C'ie'%2C'oe'):i.endsWith('.linkedin.com')%3Fa.push('li%5Ffat%5Fid'%2C'licu'%2C'lipi'%2C'midSig'%2C'midToken'%2C'refId'):i.endsWith('.target.com')%3Fa.push('afid'%2C'clkid'%2C'lnm'%2C'preselect'%2C'tref'):i.endsWith('.temu.com')%3F(a.push('%5Fbg%5Ffs'%2C'%5Fp%5Fjump%5Fid'%2C'%5Fp%5Frfs'%2C'refer%5Fpage%5Fid'%2C'refer%5Fpage%5Fname'%2C'refer%5Fpage%5Fsn')%2C%5F.push('%5Fx%5F')):i.endsWith('.tiktok.com')%7C%7C'tiktok.com'===i%3Fa.push('%5Fd'%2C'%5Fr'%2C'%5Ft'%2C'is%5Ffrom%5Fwebapp'%2C'preview%5Fpb'%2C'share%5Fapp%5Fname'%2C'share%5Fitem%5Fid'%2C'tt4d%5Ft'%2C'timestamp'%2C'u%5Fcode'%2C'user%5Fid'):%2F%5C.(twitter%7Cx)%5C.com%24%2F.test(i)%7C%7C%2F%5E(twitter%7Cx)%5C.com%24%2F.test(i)%3Fa.push('cn'%2C'ref%5Fsrc'%2C'ref%5Furl'%2C's'%2C't'):i.endsWith('.walmart.com')%3Fa.push('adsredirect'%2C'affiliates%5Fad%5Fid'%2C'athcpid'%2C'athpgid'%2C'athcgid'%2C'athmtid'%2C'athstid'%2C'athznid'%2C'athiession'%2C'athancid'%2C'athposb'%2C'athena'%2C'campaign%5Fid'%2C'wmlspartner'):(%2F(m%7Cwww)%5C.youtube%5C.com%24%2F.test(i)%7C%7C'youtu.be'===i%7C%7C'www.youtube-nocookie.com'===i)%26%26a.push('ac'%2C'annotation%5Fid'%2C'app'%2C'feature'%2C'gclid'%2C'kw'%2C'src%5Fvid')%3Bconst%20c=new%20Set(a.map(t=%3Et.toLowerCase()))%2Cr=t=%3E%7Bconst%20e=t.toLowerCase()%3Breturn%20c.has(e)%7C%7C%5F.some(t=%3Ee.startsWith(t))%7C%7C%2F%5Ecm%5Fmmca%5Cd%2B%24%2Fi.test(t)%7D%3Bfor(const%20t%20of%5B...s.keys()%5D)r(t)%26%26s.delete(t)%3Blet%20d=s.toString()%3Bd=d%3F'%3F'%2Bd:''%3Bconst%20o=t.replace(%2F%5C%2Famp%5C%2F%3F%24%2F%2C'')%3Bif((e!==d%7C%7Ct!==o)%26%26confirm('Update%20history%20and%20copy%20cleaned%20URL%20to%20clipboard%3F'))%7Bconst%20t=%60%24%7Blocation.protocol%7D%2F%2F%24%7Blocation.host%7D%24%7Bo%7D%24%7Bd%7D%24%7Blocation.hash%7D%60%3Bnavigator.clipboard.writeText(t)%2Chistory.replaceState(null%2C''%2Ct)%3Bconst%20e=window.open(t%2C'%5Fself'%2C'noreferrer')%3Be%26%26(e.opener=null)%7D%7D)()%3Bvoid'2.2.0'
javascript:'use%20strict'%3B(()=%3E%7Bconst%20t=location.pathname%2Ce=location.search%3Bif(3%3Ee.length%26%26!t.includes('%2Famp'))return%3Bconst%20i=location.hostname%2Cs=new%20URLSearchParams(e)%2Ca=%5B'assetType'%2C'elqTrack'%2C'mkt%5Ftok'%2C'originalReferer'%2C'referrer'%2C'terminal%5Fid'%2C'trk'%2C'trkCampaign'%2C'trkInfo'%2C'anid'%2C'assetid'%2C'campaignid'%2C'eid'%2C'gclid'%2C'recipientid'%2C'siteid'%2C'sib%5Fcuid'%2C'sib%5Fsid'%2C'%5Fbta%5Ftid'%2C'%5Fbta%5Fc'%2C'%5F%5Fs'%2C'fbclid'%2C'hrc'%2C'igsh'%2C'igshid'%2C'refsrc'%2C'%5Fgl'%2C'gclsrc'%2C'srsltid'%2C'%5Fhsenc'%2C'%5Fhsmi'%2C'%5F%5Fhsfp'%2C'%5F%5Fhssc'%2C'%5F%5Fhstc'%2C'cm%5Fmmc'%2C'cm%5Fre'%2C'cm%5Fsp'%2C'manual%5Fcm%5Fmmc'%2C'%5Fke'%2C'%5Fkx'%2C'trk%5Fcontact'%2C'trk%5Fmsg'%2C'trk%5Fmodule'%2C'trk%5Fsid'%2C'mc%5Fcid'%2C'mc%5Feid'%2C'iesrc'%2C'msclkid'%2C'dclid'%2C'twclid'%2C'ttclid'%2C'oly%5Fenc%5Fid'%2C'oly%5Fanon%5Fid'%2C'epik'%2C'vero%5Fid'%5D%2C%5F=%5B'fb%5F'%2C'action%5F'%2C'ga%5F'%2C'utm%5F'%2C'hmb%5F'%2C'hsa%5F'%2C'mtm%5F'%2C'pk%5F'%2C'oly%5F'%2C'stm%5F'%5D%3B%2F%5C.aliexpress%5C.%5Ba-z%5D%7B2%2C3%7D%24%2F.test(i)%3F(a.push('algo%5Fevid'%2C'algo%5Fpvid'%2C'btsid'%2C'spm'%2C'scm'%2C'ws%5Fab%5Ftest')%2C%5F.push('aff%5F')):%2F(%7C%5C.)amazon%5C.com%24%2F.test(i)%3Fa.push('%5Fencoding'%2C'asc%5Fcampaign'%2C'asc%5Frefurl'%2C'asc%5Fsource'%2C'ascsubtag'%2C'content-id'%2C'crid'%2C'cv%5Fct%5Fcx'%2C'dib%5Ftag'%2C'dib'%2C'ie'%2C'language'%2C'linkCode'%2C'linkId'%2C'pd%5Frd%5Fi'%2C'pd%5Frd%5Fr'%2C'pd%5Frd%5Fw'%2C'pd%5Frd%5Fwg'%2C'pf%5Frd%5Fi'%2C'pf%5Frd%5Fm'%2C'pf%5Frd%5Fp'%2C'pf%5Frd%5Fr'%2C'pf%5Frd%5Fs'%2C'pf%5Frd%5Ft'%2C'pf'%2C'psc'%2C'qid'%2C'ref%5F'%2C'sprefix'%2C'sr'%2C'tag'%2C'th'):i.endsWith('.ebay.com')%7C%7C%2F%5C.ebay%5C.co%5C.%5Ba-z%5D%7B2%7D%24%2F.test(i)%3Fa.push('mkevt'%2C'mkcid'%2C'mkrid'%2C'campid'%2C'toolid'%2C'customid'%2C'norover'%2C'itm'%2C'amdata'):%2F(%5E%7C%5C.)google%5C.(com%7C%5Ba-z%5D%7B2%7D%7Ccom%3F%5C.%5Ba-z%5D%7B2%7D)%24%2F.test(i)%26%26t.startsWith('%2Fsearch')%3Fa.push('aqs'%2C'ei'%2C'gs%5Flp'%2C'gs%5Fssp'%2C'iflsig'%2C'sca%5Fesv'%2C'ved'%2C'oq'%2C'sa'%2C'uact'%2C'rlz'%2C'sxsrf'%2C'bih'%2C'biw'%2C'client'%2C'prmd'%2C'sclient'%2C'source'%2C'sourceid'%2C'ie'%2C'oe'):i.endsWith('.linkedin.com')%3Fa.push('li%5Ffat%5Fid'%2C'licu'%2C'lipi'%2C'midSig'%2C'midToken'%2C'refId'):i.endsWith('.target.com')%3Fa.push('afid'%2C'clkid'%2C'lnm'%2C'preselect'%2C'tref'):i.endsWith('.temu.com')%3F(a.push('%5Fbg%5Ffs'%2C'%5Fp%5Fjump%5Fid'%2C'%5Fp%5Frfs'%2C'refer%5Fpage%5Fid'%2C'refer%5Fpage%5Fname'%2C'refer%5Fpage%5Fsn')%2C%5F.push('%5Fx%5F')):i.endsWith('.tiktok.com')%7C%7C'tiktok.com'===i%3Fa.push('%5Fd'%2C'%5Fr'%2C'%5Ft'%2C'is%5Ffrom%5Fwebapp'%2C'preview%5Fpb'%2C'share%5Fapp%5Fname'%2C'share%5Fitem%5Fid'%2C'tt4d%5Ft'%2C'timestamp'%2C'u%5Fcode'%2C'user%5Fid'):%2F%5C.(twitter%7Cx)%5C.com%24%2F.test(i)%7C%7C%2F%5E(twitter%7Cx)%5C.com%24%2F.test(i)%3Fa.push('cn'%2C'ref%5Fsrc'%2C'ref%5Furl'%2C's'%2C't'):i.endsWith('.walmart.com')%3Fa.push('adsredirect'%2C'affiliates%5Fad%5Fid'%2C'athcpid'%2C'athpgid'%2C'athcgid'%2C'athmtid'%2C'athstid'%2C'athznid'%2C'athiession'%2C'athancid'%2C'athposb'%2C'athena'%2C'campaign%5Fid'%2C'wmlspartner'):(%2F(m%7Cwww)%5C.youtube%5C.com%24%2F.test(i)%7C%7C'youtu.be'===i%7C%7C'www.youtube-nocookie.com'===i)%26%26a.push('ac'%2C'annotation%5Fid'%2C'app'%2C'feature'%2C'gclid'%2C'kw'%2C'src%5Fvid')%3Bconst%20c=new%20Set(a.map(t=%3Et.toLowerCase()))%2Cr=t=%3E%7Bconst%20e=t.toLowerCase()%3Breturn%20c.has(e)%7C%7C%5F.some(t=%3Ee.startsWith(t))%7C%7C%2F%5Ecm%5Fmmca%5Cd%2B%24%2Fi.test(t)%7D%3Bfor(const%20t%20of%5B...s.keys()%5D)r(t)%26%26s.delete(t)%3Blet%20d=s.toString()%3Bd=d%3F'%3F'%2Bd:''%3Bconst%20o=t.replace(%2F%5C%2Famp%5C%2F%3F%24%2F%2C'')%2Cn=%60%24%7Blocation.protocol%7D%2F%2F%24%7Blocation.host%7D%24%7Bo%7D%24%7Bd%7D%24%7Blocation.hash%7D%60%3Bif(confirm('Update%20history%20and%20copy%20cleaned%20URL%20to%20clipboard%3F')%26%26(navigator.clipboard.writeText(n)%2Ce!==d%7C%7Ct!==o))%7Bhistory.replaceState(null%2C''%2Cn)%3Bconst%20t=window.open(n%2C'%5Fself'%2C'noreferrer')%3Bt%26%26(t.opener=null)%7D%7D)()%3Bvoid'2.3.0'
Loading
Loading