自定义shell终端提示符+解决Chrome对HTTPS页面的CNZZ 统计代码报错

一、自定义shell提示符

看到许多大佬有特别漂亮的shell提示符,如果按照命令写ps1那太复杂了,对我这个小白来说简直太难了。所以找到了这个网站,.bashrc generator,推荐给大家十分方便,步骤如下:

  1. 把左边的元素拖进中间的框,按你想要的顺序排好。
  2. 在框里双击元素就可以选颜色和加粗。
  3. 在3框里可以看到预览效果。
  4. 就是.bashrc的代码了复制下来。
  5. 用vim ~/.bashrc 把代码粘贴到最后,如下图:

这是我的提示符,效果如下图:

PS:

我又换了新样式了:

代码:

export PS1="\[\033[38;5;93m\]\u\[$(tput sgr0)\] \[$(tput sgr0)\]\[\033[38;5;41m\]\@\[$(tput sgr0)\] \[$(tput sgr0)\]\[\033[38;5;11m\]\w\[$(tput sgr0)\]\n\[$(tput sgr0)\]\[\033[38;5;10m\]\\$\[$(tput sgr0)\]: \[$(tput sgr0)\]"

二、解决Chrome对HTTPS页面的CNZZ 统计代码报错

1.问题背景

网站加入CNZZ的JS统计代码后,Chrome浏览器出现警告:阻止跨站解析器阻断脚本通过document.write调用(A parser-blocking,cross site script,XXXX.js is invoked via document.write.)。该警告有时候可能会使HTTPS页面出现不安全因素,甚至让使用EV SSL证书的网站出现不显示绿色地址栏等问题。如下图:

如果打开F12会出现报错信息,主要原因是:

谷歌从Chrome 55版本开始干预“通过document.write插入的跨站解析器阻断脚本”的加载,提升页面加载速度。
根据Chromestatus的表述,对于诸如2G之类的连接速度较慢的用户来说,通过document.write加载的第三方脚本,性能损失通常非常严重,以至于主页内容的显示会延迟数十秒。
在浏览器呈现页面之前,必须通过解析HTML标记来构建DOM树。无论何时解析器遇到脚本,它都必须停止并执行脚本,才能继续解析HTML。如果脚本动态插入另一个脚本,解析器将被迫等待更长时间才能下载资源,这可能会导致一次或多次网络往返并延迟首次呈现页面的时间。
Chrome从第55版开始代表所有用户进行干预,具体来说,当满足以下所有条件时,Chrome将不执行通过document.write()插入的<script>元素:

2.解决方法

解决办法就是将网站的CNZZ普通JS代码更改为异步统计代码。示例如下:

CNZZ的统计代码:
<script src='https://s22.cnzz.com/z_stat.php?id=XXXXXXX&web_id=XXXXXX' language='JavaScript'</script>

改为异步统计代码:

<script>
var cnzz_s_tag = document.createElement('script');
cnzz_s_tag.type = 'text/javascript';
cnzz_s_tag.async = true;
cnzz_s_tag.charset = 'utf-8';
cnzz_s_tag.src = 'https://w.cnzz.com/c.php?id=XXXXXXXX&async=1';
var root_s = document.getElementsByTagName('script')[0];
root_s.parentNode.insertBefore(cnzz_s_tag, root_s);
</script>

Comments ( 3 评论)

wave
  1. Dark

    2021年08月30日

    不用cnzz@(笑眼)

    Android · Google Chrome
    1. FlyPig 博主

      2021年08月30日

      @Dark ,哈哈!那大佬,你用的是什么?

      Windows 10 · Google Chrome
      1. AHdark

        2021年09月01日

        @FlyPig ,百度统计和Google Analytics都比CNZZ香的多

        Windows 10 · Google Chrome
悄悄话

搜索