码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【nginx】使用 sub_filter 注入 js 代码,例如 google analysis 等


    目录
    • 1. 创建 GA[1]
    • 2. 注入代码[2]
    • 3. 结果
      • 网站 F12
      • GA 控制台
    • 其他用处案例:给页面末尾添加文字
    • Reference

    在一项工作中,已经将内网的一个网站通过 二级域名 + nginx + frp 的方式映射到公网。网站并不属于我来管理,当我想了解有多少人使用了我提供的公网来访问网站,此时就想起了 Google Analysis (简称 GA)。

    并且在之前搭建前端时使用的 Netlify 服务,就可以实现直接插入 js 代码而不需要修改前端代码,就想到肯定有一种方式可以注入代码。此时自然而然就想到了 nginx,通过搜索之后(见 Reference) 找到了对应的方式,但是方法为英文且是2015年,GA 代码有点旧,所以在重新生成 GA 代码的基础上,注入到前端网站上。

    除了 GA 之外,只要能插入 js,就有其他很多玩法了,例如:

    1. 修改数据;
    2. 增加广告;
    3. 修改样式;
    4. ...

    1. 创建 GA[1]


    2. 创建新的工作空间

    3. 进入 Data stream

    4. 找到自动生成的代码,且点击 copy 按钮
    注意:必须点击 copy 按钮,得到单行的代码方便之后使用,不要选中用复制!


    例如

     <script async src="https://www.googletagmanager.com/gtag/js?id=G-******">script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-******'); script>
    

    2. 注入代码[2]

    1. 格式化 copy 代码为 sub_filter '{copy code}';,要求如下:
      • 含义:替换 为后半部分
      • 代码必须为一行
      • 使用 sub_filter 语句替换
      • GA 生成的代码中混用了 ' 和 ",需要统一为 "
      • 不要忘记分号

    例如

    sub_filter head> ' <script async src="https://www.googletagmanager.com/gtag/js?id=G-******">script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag("js", new Date()); gtag("config", "G-******"); script>'
    
    1. 添加进 nginx 中的 location,然后重启
      注意: 似乎需要开启 sub_filter 功能有单独的指令,我是用的是宝塔提供的 nginx,重启后直接可以使用。
      注意: 是否只能插入 location 还待商议。

    3. 结果

    网站 F12

    GA 控制台

    其他用处案例:给页面末尾添加文字

    Reference

    1. https://support.google.com/analytics/answer/9304153?hl=en#zippy=%2Cweb%2Cfind-your-g--id-for-any-platform-that-accepts-a-g--id%2Cadd-your-tag-using-google-tag-manager%2Cadd-the-google-tag-directly-to-your-web-pages
    2. https://gist.github.com/jirutka/5279057
  • 相关阅读:
    MXNet-图像分类(gluon版本)【附源码】
    最全2000道Java后端面试题,从基础到进阶
    [附源码]Python计算机毕业设计高校教材网上征订系统
    ZYNQ上的简单 FSK 基带发射器
    YOLOV9目标检测-训练、验证、推理
    Rails进阶——框架理论认知与构建方案建设(一)
    基于SpringBoot的花店销售网站
    在Vue 3中使用v-model来构建复杂的表单
    Vue挂载(mount)和继承(extend)
    深度学习检测小目标常用方法
  • 原文地址:https://www.cnblogs.com/XD00/p/16768644.html
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号