用JavaScript为URL瘦身

由于 SEO 优化或流量统计需要,邮箱订阅或某些网站会对自身 URL 进行处理,在原 URL 后面追加一系列的标签,形如

https://zhuanlan.zhihu.com/p/22545574?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

其原本的 URL 为:

https://zhuanlan.zhihu.com/p/22545574

带有标签后缀的 URL 不够优雅,分享这样的 URL 时会影响观感,需要手动删除无用参数(有点强迫症的感觉)。

好在 @ibingfei 给我找了一个 解决方案,只需将处理 URL 的 JS 脚本存为书签,使用时点击一下该书签即可。下面是经我稍微改动,加入过滤 acm、mtt、cks 三个标签后的 JS 脚本,仅供参考:

javascript:(function(){
  var search, params, i, re;
  search = location.search.replace( /^\?/, '' ).split( '&' );
  params = [];
  if (!search) return;
  i = search.length;
  while( i-- ){
    if( !search[i].match( /^utm_|^hmsr|^acm|^mtt|^cks|^fb_action|^fb_source|^action_object_map|^action_type_map|^action_ref_map/ ) ){
      params.push( search[i] );
    } else {
      re = true;
    }
  }
  if (re) {
    history.pushState('','',location.pathname + (( params.length ) ? '?' + params.join( '&' ) : '' ));
  }
})();

此法的原理是对 URL 中的无用标签进行正则匹配,从而实现过滤。当然你也可以自行添加过滤规则,只需在其中按 !search[i].match( / |^<标签名>/ ) 格式添加标签即可。

举个栗子:如测试后发现 http://yhyy135.github.io?blabla=hahaha 中,删除标签 blabla 后不影响正常访问,则可在上述 JS 脚本的正则规则中添加 |^blabla 即可。整个 URL 减肥过程如此流畅。

updatedupdated2024-12-212024-12-21