V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
zhishixiang
V2EX  ›  分享创造

利用蹩脚的 js 知识写了一个统计真实访客数量的脚本

  •  1
     
  •   zhishixiang ·
    zhishixiang · 2022-06-13 16:14:08 +08:00 · 3130 次点击
    这是一个创建于 676 天前的主题,其中的信息可能已经有所发展或是发生改变。

    趁着高考结束后闲着无事,入门了网页和小程序开发,刚学完 ajax 没多久,打算写一个小项目作为总结,于是便有了此项目。

    本项目基于前端请求后端、后端记录数据的方式统计访客数据,使得静态网站也拥有了展示访客数据的功能。且本项目还利用了 cookies 来防止重复提交数据,确保记录真实访问量。本来是想只给自己的网站用的,但后面还是决定开源了(虽然 js 脚本开不开源都无所谓)。

    后端搭建在了腾讯云的 serverless 云函数上,国内访问速度应该是有保证的,经过测试响应时间均不超 50ms ,个人感觉还是相当不错的。

    项目地址: https://github.com/zhishixiang/visitorStatistic ,由于刚学没多久因此代码非常烂,希望大佬们轻喷。

    34 条回复    2022-06-15 15:56:57 +08:00
    zhw2590582
        1
    zhw2590582  
       2022-06-13 16:20:28 +08:00
    可以做成图片,前端不用任何 js 代码
    zhishixiang
        2
    zhishixiang  
    OP
       2022-06-13 16:21:27 +08:00
    @zhw2590582 准备研究 python 图像处理,到时候说不定能整出来
    zhishixiang
        3
    zhishixiang  
    OP
       2022-06-13 16:25:33 +08:00
    @zhw2590582 有个问题:直接请求图片能否记录 cookies
    fzdwx
        4
    fzdwx  
       2022-06-13 16:32:30 +08:00
    @zhishixiang 这个就只能用 ip 来做唯一性判断了
    zhw2590582
        5
    zhw2590582  
       2022-06-13 16:32:32 +08:00   ❤️ 1
    可以的,可以查一下响应头 set-cookie 的用法
    doublleft
        6
    doublleft  
       2022-06-13 16:34:55 +08:00   ❤️ 1
    linzhipeng
        7
    linzhipeng  
       2022-06-13 16:40:01 +08:00
    @doublleft 哈哈哈哈哈
    linzhipeng
        8
    linzhipeng  
       2022-06-13 16:40:23 +08:00
    这是打算大学报考计算机专业了么
    zhishixiang
        9
    zhishixiang  
    OP
       2022-06-13 16:40:59 +08:00
    @doublleft 反正纯内网访问,不慌
    fe619742721
        10
    fe619742721  
       2022-06-13 16:46:45 +08:00   ❤️ 1
    @zhishixiang 密钥管理其实也是工程的一部分,这里可以研究一下合理通用的方案,养成好习惯
    autoxbc
        11
    autoxbc  
       2022-06-13 17:14:36 +08:00
    document.domain 是已废弃属性,建议用 location.host 替代;
    https://developer.mozilla.org/zh-CN/docs/Web/API/Document/domain

    Web 标准中提供专用的 Beacon API 来发送统计数据,可以考虑用一下;
    https://developer.mozilla.org/zh-CN/docs/Web/API/Beacon_API
    learningman
        12
    learningman  
       2022-06-13 17:16:27 +08:00 via Android   ❤️ 1
    就你这拿 format 拼 sql ,当 ctf 题出给大一的都算送分
    learningman
        13
    learningman  
       2022-06-13 18:04:12 +08:00
    learningman
        14
    learningman  
       2022-06-13 18:06:33 +08:00
    建议你立刻下线 demo ,不然明天可能就要来问 MySQL 被黑了怎么办了
    zhishixiang
        15
    zhishixiang  
    OP
       2022-06-13 19:59:07 +08:00
    @learningman 已经说是烂代码了┑( ̄Д  ̄)┍
    zhishixiang
        16
    zhishixiang  
    OP
       2022-06-13 20:34:14 +08:00
    @learningman 研究了一会,看不懂,已经直接 reset hard 了
    xitler
        17
    xitler  
       2022-06-13 20:46:50 +08:00
    lz 加油~
    Danswerme
        18
    Danswerme  
       2022-06-13 21:04:38 +08:00
    同款密码,我以前也用过这个密码哈哈哈哈哈
    zhishixiang
        19
    zhishixiang  
    OP
       2022-06-13 21:04:45 +08:00
    @learningman 已经进行防注入处理了
    zhishixiang
        20
    zhishixiang  
    OP
       2022-06-13 21:06:47 +08:00
    @learningman 你删了这个回复吧,点进去还能看到密码
    SunsetShimmer
        21
    SunsetShimmer  
       2022-06-13 21:18:33 +08:00
    @zhishixiang V2EX 的回复好像是不可删除的,(除非 @ 站长?)
    learningman
        22
    learningman  
       2022-06-13 21:23:26 +08:00
    @zhishixiang 你处理在哪了,你这不还是字符串拼 SQL
    learningman
        23
    learningman  
       2022-06-13 21:24:26 +08:00
    @zhishixiang 你先 filter-branch ,然后找 GitHub 交工单删敏感信息,就不说我删不了回复了,就算能删除你这不是掩耳盗铃
    learningman
        24
    learningman  
       2022-06-13 21:29:33 +08:00
    用了 prepare statement ,算是改善了点吧,但是你这 render 好像还是能反序列化的样子
    zhishixiang
        25
    zhishixiang  
    OP
       2022-06-13 21:45:46 +08:00
    @learningman 以前写 flask 都是在内网跑的,没怎么注意防注入,看来以后得开始研究了
    greatghoul
        26
    greatghoul  
       2022-06-14 07:39:37 +08:00
    就你这动手能力,高考成绩什么的,感觉已经不重要了。
    ppppppp123
        27
    ppppppp123  
       2022-06-14 09:42:21 +08:00
    校长刚才说要破格录取你了!
    cy1027
        28
    cy1027  
       2022-06-14 10:30:51 +08:00
    它看起来好像出了点小问题
    zhishixiang
        29
    zhishixiang  
    OP
       2022-06-14 11:53:53 +08:00
    @cy1027 什么问题
    lisongeee
        30
    lisongeee  
       2022-06-14 14:35:42 +08:00
    小小的建议:js 代码尽量不要用 var ,用 const/let ,另外既然都是 serverless 为啥不前后端都用 js 呢

    腾讯云 serverless 我记得现在收费了,阿里云 /cloudflare 现在还是有免费额度的

    另外也可以看看我的,使用 vue 模板 ssr 的 计数器: https://github.com/lisonge/visit-counter
    doublleft
        31
    doublleft  
       2022-06-14 15:57:18 +08:00
    @zhishixiang #9 https://my.toho.red/archives/81/ 但是你用的都是同一个密码哇
    isSamle
        32
    isSamle  
       2022-06-14 16:29:07 +08:00
    这么卷吗
    zhishixiang
        33
    zhishixiang  
    OP
       2022-06-15 15:53:43 +08:00
    @doublleft 那条回复竟然没隐藏,看来得改改了
    zhishixiang
        34
    zhishixiang  
    OP
       2022-06-15 15:56:57 +08:00
    @lisongeee 以前学 js 一直是 var ,最近没怎么补 js 的知识。腾讯云 serverless 有学生优惠,一年才 20 几,打算嫖完再换别家。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2832 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 14:06 · PVG 22:06 · LAX 07:06 · JFK 10:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.