Browse Source

feat(urlcleaner): add a bunch of parameters

Taken from a cursory look at https://rules2.clearurls.xyz/data.minify.json
jvoisin 5 months ago
parent
commit
c365118cf7
1 changed files with 32 additions and 1 deletions
  1. 32 1
      internal/reader/urlcleaner/urlcleaner.go

+ 32 - 1
internal/reader/urlcleaner/urlcleaner.go

@@ -25,6 +25,16 @@ var trackingParams = map[string]bool{
 	"fb_source":       true,
 	"fb_comment_id":   true,
 
+	// Humble Bundles
+	"hmb_campaign": true,
+	"hmb_medium":   true,
+	"hmb_source":   true,
+
+	// Likely Google as well
+	"itm_campaign": true,
+	"itm_medium":   true,
+	"itm_source":   true,
+
 	// Google Click Identifiers
 	"gclid":  true,
 	"dclid":  true,
@@ -40,6 +50,9 @@ var trackingParams = map[string]bool{
 	"campaign_term":    true,
 	"campaign_content": true,
 
+	// Google
+	"srsltid": true,
+
 	// Yandex Click Identifiers
 	"yclid":  true,
 	"ysclid": true,
@@ -53,6 +66,7 @@ var trackingParams = map[string]bool{
 	// Mailchimp Click Identifiers
 	"mc_cid": true,
 	"mc_eid": true,
+	"mc_tc":  true,
 
 	// Wicked Reports click tracking
 	"wickedid": true,
@@ -87,6 +101,9 @@ var trackingParams = map[string]bool{
 	// Branch.io
 	"_branch_match_id": true,
 	"_branch_referrer": true,
+
+	// Readwise
+	"__readwiseLocation": true,
 }
 
 // Outbound tracking parameters are appending the website's url to outbound links.
@@ -95,6 +112,20 @@ var trackingParamsOutbound = map[string]bool{
 	"ref": true,
 }
 
+var trackParamsPrefixes = []string{
+	"utm_", // https://en.wikipedia.org/wiki/UTM_parameters
+	"mtm_", //https://matomo.org/faq/reports/common-campaign-tracking-use-cases-and-examples/
+}
+
+func isTrackingParam(param string) bool {
+	for _, prefix := range trackParamsPrefixes {
+		if strings.HasPrefix(param, prefix) {
+			return true
+		}
+	}
+	return trackingParams[param]
+}
+
 func RemoveTrackingParameters(parsedFeedURL, parsedSiteURL, parsedInputUrl *url.URL) (string, error) {
 	if parsedFeedURL == nil || parsedSiteURL == nil || parsedInputUrl == nil {
 		return "", errors.New("urlcleaner: one of the URLs is nil")
@@ -106,7 +137,7 @@ func RemoveTrackingParameters(parsedFeedURL, parsedSiteURL, parsedInputUrl *url.
 	// Remove tracking parameters
 	for param := range queryParams {
 		lowerParam := strings.ToLower(param)
-		if trackingParams[lowerParam] || strings.HasPrefix(lowerParam, "utm_") {
+		if isTrackingParam(lowerParam) {
 			queryParams.Del(param)
 			hasTrackers = true
 		}