静态网站分析没有使用Goaccess的JavaScript

2021-03-18 05:48:17

我一直在使用CloudFlare Analytics来获得一个想法,如果有人访问这个网站。 CloudFlare告诉我请求的数量,唯一的访客和使用带宽。考虑到它,'自由并从框中摆脱盒子(如果您使用CloudFlare管理DNS),那就好了。但是,在历史上只有30天,我不知道有多少访问是爬虫和访问者请求的内容。

我一直想要一段时间给予GoAccess。 Goaccess通过解析服务器的访问日志来提供实时分析。它完全适用于服务器端和IT' s在我看来是最隐私的分析解决方案,因为它只收集浏览器明确发送到服务器的内容。虽然有一个轻微的问题 - 我在Gitlab页面和第#39;没有服务器上托管这个网站。

跟踪像素是由Facebook制作臭名昭着的1x1透明像素,他将其使用它来跟踪第三方网站的人。 I' LL使用与Ben Hoyt和Tim Nash的优秀撰写相同的技术。

要从像素请求中获取任何有用的信息,我们' ll需要添加我们要记录到像素' s查询字符串的数据。 Ben和Tim使用了一个微小的脚本将像素添加到它们的页面,它会通过当前的URL和引用者发送。自从我前段时间从JavaScript解放出这个网站以来,我赢了' t使用任何脚本。而不是i' ll在构建时生成像素标记,将当前网址烘焙到像素请求中:cat.gif?u =<< current-url&gt ;.这样,我赢了' t需要任何运行时js,但不会有推荐人数据。对我来说足够好。

我们' ll告诉nginx在路径/cat.gif下为空的gif提供服务。 (最初我使用了T.gif,但它被EasyPrivacy阻止了。)

如果我们使用goaccess解析pixel.log,我们会看到一堆请求/cat.gif。我们' ll需要更改日志格式以使用u查询param作为请求URL。

事件{} http {include mime。类型; default_type应用程序/八位字节 - 流; sendfile上; #goaccess兼容像素日志格式log_format像素' $ remote_addr - $ remote_user [$ time_local]" $ rurl" $ status $ body_bytes_sent"" " $ http_user_agent" " $ http_x_forword_for"' ;服务器{听8080; server_name localhost t .itgate .cz; #跟踪像素位置= / cat .gif {extent_gif;设置$ rurl $ arg_u; Access_log / var / log / nginx / pixel .log像素; }}}

让' s将此作为nginx.conf保存为nginx.conf并从与配置的相同目录运行nginx:

如果您打开http:// localhost:8080 / cat.gif,则在像素' s日志中应该有一个如下的记录:

$ cat log / pixel.log 172.17.0.1 - - [14 / Mar / 2021:21:13:15 +0000]"" 200 43"" " Mozilla / 5.0(Windows NT 10.0; RV:78.0)Gecko / 20100101 Firefox / 78.0" " - "

它' syrid and sand,isx上的firefox用抗拒指纹打印假装它在窗户上运行,是8个版本的老。

$ docker运行-it --rm -p 7890:7890 \ -v $ {pwd} / goaccess:/ goaccess \ -v $ {pwd} /log/pixel.log:/goaccess/access.log \ allinurl / goaccess - -config-file = / goaccess / goaccess.conf

在浏览器中打开goaccess / index.html,它是!如果您对/cat.gif进行了另一个请求,则报告应实时更新。

我想将此部署到家里的覆盆子,所以我' ll需要一种通过网络访问报告的方法。我们已经拥有了nginx,跑步;让' s添加一个服务器部分以在另一个端口上提供报告,以便我只能将转发转发的像素:

要与早期的Docker命令合作,我们需要将报告映射到/ var / www和公开端口8081:

要使部署更容易,我创建了一个docker-compose.yml。我以不同方式映射端口,以便在端口80,7890处获得像素是Goaccess' s默认Websocket端口和7891是该报告。 - -ignore-panels隐藏我们没有数据的部分。

我添加了Let' s加密配置以启用HTTPS。如果没有HTTPS,那么数字将是歪曲的,因为最近版本的Chrome不会加载混合内容。有关必要步骤,请参阅README以使其全部运行。

版本:' 3.8'服务:GOAccess:GOACCESS:GOACCESS -GOACCESS命令:--config -file = / goaccess / goaccess.conf - -ignore -panel = requests_static - -ignore -panel =引用者 - -ignore -panel =引用_site - -ignore -panel = keyphrases - -ignore -panel = status_codes - -ignore -panel = not_found环境: - tz =欧洲/布拉格卷: - $ {pwd} / goaccess:/ goaccess - $ {pwd} / log:/ log端口: - 7890:7890#goaccess websocket goaccess-nginx:container_name:goaccess -nginx命令:' / bin / sh -c'''而:;睡觉6h&等待$$ {}; nginx -s重新加载;完成& nginx -g"守护守护进程;"''卷: - $ {pwd} /nginx.conf:/etc/nginx/nginx.conf:ro - $ {pwd} / log:/ var / log / nginx - $ {pwd} / goaccess / html:/ var / www - $ {pwd} / certbot / conf:/ etc / letsencrypt - $ {pwd} / certbot / www:/ var / www / certbot图片:tobi312 / RPI -nginx:Alpine端口: - #cexot - 443:443#跟踪Pixel - 7891:8081#goaccess报告goaccess-certbot:container_name:goaccess -certbot图片:certbot / certbot:arm32v6 -latest入口点:" / bin / sh -c'陷阱退出术语;尽管 :; CERTBOT续签;睡12H&等待$$ {!};完成;'"卷: - ./certbot/conf:/ etc / letsencrypt - ./certbot/www:/ var / www / certbot

从&#39导入{Userouter};下一个/ dist / client /路由器'导入从&#39反应;反应' const pixel_url =' https://t.bitgate.cz/cat.gif?u ='出口const pixel:反应。 fc =()=> {const router = userouter()const clusturl = encodeuricomponent(`$ {process .env. next_public_base_url} $ {路由器.aspath}`)return()}