commit 98db3a2cc8a5430362925294313d5335ec6d9814 Author: user Date: Tue Jul 15 22:40:51 2025 -0400 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..beab663 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +venv +.env +server_settings.json diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b59c0e6 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2025 amrfti + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..61f138a --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# linkbomber + +Discord bot that cleans tracking elements from messages + +You can invite the bot to your server [here](https://discord.com/oauth2/authorize?client_id=1336105313589395616&scope=bot&permissions=274877990912). + +## Usage + +By default, the bot will automatically strip tracking elements from any URL it supports, +this feature can be disabled with the command: `/toggle`. Then, to use the functionality +manually, just use the command `/bomb` which will strip the latest link posted in a channel +of its tracking elements. + +## Setup + +1. Clone the repository +2. Create a file named `.env` in the same directory as the bot +3. Add the following contents to the file +``` +DISCORD_BOT_TOKEN=your_bot_token_here +``` +4. Install the dependencies with `pip install -r requirements.txt` +5. Run the bot with `python main.py` diff --git a/main.py b/main.py new file mode 100644 index 0000000..b60b5c3 --- /dev/null +++ b/main.py @@ -0,0 +1,128 @@ +import discord +import json +import re +import os +from urllib.parse import urlparse, parse_qs, urlencode, urlunparse +from discord import app_commands +from dotenv import load_dotenv + +load_dotenv() + + +def load_json(filename): + try: + with open(filename, "r", encoding="utf-8") as f: + return json.load(f) + except FileNotFoundError: + return {} + + +def save_json(data, filename): + with open(filename, "w", encoding="utf-8") as f: + json.dump(data, f, indent=4) + + +rules = load_json("url_rules.json") +server_settings = load_json("server_settings.json") + +intents = discord.Intents.default() +intents.message_content = True +client = discord.Client(intents=intents) +tree = app_commands.CommandTree(client) + + +def clean_url(url): + parsed_url = urlparse(url) + providers = [p for p in rules["providers"].items() if p[0] != "globalRules"] + [ + ("globalRules", rules["providers"].get("globalRules", {})) + ] + + for _, data in providers: + if re.match(data.get("urlPattern", ""), url): + query_params = parse_qs(parsed_url.query, keep_blank_values=True) + filtered_params = { + k: v + for k, v in query_params.items() + if not any(re.fullmatch(rule, k) for rule in data.get("rules", [])) + } + cleaned_query = urlencode(filtered_params, doseq=True) + return ( + urlunparse(( + parsed_url.scheme, + parsed_url.netloc, + parsed_url.path, + parsed_url.params, + cleaned_query, + parsed_url.fragment, + )) + if cleaned_query != parsed_url.query + else None + ) + return None + + +@client.event +async def on_ready(): + await tree.sync() + + +@client.event +async def on_message(message): + if message.author == client.user or server_settings.get( + str(message.guild.id), {} + ).get("disabled", False): + return + + for word in message.content.split(): + if word.startswith(("http://", "https://")) and (cleaned := clean_url(word)): + await message.channel.send(f"Cleaned link: {cleaned}") + break + + +@tree.command( + name="toggle", + description="Toggle automatic link cleaning for this server (requires Manage Messages permission).", +) +async def toggle(interaction: discord.Interaction): + if not interaction.user.guild_permissions.manage_messages: + await interaction.response.send_message( + "You need 'Manage Messages' permission to use this command.", ephemeral=True + ) + return + + guild_id = str(interaction.guild.id) + server_settings[guild_id] = { + "disabled": not server_settings.get(guild_id, {}).get("disabled", False) + } + save_json(server_settings, "server_settings.json") + await interaction.response.send_message( + f"Link cleaning {'disabled' if server_settings[guild_id]['disabled'] else 'enabled'}." + ) + + +@tree.command( + name="bomb", description="Cleans the first link found in the last 20 messages." +) +async def bomb(interaction: discord.Interaction): + async for msg in interaction.channel.history(limit=20): + for word in msg.content.split(): + if word.startswith(("http://", "https://")) and ( + cleaned := clean_url(word) + ): + await interaction.response.send_message(f"Cleaned link: {cleaned}") + return + await interaction.response.send_message("No links found.") + + +@tree.command( + name="about", + description="Explains the purpose of the bot and its privacy features.", +) +async def about(interaction: discord.Interaction): + await interaction.response.send_message( + "This bot removes tracking parameters from links to improve privacy. Use `/toggle` to enable/disable auto-cleaning, `/bomb` to clean a recent link manually, and `/about` for info." + ) + + +TOKEN = os.getenv("DISCORD_BOT_TOKEN") +client.run(TOKEN) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..062c9a8 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +discord +python-dotenv diff --git a/url_rules.json b/url_rules.json new file mode 100644 index 0000000..b28996c --- /dev/null +++ b/url_rules.json @@ -0,0 +1,1893 @@ +{ + "providers": { + "amazon": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?amazon(?:\\.[a-z]{2,}){1,}", + "rules": [ + "p[fd]_rd_[a-z]*", + "qid", + "srs?", + "__mk_[a-z]{1,3}_[a-z]{1,3}", + "spIA", + "ms3_c", + "[a-z%0-9]*ie", + "refRID", + "colii?d", + "[^a-z%0-9]adId", + "qualifier", + "_encoding", + "smid", + "field-lbr_brands_browse-bin", + "ref_?", + "th", + "sprefix", + "crid", + "keywords", + "cv_ct_[a-z]+", + "linkCode", + "creativeASIN", + "ascsubtag", + "aaxitk", + "hsa_cr_id", + "sb-ci-[a-z]+", + "rnid", + "dchild", + "camp", + "creative", + "s", + "content-id", + "dib", + "dib_tag" + ], + "referralMarketing": [ + "tag", + "ascsubtag" + ], + "exceptions": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?amazon(?:\\.[a-z]{2,}){1,}\\/gp\\/.*?(?:redirector.html|cart\\/ajax-update.html|video\\/api\\/)", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?amazon(?:\\.[a-z]{2,}){1,}\\/(?:hz\\/reviews-render\\/ajax\\/|message-us\\?|s\\?)" + ] + }, + "msn": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?msn\\.com", + "rules": [ + "cvid", + "ocid" + ] + }, + "amazon search": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?amazon(?:\\.[a-z]{2,}){1,}\\/s\\?", + "rules": [ + "p[fd]_rd_[a-z]*", + "qid", + "srs?", + "__mk_[a-z]{1,3}_[a-z]{1,3}", + "spIA", + "ms3_c", + "[a-z%0-9]*ie", + "refRID", + "colii?d", + "[^a-z%0-9]adId", + "qualifier", + "_encoding", + "smid", + "field-lbr_brands_browse-bin", + "ref_?", + "th", + "sprefix", + "crid", + "cv_ct_[a-z]+", + "linkCode", + "creativeASIN", + "ascsubtag", + "aaxitk", + "hsa_cr_id", + "sb-ci-[a-z]+", + "rnid", + "dchild", + "camp", + "creative" + ], + "referralMarketing": [ + "tag" + ] + }, + "fls-na.amazon": { + "completeProvider": true, + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?fls-na\\.amazon(?:\\.[a-z]{2,}){1,}" + }, + "google": { + "forceRedirection": true, + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?google(?:\\.[a-z]{2,}){1,}", + "rules": [ + "ved", + "bi[a-z]*", + "gfe_[a-z]*", + "ei", + "source", + "gs_[a-z]*", + "site", + "oq", + "esrc", + "uact", + "cd", + "cad", + "gws_[a-z]*", + "atyp", + "vet", + "_u", + "je", + "dcr", + "ie", + "sei", + "sa", + "dpr", + "btn[a-z]*", + "usg", + "cd", + "cad", + "uact", + "aqs", + "sourceid", + "sxsrf", + "rlz", + "i-would-rather-use-firefox", + "pcampaignid", + "sca_(?:esv|upv)", + "iflsig", + "fbs", + "ictx" + ], + "referralMarketing": [ + "referrer" + ], + "exceptions": [ + "^https?:\\/\\/mail\\.google\\.com\\/mail\\/u\\/", + "^https?:\\/\\/accounts\\.google\\.com\\/o\\/oauth2\\/", + "^https?:\\/\\/accounts\\.google\\.com\\/signin\\/oauth\\/", + "^https?:\\/\\/(?:docs|accounts)\\.google(?:\\.[a-z]{2,}){1,}", + "^https?:\\/\\/([a-z0-9-\\.])*(chat|drive)\\.google\\.com\\/videoplayback", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?google(?:\\.[a-z]{2,}){1,}(?:\\/upload)?\\/drive\\/", + "^https?:\\/\\/news\\.google\\.com.*\\?hl=.", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?google(?:\\.[a-z]{2,}){1,}\\/s\\?tbm=map.*?gs_[a-z]*=.", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?google(?:\\.[a-z]{2,}){1,}\\/(?:complete\\/search|setprefs|searchbyimage)", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?google(?:\\.[a-z]{2,}){1,}\\/(?:appsactivity|aclk\\?)", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?google(?:\\.[a-z]{2,}){1,}\\/safe[-]?browsing\\/([^&]+)" + ], + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?google(?:\\.[a-z]{2,}){1,}\\/url\\?.*?(?:url|q)=(https?[^&]+)", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?google(?:\\.[a-z]{2,}){1,}\\/.*?adurl=([^&]+)", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?google(?:\\.[a-z]{2,}){1,}\\/amp\\/s\\/([^&]+)" + ] + }, + "googleSearch": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?google(?:\\.[a-z]{2,}){1,}\\/search\\?", + "rules": [ + "client", + "sclient" + ] + }, + "googlesyndication": { + "completeProvider": true, + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?googlesyndication\\.com" + }, + "doubleclick": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?doubleclick(?:\\.[a-z]{2,}){1,}", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?doubleclick(?:\\.[a-z]{2,}){1,}\\/.*?tag_for_child_directed_treatment=;%3F([^&]*)" + ] + }, + "googleadservices": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?googleadservices\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?googleadservices\\.com\\/.*?adurl=([^&]*)" + ] + }, + "globalRules": { + "urlPattern": ".*", + "rules": [ + "(?:%3F)?utm(?:_[a-z_]*)?", + "(?:%3F)?ga_[a-z_]+", + "(?:%3F)?yclid", + "(?:%3F)?_openstat", + "(?:%3F)?fb_action_(?:types|ids)", + "(?:%3F)?fb_(?:source|ref)", + "(?:%3F)?fbclid", + "(?:%3F)?action_(?:object|type|ref)_map", + "(?:%3F)?gs_l", + "(?:%3F)?mkt_tok", + "(?:%3F)?hmb_(?:campaign|medium|source)", + "(?:%3F)?gclid", + "(?:%3F)?otm_[a-z_]*", + "(?:%3F)?cmpid", + "(?:%3F)?os_ehash", + "(?:%3F)?_ga", + "(?:%3F)?_gl", + "(?:%3F)?__twitter_impression", + "(?:%3F)?wt_?z?mc", + "(?:%3F)?wtrid", + "(?:%3F)?[a-z]?mc", + "(?:%3F)?dclid", + "Echobox", + "(?:%3F)?spm", + "(?:%3F)?vn(?:_[a-z]*)+", + "(?:%3F)?tracking_source", + "(?:%3F)?ceneo_spo", + "(?:%3F)?itm_(?:campaign|medium|source)", + "(?:%3F)?__hsfp", + "(?:%3F)?__hssc", + "(?:%3F)?__hstc", + "(?:%3F)?_hsenc", + "(?:%3F)?__s", + "(?:%3F)?hsCtaTracking", + "(?:%3F)?mc_(?:eid|cid|tc)", + "(?:%3F)?ml_subscriber", + "(?:%3F)?ml_subscriber_hash", + "(?:%3F)?msclkid", + "(?:%3F)?oly_anon_id", + "(?:%3F)?oly_enc_id", + "(?:%3F)?rb_clickid", + "(?:%3F)?s_cid", + "(?:%3F)?vero_conv", + "(?:%3F)?vero_id", + "(?:%3F)?wickedid", + "(?:%3F)?twclid" + ], + "referralMarketing": [ + "(?:%3F)?ref_?", + "(?:%3F)?referrer" + ], + "exceptions": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?matrix\\.org\\/_matrix\\/", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?(?:cloudflare\\.com|prismic\\.io|tangerine\\.ca|gitlab\\.com)", + "^https?:\\/\\/myaccount.google(?:\\.[a-z]{2,}){1,}", + "^https?:\\/\\/accounts.google(?:\\.[a-z]{2,}){1,}", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?gcsip\\.(?:com|nl)[^?]*\\?.*?&?ref_?=.", + "^https?:\\/\\/[^/]+/[^/]+/[^/]+\\/-\\/refs\\/switch[^?]*\\?.*?&?ref_?=.", + "^https?:\\/\\/bugtracker\\.[^/]*\\/[^?]+\\?.*?&?ref_?=[^/?&]*", + "^https?:\\/\\/comment-cdn\\.9gag\\.com\\/.*?comment-list.json\\?", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?battle\\.net\\/login", + "^https?:\\/\\/blizzard\\.com\\/oauth2", + "^https?:\\/\\/kreditkarten-banking\\.lbb\\.de", + "^https?:\\/\\/www\\.tinkoff\\.ru", + "^https?:\\/\\/www\\.cyberport\\.de\\/adscript\\.php", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?tweakers\\.net\\/ext\\/lt\\.dsp\\?.*?(?:%3F)?&?ref_?=.", + "^https?:\\/\\/git(lab)?\\.[^/]*\\/[^?]+\\?.*?&?ref_?=[^/?&]*", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?amazon(?:\\.[a-z]{2,}){1,}\\/message-us\\?", + "^https?:\\/\\/authorization\\.td\\.com", + "^https?:\\/\\/support\\.steampowered\\.com", + "^https?:\\/\\/privacy\\.vakmedianet\\.nl\\/.*?ref=", + "^https?:\\/\\/sso\\.serverplan\\.com\\/manage2fa\\/check\\?ref=", + "^https?:\\/\\/login\\.meijer\\.com\\/.*?\\?ref=", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?facebook\\.com\\/(?:login_alerts|ajax|should_add_browser)/", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?facebook\\.com\\/groups\\/member_bio\\/bio_dialog\\/", + "^https?:\\/\\/api\\.taiga\\.io", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?gog\\.com\\/click\\.html", + "^https?:\\/\\/login\\.progressive\\.com", + "^https?:\\/\\/www\\.sephora\\.com\\/api\\/", + "^https?:\\/\\/www\\.contestgirl\\.com", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?agenciatributaria\\.gob\\.es", + "^https?:\\/\\/login\\.ingbank\\.pl", + "^wss?:\\/\\/(?:[a-z0-9-]+\\.)*?zoom\\.us", + "^https?:\\/\\/api\\.bilibili\\.com", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?onet\\.pl\\/[^?]*\\?.*?utm_campaign=.", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?stripe\\.com\\/[^?]+.*?&?referrer=[^/?&]*", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?lichess\\.org\\/login.*?&?referrer=.*?", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?microsoft\\.com\\/.*?research\\/redirect", + "^https?:\\/\\/like.co\\/api\\/like\\/likebutton\\/[^?]+.*?&?referrer=[^/?&]*", + "^https?:\\/\\/button.like.co\\/in\\/.*?&?referrer=[^/?&]*", + "^https?:\\/\\/www\\.mma\\.go\\.kr", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?github\\.com", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?billiger\\.de\\/.*?mc=", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?\\.youtrack\\.cloud", + "^https?:\\/\\/cu\\.bankid\\.com", + "^https?:\\/\\/login\\.aliexpress\\.us" + ] + }, + "adtech": { + "completeProvider": true, + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?adtech(?:\\.[a-z]{2,}){1,}" + }, + "contentpass": { + "completeProvider": true, + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?contentpass\\.(?:net|de)" + }, + "bf-ad": { + "completeProvider": true, + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?bf-ad(?:\\.[a-z]{2,}){1,}" + }, + "amazon-adsystem": { + "completeProvider": true, + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?amazon-adsystem(?:\\.[a-z]{2,}){1,}", + "exceptions": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?amazon-adsystem(?:\\.[a-z]{2,}){1,}\\/v3\\/oor\\?" + ], + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?amazon-adsystem(?:\\.[a-z]{2,}){1,}\\/x\\/c\\/.+?\\/([^&]+)" + ] + }, + "adsensecustomsearchads": { + "completeProvider": true, + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?adsensecustomsearchads(?:\\.[a-z]{2,}){1,}" + }, + "youtube": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?(youtube\\.com|youtu\\.be)", + "rules": [ + "feature", + "gclid", + "kw", + "si" + ], + "exceptions": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?youtube\\.com\\/signin\\?.*?" + ], + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?youtube\\.com\\/redirect?.*?q=([^&]*)" + ] + }, + "youtube_pagead": { + "completeProvider": true, + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?youtube\\.com\\/pagead" + }, + "youtube_apiads": { + "completeProvider": true, + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?youtube\\.com\\/api\\/stats\\/ads" + }, + "facebook": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?facebook\\.com", + "rules": [ + "hc_[a-z_%\\[\\]0-9]*", + "[a-z]*ref[a-z]*", + "__tn__", + "eid", + "__(?:xts|cft)__(?:\\[|%5B)\\d(?:\\]|%5D)", + "comment_tracking", + "dti", + "app", + "video_source", + "ftentidentifier", + "pageid", + "padding", + "ls_ref", + "action_history", + "tracking", + "referral_code", + "referral_story_type", + "eav", + "sfnsn", + "idorvanity", + "wtsid", + "rdc", + "rdr", + "paipv", + "_nc_x", + "_rdr", + "mibextid" + ], + "exceptions": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?facebook\\.com\\/.*?(plugins|ajax)\\/", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?facebook\\.com\\/dialog\\/(?:share|send)", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?facebook\\.com\\/groups\\/member_bio\\/bio_dialog\\/", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?facebook\\.com\\/photo\\.php\\?", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?facebook\\.com\\/privacy\\/specific_audience_selector_dialog\\/", + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?facebook\\.com\\/photo\\/download\\/" + ], + "redirections": [ + "^https?:\\/\\/l[a-z]?\\.facebook\\.com/l\\.php\\?.*?u=(https?%3A%2F%2F[^&]*)" + ] + }, + "twitter": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?twitter.com", + "rules": [ + "(?:ref_?)?src", + "s", + "cn", + "ref_url", + "t" + ], + "exceptions": [ + "^https?:\\/\\/twitter.com\\/i\\/redirect" + ] + }, + "x": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?x.com", + "rules": [ + "(?:ref_?)?src", + "s", + "cn", + "ref_url", + "t" + ], + "exceptions": [ + "^https?:\\/\\/x.com\\/i\\/redirect" + ] + }, + "reddit": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?reddit.com", + "rules": [ + "%24deep_link", + "\\$deep_link", + "correlation_id", + "ref_campaign", + "ref_source", + "%243p", + "rdt", + "\\$3p", + "%24original_url", + "\\$original_url", + "_branch_match_id" + ], + "redirections": [ + "^https?:\\/\\/out\\.reddit\\.com\\/.*?url=([^&]*)", + "^https?:\\/\\/click\\.redditmail\\.com\\/.*?url=([^&]*)" + ] + }, + "netflix": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?netflix.com", + "rules": [ + "trackId", + "tctx", + "jb[a-z]*?" + ] + }, + "techcrunch": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?techcrunch\\.com", + "rules": [ + "ncid", + "sr", + "sr_share" + ] + }, + "bing": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?bing(?:\\.[a-z]{2,}){1,}", + "rules": [ + "cvid", + "form", + "sk", + "sp", + "sc", + "qs", + "qp" + ], + "exceptions": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?bing(?:\\.[a-z]{2,}){1,}\\/WS\\/redirect\\/" + ] + }, + "tweakers": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?tweakers\\.net", + "rules": [ + "nb", + "u" + ] + }, + "twitch": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?twitch\\.com", + "rules": [ + "tt_medium", + "tt_content" + ] + }, + "vivaldi": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?vivaldi\\.com", + "rules": [ + "pk_campaign", + "pk_kwd" + ] + }, + "indeed": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?indeed\\.com", + "rules": [ + "from", + "alid", + "[a-z]*tk" + ], + "exceptions": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?indeed\\.com\\/rc\\/clk" + ] + }, + "hhdotru": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?hh\\.ru", + "rules": [ + "vss", + "t", + "swnt", + "grpos", + "ptl", + "stl", + "exp", + "plim" + ] + }, + "ebay": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?ebay(?:\\.[a-z]{2,}){1,}", + "rules": [ + "_trkparms", + "_trksid", + "_from", + "hash" + ], + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?rover\\.ebay(?:\\.[a-z]{2,}){1,}\\/rover.*mpre=([^&]*)" + ] + }, + "cnet": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?cnet\\.com", + "rules": [ + "ftag" + ] + }, + "imdb.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?imdb\\.com", + "rules": [ + "ref_", + "pf_rd_[a-z]*" + ] + }, + "govdelivery.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?govdelivery\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?links\\.govdelivery\\.com.*\\/track\\?.*(https?:\\/\\/.*)" + ] + }, + "walmart.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?walmart\\.com", + "rules": [ + "u1", + "ath[a-z]*" + ] + }, + "net-parade.it": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?net\\-parade\\.it", + "rules": [ + "pl" + ] + }, + "prvnizpravy.cz": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?prvnizpravy\\.cz", + "rules": [ + "xid" + ] + }, + "youku.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?youku\\.com", + "rules": [ + "tpa" + ] + }, + "nytimes.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?nytimes\\.com", + "rules": [ + "smid" + ] + }, + "tchibo.de": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?tchibo\\.de", + "rules": [ + "wbdcd" + ] + }, + "steampowered": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?steampowered\\.com", + "rules": [ + "snr" + ] + }, + "steamcommunity": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?steamcommunity\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?steamcommunity\\.com\\/linkfilter\\/\\?url=([^&]*)" + ] + }, + "mozaws.net": { + "urlPattern": "https?:\\/\\/outgoing\\.prod\\.mozaws\\.net\\/", + "redirections": [ + "https?:\\/\\/[^/]+\\/v1\\/[0-9a-f]{64}\\/(.*)" + ] + }, + "shutterstock.com": { + "urlPattern": "https?:\\/\\/([a-z0-9-.]*\\.)shutterstock\\.com", + "rules": [ + "src" + ] + }, + "mozilla.org": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?mozilla\\.org", + "rules": [ + "src", + "platform", + "redirect_source" + ], + "exceptions": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?mozilla.org\\/api" + ] + }, + "readdc.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?readdc\\.com", + "rules": [ + "ref" + ] + }, + "dailycodingproblem.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?dailycodingproblem\\.com", + "rules": [ + "email" + ] + }, + "github.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?github\\.com", + "rules": [ + "email_token", + "email_source" + ] + }, + "deviantart.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?deviantart\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?deviantart\\.com\\/.*?\\/outgoing\\?(.*)" + ] + }, + "site2.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?site2\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?site2\\.com.*?\\?.*=(.*)" + ] + }, + "site.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?site\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?site\\.com.*?\\?to=([^&]*)" + ] + }, + "site3.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?site3\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?site3\\.com.*?\\?r=([^&]*)" + ] + }, + "aliexpress": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?aliexpress(?:\\.[a-z]{2,}){1,}", + "rules": [ + "ws_ab_test", + "btsid", + "algo_expid", + "algo_pvid", + "gps-id", + "scm[_a-z-]*", + "cv", + "af", + "mall_affr", + "sk", + "dp", + "terminal_id", + "aff_request_id" + ] + }, + "mozillazine.org": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?mozillazine\\.org", + "rules": [ + "sid" + ] + }, + "9gag.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?9gag\\.com", + "rules": [ + "ref" + ], + "exceptions": [ + "^https?:\\/\\/comment-cdn\\.9gag\\.com\\/.*?comment-list.json\\?" + ] + }, + "linksynergy.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?linksynergy\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?linksynergy\\.com\\/.*?murl=([^&]*)" + ] + }, + "giphy.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?giphy\\.com", + "rules": [ + "ref" + ] + }, + "gate.sc": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?gate\\.sc", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?gate\\.sc\\/.*?url=([^&]*)" + ] + }, + "vk.com": { + "urlPattern": "^https?:\\/\\/vk\\.com", + "redirections": [ + "^https?:\\/\\/vk\\.com\\/away\\.php\\?to=([^&]*)" + ] + }, + "woot.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?woot\\.com", + "rules": [ + "ref_?" + ] + }, + "vitamix.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?vitamix\\.com", + "rules": [ + "_requestid", + "cid", + "dl", + "di", + "sd", + "bi" + ] + }, + "curseforge.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?curseforge\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?curseforge\\.com\\/linkout\\?remoteUrl=([^&]*)" + ] + }, + "messenger.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?messenger\\.com", + "redirections": [ + "^https?:\\/\\/l\\.messenger\\.com\\/l\\.php\\?u=([^&]*)" + ] + }, + "nypost.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?nypost\\.com", + "rules": [ + "__twitter_impression" + ] + }, + "ozon.ru": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?ozon\\.ru", + "rules": [ + "partner" + ] + }, + "norml.org": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?norml\\.org", + "rules": [ + "link_id", + "can_id", + "source", + "email_referrer", + "email_subject" + ] + }, + "LinkedIn": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?linkedin\\.com", + "rules": [ + "refId", + "trk", + "li[a-z]{2}", + "trackingId" + ] + }, + "LinkedIn Learning": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?linkedin\\.com\\/learning", + "rules": [ + "u" + ] + }, + "smartredirect.de": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?smartredirect\\.de", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?smartredirect\\.de.*?url=([^&]*)" + ] + }, + "SPIEGEL ONLINE": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?spiegel\\.de", + "rules": [ + "b" + ] + }, + "rutracker.org": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?rutracker\\.org", + "redirections": [ + ".*url=([^&]*)" + ] + }, + "instagram": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?instagram\\.com", + "rules": [ + "igshid", + "igsh" + ], + "redirections": [ + ".*u=([^&]*)" + ] + }, + "imgsrc.ru": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?imgsrc\\.ru", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?dlp\\.imgsrc\\.ru\\/go\\/\\d+\\/\\d+\\/\\d+\\/([^&]*)" + ] + }, + "boredpanda.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?boredpanda\\.com", + "rules": [ + "h" + ] + }, + "awstrack.me": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?awstrack\\.me", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?awstrack\\.me\\/.*\\/(https?.*?)\\/" + ] + }, + "exactag.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?exactag\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?exactag\\.com.*url=([^&]*)" + ] + }, + "bahn.de": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?bahn\\.de", + "rules": [ + "dbkanal_[0-9]{3}" + ] + }, + "disq.us": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?disq\\.us", + "rules": [ + "cuid" + ], + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?disq\\.us\\/.*?url=([^&]*)%3A" + ] + }, + "anonym.to": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?anonym\\.to", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?anonym\\.to.*\\?([^&]*)" + ] + }, + "moosejaw.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?moosejaw\\.com", + "rules": [ + "cm_lm", + "cm_mmc", + "webUserId", + "spMailingID", + "spUserID", + "spJobID", + "spReportId" + ] + }, + "spotify.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?spotify\\.com", + "rules": [ + "si" + ] + }, + "yandex": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?(?:yandex(?:\\.[a-z]{2,}){1,}|ya\\.ru)", + "rules": [ + "lr", + "redircnt" + ] + }, + "healio.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?healio\\.com", + "rules": [ + "ecp", + "m_bt" + ] + }, + "zoho.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?zoho\\.com", + "rules": [ + "iref" + ] + }, + "snapchat.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?snapchat\\.com", + "rules": [ + "sc_referrer", + "sc_ua" + ] + }, + "medium.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?medium\\.com", + "rules": [ + "source" + ] + }, + "swp.de": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?swp\\.de", + "rules": [ + "source" + ] + }, + "wps.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?wps\\.com", + "rules": [ + "from" + ] + }, + "accounts.firefox.com": { + "urlPattern": "^https?:\\/\\/(?:accounts\\.)?firefox\\.com", + "rules": [ + "context", + "entrypoint", + "form_type" + ] + }, + "support.mozilla.org": { + "urlPattern": "^https?:\\/\\/(?:support\\.)?mozilla\\.org", + "rules": [ + "as" + ] + }, + "ClearURLsTest": { + "urlPattern": "^https?:\\/\\/kevinroebert\\.gitlab\\.io\\/ClearUrls\\/void\\/index\\.html", + "rules": [ + "test" + ], + "redirections": [ + "^https?:\\/\\/kevinroebert\\.gitlab\\.io\\/ClearUrls\\/void\\/index\\.html\\?url=([^&]*)" + ] + }, + "ClearURLsTestBlock": { + "completeProvider": true, + "urlPattern": "^https?:\\/\\/kevinroebert\\.gitlab\\.io\\/ClearUrls\\/void\\/block\\.svg" + }, + "ClearURLsTest2": { + "urlPattern": "^https?:\\/\\/test\\.clearurls\\.xyz\\/void\\/index\\.html", + "rules": [ + "test" + ], + "redirections": [ + "^https?:\\/\\/test\\.clearurls\\.xyz\\/void\\/index\\.html\\?url=([^&]*)" + ] + }, + "ClearURLsTestBlock2": { + "completeProvider": true, + "urlPattern": "^https?:\\/\\/test\\.clearurls\\.xyz\\/void\\/block\\.svg" + }, + "diepresse.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?diepresse\\.com", + "rules": [ + "from", + "xtor", + "xt_at" + ] + }, + "newsletter.lidl.com": { + "urlPattern": "^https?:\\/\\/newsletter\\.lidl(?:\\.[a-z]{2,}){1,}", + "rules": [ + "x" + ] + }, + "allegro.pl": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?allegro\\.pl", + "rules": [ + "reco_id", + "sid" + ] + }, + "backcountry.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?backcountry\\.com", + "rules": [ + "CMP_SKU", + "MER", + "mr:trackingCode", + "mr:device", + "mr:adType", + "iv_", + "CMP_ID", + "k_clickid", + "rmatt", + "INT_ID", + "ti", + "fl" + ], + "referralMarketing": [ + "mr:referralID" + ] + }, + "meetup.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?meetup\\.com", + "rules": [ + "rv", + "_xtd" + ] + }, + "apple.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?apple\\.com", + "rules": [ + "app", + "ign-itsc[a-z]+" + ] + }, + "alabout.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?alabout\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?alabout\\.com.*url=([^&]*)" + ] + }, + "newyorker.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?newyorker\\.com", + "rules": [ + "source", + "bxid", + "cndid", + "esrc", + "mbid" + ] + }, + "gog.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?gog\\.com", + "rules": [ + "track_click", + "link_id" + ] + }, + "tradedoubler.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?tradedoubler\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?tradedoubler\\.com.*(?:url|_td_deeplink)=([^&]*)" + ] + }, + "theguardian.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?theguardian\\.com", + "rules": [ + "CMP" + ] + }, + "srvtrck.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?srvtrck\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?srvtrck\\.com.*url=([^&]*)" + ] + }, + "mysku.ru": { + "urlPattern": "^https?:\\/\\/mysku\\.ru", + "redirections": [ + "^https?:\\/\\/mysku\\.ru.*r=([^&]*)" + ] + }, + "admitad.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?admitad\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?admitad\\.com.*ulp=([^&]*)" + ] + }, + "taobao.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?taobao\\.com", + "rules": [ + "price", + "sourceType", + "suid", + "ut_sk", + "un", + "share_crt_v", + "sp_tk", + "cpp", + "shareurl", + "short_name", + "app", + "scm[_a-z-]*", + "pvid", + "algo_expid", + "algo_pvid", + "ns", + "abbucket", + "ali_refid", + "ali_trackid", + "acm", + "utparam", + "pos", + "abtest", + "trackInfo", + "utkn", + "scene", + "mytmenu", + "turing_bucket", + "lygClk", + "impid", + "bftTag", + "bftRwd", + "spm", + "_u" + ] + }, + "tmall.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?tmall\\.com", + "rules": [ + "price", + "sourceType", + "suid", + "ut_sk", + "un", + "share_crt_v", + "sp_tk", + "cpp", + "shareurl", + "short_name", + "app", + "scm[_a-z-]*", + "pvid", + "algo_expid", + "algo_pvid", + "ns", + "abbucket", + "ali_refid", + "ali_trackid", + "acm", + "utparam", + "pos", + "abtest", + "trackInfo", + "user_number_id", + "utkn", + "scene", + "mytmenu", + "turing_bucket", + "lygClk", + "impid", + "bftTag", + "bftRwd", + "activity_id" + ] + }, + "tb.cn": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?tb\\.cn", + "rules": [ + "sm" + ] + }, + "bilibili.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?bilibili\\.com", + "rules": [ + "callback", + "spm_id_from", + "from_source", + "from", + "seid", + "mid", + "share_source", + "msource", + "refer_from", + "share_from", + "share_medium", + "share_source", + "share_plat", + "share_tag", + "share_session_id", + "timestamp", + "unique_k", + "vd_source", + "plat_id", + "buvid", + "is_story_h5", + "up_id" + ], + "exceptions": [ + "^https?:\\/\\/api\\.bilibili\\.com", + "^https?:\\/\\/space\\.bilibili\\.com" + ] + }, + "space.bilibili.com": { + "urlPattern": "^https?:\\/\\/space\\.bilibili\\.com", + "rules": [ + "spm_id_from" + ] + }, + "m.bilibili.com": { + "urlPattern": "^https?:\\/\\/m\\.bilibili\\.com", + "rules": [ + "bbid", + "ts" + ] + }, + "live.bilibili.com": { + "urlPattern": "^https?:\\/\\/live\\.bilibili\\.com", + "rules": [ + "visit_id", + "session_id", + "broadcast_type", + "is_room_feed" + ] + }, + "marketscreener.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?marketscreener\\.com", + "rules": [ + "type_recherche", + "mots", + "noredirect", + "RewriteLast", + "lien", + "aComposeInputSearch", + "type_recherche_forum", + "add_mots", + "countview" + ], + "exceptions": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?marketscreener\\.com\\/search\\/\\?" + ] + }, + "marketscreener.com search": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?marketscreener\\.com\\/search\\/\\?", + "rules": [ + "type_recherche", + "noredirect", + "RewriteLast", + "lien", + "aComposeInputSearch", + "type_recherche_forum", + "countview" + ] + }, + "bestbuy.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?bestbuy\\.com", + "rules": [ + "irclickid", + "irgwc", + "loc", + "acampID", + "mpid", + "intl" + ] + }, + "digidip.net": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?digidip\\.net", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?digidip\\.net.*url=([^&]*)" + ] + }, + "tiktok.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?tiktok\\.com", + "rules": [ + "u_code", + "preview_pb", + "_d", + "timestamp", + "user_id", + "share_app_name", + "share_iid", + "source" + ] + }, + "autoplus.fr": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?autoplus\\.fr", + "rules": [ + "idprob", + "hash", + "sending_id", + "site_id", + "dr_tracker" + ] + }, + "bigfishgames.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?bigfishgames\\.com", + "rules": [ + "pc", + "npc", + "npv[0-9]+", + "npi" + ] + }, + "dpbolvw.net": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?dpbolvw\\.net", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?dpbolvw\\.net.*url=([^&]*)" + ] + }, + "humblebundle.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?humblebundle\\.com", + "referralMarketing": [ + "partner" + ] + }, + "cafepedagogique.net": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?cafepedagogique\\.net", + "rules": [ + "actId", + "actCampaignType", + "actSource" + ] + }, + "bloculus.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?bloculus\\.com", + "rules": [ + "tl_[a-z_]+" + ] + }, + "mailpanion.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?mailpanion\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?mailpanion\\.com.*destination=([^&]*)" + ] + }, + "signtr.website": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?signtr\\.website", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?signtr\\.website.*redirect=([^&]*)" + ] + }, + "mailtrack.io": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?mailtrack\\.io", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?mailtrack\\.io.*url=([^&]*)" + ] + }, + "zillow.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?zillow\\.com", + "rules": [ + "rtoken" + ] + }, + "realtor.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?realtor\\.com", + "rules": [ + "ex", + "identityID", + "MID", + "RID" + ] + }, + "redfin.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?redfin\\.com", + "rules": [ + "riftinfo" + ] + }, + "epicgames.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?epicgames\\.com", + "rules": [ + "epic_affiliate", + "epic_gameId" + ] + }, + "onet.pl": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?onet\\.pl", + "rules": [ + "srcc", + "utm_v", + "utm_medium", + "utm_source" + ] + }, + "allrecipes.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?allrecipes\\.com", + "rules": [ + "internalSource", + "referringId", + "referringContentType", + "clickId" + ] + }, + "europe1.fr": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?europe1\\.fr", + "rules": [ + "xtor" + ] + }, + "effiliation.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?effiliation\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?effiliation\\.com.*url=([^&]*)" + ] + }, + "argos.co.uk": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?argos\\.co\\.uk", + "rules": [ + "istCompanyId", + "istFeedId", + "istItemId", + "istBid", + "clickOrigin" + ] + }, + "hlserve.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?hlserve\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?hlserve\\.com.*dest=([^&]*)" + ] + }, + "thunderbird.net": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?thunderbird\\.net", + "rules": [ + "src" + ] + }, + "cnbc.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?cnbc\\.com", + "rules": [ + "__source" + ] + }, + "roblox.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?roblox\\.com", + "rules": [ + "refPageId" + ] + }, + "cell.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?cell\\.com", + "rules": [ + "_returnURL" + ] + }, + "academic.oup.com": { + "urlPattern": "^https?:\\/\\/academic\\.oup\\.com", + "rules": [ + "redirectedFrom" + ] + }, + "flexlinkspro.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?flexlinkspro\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?flexlinkspro\\.com.*url=([^&]*)" + ] + }, + "agata88.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?agata88\\.com", + "rules": [ + "source" + ] + }, + "hs.fi": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?hs\\.fi", + "rules": [ + "share" + ] + }, + "yle.fi": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?yle\\.fi", + "rules": [ + "origin" + ] + }, + "ccbill.com": { + "urlPattern": "^https?:\\/\\/refer\\.ccbill\\.com", + "redirections": [ + "^https?:\\/\\/refer\\.ccbill\\.com.*HTML=([^&]*)" + ] + }, + "flipkart": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?flipkart\\.com", + "rules": [ + "otracker.?", + "ssid", + "[cilp]id", + "marketplace", + "store", + "srno", + "store", + "ppn", + "ppt", + "fm", + "collection-tab-name", + "sattr\\[\\]", + "p\\[\\]", + "st" + ] + }, + "idealo.de": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?idealo\\.de", + "rules": [ + "sid", + "src", + "siteId", + "lcb", + "leadOutUrl", + "offerListId", + "osId", + "cancelUrl", + "disc" + ] + }, + "idealo-partner.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?idealo-partner\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?idealo-partner\\.com.*trg=([^&]*)" + ] + }, + "teletrader.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?teletrader\\.com", + "rules": [ + "internal" + ] + }, + "webgains.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?webgains\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?webgains\\.com.*wgtarget=([^&]*)" + ] + }, + "deeplearning.ai": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?deeplearning\\.ai", + "rules": [ + "ecid", + "_hsmi", + "_hsenc" + ] + }, + "getpocket.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?getpocket\\.com", + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?getpocket\\.com.*url=([^&]*)" + ] + }, + "gamespot.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?gamespot\\.com", + "rules": [ + "PostType", + "ServiceType", + "ftag", + "UniqueID", + "TheTime" + ] + }, + "tokopedia.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?tokopedia\\.com", + "rules": [ + "src", + "trkid", + "whid" + ], + "redirections": [ + "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?tokopedia\\.com\\/promo.*r=([^&]*)" + ] + }, + "wkorea.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?wkorea\\.com", + "rules": [ + "ddw", + "ds_ch" + ] + }, + "eonline.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?eonline\\.com", + "rules": [ + "source", + "medium", + "content" + ] + }, + "reuters.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?reuters\\.com", + "rules": [ + "taid" + ] + }, + "app.adjust.com": { + "urlPattern": "^https?:\\/\\/app\\.adjust\\.com", + "redirections": [ + "^https?:\\/\\/app\\.adjust\\.com.*redirect=([^&]*)" + ] + }, + "change.org": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?change\\.org", + "rules": [ + "source_location", + "psf_variant", + "share_intent" + ] + }, + "ceneo.pl": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?ceneo\\.pl", + "rules": [ + "tag" + ] + }, + "wired.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?wired\\.com", + "rules": [ + "intcid" + ] + }, + "alibaba cloud arms": { + "urlPattern": "^https?:\\/\\/arms-retcode\\.aliyuncs\\.com", + "rules": [ + "pid", + "uid", + "tag", + "release", + "environment", + "sample", + "behavior", + "enableSPA", + "enableLinkTrace", + "page", + "begin", + "c2", + "c3", + "success", + "code", + "msg", + "api", + "traceId", + "pv_id", + "flag", + "sr", + "vp", + "ct", + "_v", + "sampling", + "dl", + "post_res" + ] + }, + "nikkei": { + "urlPattern": "^https?://(?:[a-z0-9-]+\\.)*?nikkei\\.co(?:m|\\.jp)", + "rules": [ + "adid", + "i_cid", + "n_cid", + "waad" + ] + }, + "weibo": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?weibo\\.(cn|com)", + "rules": [ + "weibo_id", + "dt_dapp" + ] + }, + "fiverr.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?fiverr\\.com", + "rules": [ + "context_referrer", + "source", + "ref_ctx_id", + "funnel" + ] + }, + "etsy.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?etsy\\.com", + "rules": [ + "click_key", + "click_sum", + "organic_search_click" + ] + }, + "magento.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?magento\\.com", + "rules": [ + "itm_campaign", + "itm_medium", + "itm_source", + "itm_term" + ] + }, + "novinky.cz": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?novinky\\.cz", + "rules": [ + "dop_ab_variant", + "dop_source_zone_name", + "dop_req_id", + "dop_id", + "source", + "seq_no" + ] + }, + "aktualne.cz": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?aktualne\\.cz", + "rules": [ + "dop_ab_variant", + "dop_source_zone_name", + "dop_req_id", + "dop_id" + ] + }, + "seznamzpravy.cz": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?seznamzpravy\\.cz", + "rules": [ + "dop_ab_variant", + "dop_source_zone_name", + "dop_req_id", + "dop_id", + "source", + "seq_no" + ] + }, + "billiger.de": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?billiger\\.de", + "rules": [ + "log", + "p" + ] + }, + "respekt.cz": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?respekt\\.cz", + "rules": [ + "sznclid", + "dop_ab_variant", + "dop_source_zone_name", + "dop_req_id", + "dop_id" + ] + }, + "faei.cz": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?faei\\.cz", + "rules": [ + "sznclid", + "dop_ab_variant", + "dop_source_zone_name", + "dop_req_id", + "dop_id" + ] + }, + "iprima.cz": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?iprima\\.cz", + "rules": [ + "sznclid", + "dop_ab_variant", + "dop_source_zone_name", + "dop_req_id", + "dop_id" + ] + }, + "nova.cz": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?nova\\.cz", + "rules": [ + "sznclid", + "dop_ab_variant", + "dop_source_zone_name", + "dop_req_id", + "dop_id" + ] + }, + "duckduckgo": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?duckduckgo\\.com", + "redirections": [ + "^https?:\\/\\/duckduckgo\\.com\\/l\\/.*?uddg=([^&]+)" + ] + }, + "mercadolibre": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?mercadolibre\\.com", + "rules": [ + "DEAL_ID", + "L", + "S", + "T", + "V", + "pdp_filters", + "position", + "search_layout", + "tracking_id", + "type", + "c_[_a-zA-Z]+", + "me\\.[_a-zA-Z]+", + "reco_[_a-zA-Z]+" + ] + }, + "quizlet": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?quizlet\\.com", + "rules": [ + "funnelUUID" + ] + }, + "bbc": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?bbc\\.com", + "rules": [ + "xtor", + "at_[a-z_]+" + ] + }, + "airbnb": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?airbnb\\.(com|ae|ca|co\\.in|co\\.nz|co\\.uk|co\\.za|com\\.au|com\\.mt|com\\.sg|de|gy|ie)", + "rules": [ + "federated_search_id", + "search_type", + "source", + "source_impression_id" + ] + }, + "partner-ads.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?partner-ads\\.com", + "redirections": [ + "^https?:\\/\\/.*?partner-ads\\.com\\/.*?htmlurl=([^&]+)" + ] + }, + "kahoot.it": { + "urlPattern": "^https?://(?:[a-z0-9-]+\\.)*?kahoot\\.it", + "rules": [ + "refer_method" + ] + }, + "href.li": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?href\\.li", + "redirections": [ + "^https?:\\/\\/href\\.li\\/\\?(http.+)" + ] + }, + "adform.net": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?adform\\.net", + "redirections": [ + "^https?:\\/\\/track\\.adform\\.net\\/C\\/.*?ckurl=([^&]+)" + ] + }, + "artefact.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?artefact\\.com", + "redirections": [ + "^https?:\\/\\/.*?artefact\\.com\\/trck\\/.*?deeplinkurl=([^&]+)" + ] + }, + "awin1.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?awin1\\.com", + "redirections": [ + "^https?:\\/\\/.*?awin1\\.com\\/.*?ued=([^&]+)" + ] + }, + "telekom.de": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?telekom\\.de", + "redirections": [ + "^https?:\\/\\/aaa\\.telekom\\.de\\/trck\\/.*?deeplinkurl=([^&]+)" + ] + }, + "cc.loginfra.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?loginfra\\.com", + "redirections": [ + "^https?:\\/\\/cc\\.loginfra\\.com\\/.*?u=([^&]+)" + ] + }, + "t.umblr.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?umblr\\.com", + "redirections": [ + "^https?:\\/\\/t\\.umblr\\.com\\/redirect\\?z=([^&]+)" + ] + }, + "goodreads.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?goodreads\\.com", + "rules": [ + "from_search", + "from_srp", + "qid", + "rank", + "ac" + ] + }, + "sohu": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?sohu\\.com", + "rules": [ + "pvid", + "scm" + ] + }, + "shopee": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?shopee\\.(com|co\\.th)", + "rules": [ + "publish_id", + "sp_atk", + "xptdk" + ] + }, + "lazada": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?lazada\\.(com|co\\.th|co\\.id|com\\.my|com\\.ph|sg|vn)", + "rules": [ + "clickTrackInfo", + "abid", + "pvid", + "ad_src", + "spm", + "src", + "from", + "scm", + "pa", + "pid_pvid", + "did", + "mp", + "cid", + "impsrc", + "pos" + ] + }, + "pantip.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?pantip\\.com" + }, + "skimresources.com": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?skimresources\\.com", + "redirections": [ + "^https?:\\/\\/go\\.skimresources\\.com\\/.*?url=([^&]+)" + ] + }, + "office-partner.de": { + "urlPattern": "^https?:\\/\\/(?:[a-z0-9-]+\\.)*?office-partner\\.de", + "rules": [ + "sPartner", + "campaign" + ] + } + } +}