保护隐私的分析

F-Droid 总是尽可能地避免跟踪用户。我们永远不需要帐户,并且我们投入了很多努力使 f-droid.org 服务器也很难跟踪用户。我们也认识到使用数据具有价值。它可以用来帮助显示受欢迎程度,并为应用开发者提供一些用户喜欢的反馈。

经过多年完全远离数据,包括禁用 f-droid.org 上的下载计数,我们开始了一项在不跟踪用户的情况下跟踪__使用__的实验。我们基于 Tor 项目Guardian Project 构建我们的工作。我们已在 https://search.f-droid.orghttps://mirror.f-droid.org/ 上启用访问日志以进行初始试用。(_注意:在 f-droid.org 上可能完全在客户端使用 javascript 进行搜索,在这种情况下,这些搜索将永远不会命中 search.f-droid.org,因此不会被记录 _)。

这里需要注意的是,Nginx 不允许像 Apache 那样的自定义时间格式,因此 Web 日志将包含每次点击的确切日期和时间。时区已归零。原始日志不会被发布,它们会在被输入任何分析系统(如 Matomo/Piwik)之前进行清理。此外,Nginx 不允许自定义错误日志格式,因此错误将具有完整的信息。因此,错误日志不会在没有完全清理的情况下用于分析,并且只会保留很短的时间。

我们的设置

我们的服务器运行 Debian,因此我们将会为该环境提供命令。首先,确保 Nginx 设置了 “geoip” 扩展。这使 Nginx 能够将 IP 地址转换为国家代码,以便记录国家代码而不是 IP 地址。

# apt-get install libnginx-mod-http-geoip geoip-database

然后在 /etc/nginx/nginx.conf 中启用自定义日志记录设置:

geoip_country /usr/share/GeoIP/GeoIP.dat;
log_format privacy '0.0.0.0 - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "-" $geoip_country_code';

access_log /var/log/nginx/access.log privacy;

这使得访问日志数据看起来是这样:

# tail /var/log/nginx/access.log
0.0.0.0 - - [12/Apr/2019:07:01:37 +0000] "GET /android-free/repository/ HTTP/1.1" 200 949 "-" "-" PL
0.0.0.0 - - [12/Apr/2019:07:02:27 +0000] "GET /robots.txt HTTP/1.1" 200 24 "-" "-" US
0.0.0.0 - - [12/Apr/2019:07:02:27 +0000] "GET /android-free/repository/ HTTP/1.1" 200 949 "-" "-" US
0.0.0.0 - - [12/Apr/2019:07:04:08 +0000] "GET / HTTP/1.1" 200 278 "-" "-" BR
0.0.0.0 - - [12/Apr/2019:07:06:41 +0000] "GET /android-free/repository/ HTTP/1.1" 200 949 "-" "-" US
0.0.0.0 - - [12/Apr/2019:07:11:45 +0000] "GET /android-free/repository/ HTTP/1.1" 200 949 "-" "-" FR
0.0.0.0 - - [12/Apr/2019:07:16:32 +0000] "GET / HTTP/1.1" 200 278 "-" "-" CA
0.0.0.0 - - [12/Apr/2019:07:16:49 +0000] "GET /android-free/repository/ HTTP/1.1" 200 949 "-" "-" GB
0.0.0.0 - - [12/Apr/2019:07:19:42 +0000] "GET / HTTP/1.1" 200 278 "-" "-" VN
0.0.0.0 - - [12/Apr/2019:07:20:20 +0000] "GET /robots.txt HTTP/1.1" 200 24 "-" "-" US
0.0.0.0 - - [12/Apr/2019:07:21:51 +0000] "GET /android-free/repository/ HTTP/1.1" 200 949 "-" "-" US
0.0.0.0 - - [12/Apr/2019:07:26:57 +0000] "GET /android-free/repository/ HTTP/1.1" 200 949 "-" "-" DE
0.0.0.0 - - [12/Apr/2019:07:32:01 +0000] "GET /android-free/repository/ HTTP/1.1" 200 949 "-" "-" SE
0.0.0.0 - - [12/Apr/2019:07:32:23 +0000] "GET /android-free/repository/sys-img/android/sys-img-9.0.0_r33-sdk.xml HTTP/1.1" 200 904 "-" "-" US
0.0.0.0 - - [12/Apr/2019:07:37:04 +0000] "GET /android-free/repository/ HTTP/1.1" 200 949 "-" "-" DE
0.0.0.0 - - [12/Apr/2019:07:38:55 +0000] "\x03\x00\x00/*\xE0\x00\x00\x00\x00\x00Cookie: mstshash=Administr" 400 173 "-" "-" RU
0.0.0.0 - - [12/Apr/2019:07:39:12 +0000] "GET / HTTP/1.1" 200 278 "-" "-" EC