软件镜像站 + GDPR:欧洲用户真的会路过吗 / 离析

离析是个啥?

这是一个偶然想到的新栏目名字,确实想理解的话可以通过拆字来解释。这个词其实挺适合近几年的大趋势的,全球化似乎玩不下去了,更多的人开始思考中心化的问题。引用一个我之前其实很不想引用的句式,“哪有什么岁月静好”,只不过时候未到。

声明:不是律师,本文跟法律有关的分析纯属瞎扯。

GDPR 是个啥?

各国的互联网用户这几年开始见到越来越多的网站问你要不要饼干(Cookies)、越来越多的应用文绉绉地要你同意隐私协议,这是为什么呢?因为 2018 年来自欧盟的 GDPR 开始实施了。

你会想问,为啥一个欧盟的法律搞得全世界都开始行动?的确,这部欧盟法案理论上只会保护欧盟用户。法案里面的用词是 natural persons、data subjects(这个概念似乎是指人),有人的理解是,只要互联网产品/服务对在欧盟提供、适用欧盟法律,就需要合规。一个更准确的说法是:欧盟居民。

对比一下将在 2020 年实施的美国加州版 GDPR——CCPA,对这些保护措施的适用范围就做了详细的规定:在加州盈利超过了一定标准的服务提供者,就需要对加州用户的数据负责了。

这么说,还是跟我们非欧盟居民没什么关系,但互联网服务者们对 GDPR 就头大了。

GDPR 保护的具体数据范围写得特别模糊,一个“个人识别信息”的定义,连律师都很难说清某一样东西算不算(比如访问日志里的对方 IP 地址)。

GDPR 保护的权利也非常多,指定人员负责什么的我们不提,即便普通站长们都不会干“转移资料”、“卖大数据”之类的操作,涉及到最基本的一样就是“遗忘权”:数据主体有权要求数据保存者删除自己的个人信息。不存不就行了吗?但是

《中华人民共和国网络安全法》第二十一条(三)项规定:采取监测、记录网络运行状态、网络安全事件的技术措施,并按照规定留存相关的网络日志不少于六个月。

这么说起来,除非多主体、分散地域服务,否则这合规风险可真是不小。

软件镜像站的困境

说到软件镜像站,可以理解为它是一个中转仓库。下单购买了一个软件,会从全世界各地的仓库发货,发给有需要的用户。那么,到底是哪个仓库发货呢?是什么因素决定的呢?

以前这个问题可简单了。最粗暴的设计是随机分配,全球发货,反正又不是不能到。一种简单设计是,客户端上存好一个镜像站列表,全部测一遍速度,哪个快选哪个,根本不需要考虑客户在哪的地域问题。现在有了合规问题,要是还是靠测速选择甚至随机,镜像站除了主动屏蔽,对找上门来的欧洲用户毫无办法。

是真的吗?数据为证

你会想,真的会有欧洲用户千里迢迢跑到世界另一端来求资源吗?我之前也觉得数量应该很少,最多应该只有一些中国人怀旧罢了。直到中国的清华大学 TUNA 镜像站发布了网站访问日志,终于能拿数据说话了。

TUNA 的镜像站是中国 Top 2 的高校镜像站,镜像了多达 159 个资源、空间占用多达 75 TB。他们的访问日志数据量还是非常大的,我随机抽了一天的日志(20191120),解压后的原始数据累计起来都能有上 GB。

由于 TUNA 对日志做了 IP 模糊处理,我只能姑且相信这种情况下 MaxMind 的 GeoIP 解析结果不会差得太远。我会认为,IP 解析结果超过 14 个国家的情况,就属于是软件无意或主动地把欧洲用户请求导流到了 TUNA。

分析发现,这一天的日志里,欧洲的 IP 来源占全部请求的 0.86%(120,206/14,058,670)。我刚好也获取到了某一流大学的镜像站访问统计结果,欧洲 IP 的占比也在差不多 0.7% 的样子,所以这个结果应该还算对头。

通过将所有的数据导入到 Elastic Stack,可以看到各个项目招来欧洲用户的程度。我仔细分析了一下,还是挺有意思的。

Deepin

这是一款中国武汉公司开发的 Linux 发行版,国外也小有名气了。来自欧洲的客户端标识(User Agent)标记为 apt 或者 detector(官方的包管理器)的请求就有 3591 次,来自 2322 个 IP 地址,一个仅供参考的国家数是 37。我仔细看了看 Deepin 的隐私政策,似乎更多地在提他们的需要注册账户的服务的隐私情况,对于系统更新方面并没有提到太多,不过的确提到了他们需要遵守中国法律。

我几周前用中文向 Deepin 官网上标记的邮箱多次发信,询问他们的意见,截止发稿前,没有收到任何回应。

其它几个操作系统

出现在我视线里的操作系统还有 archlinux、manjaro 和 alpine。

来自欧洲的 archlinux 的 pacman(官方包管理器)客户端标识请求有 2121 个,503 个 IP,大概来自 29 个国家。他们的服务器位于德国,该 GDPR 的吧。

同样来自德国组织 Manjaro GmbH & Co. KG 的 manjaro 则更神奇,访问这个项目的请求绝大部分都没有客户端标识,3282 个欧洲请求,717 个 IP,大概来自 25 个国家。请求没有客户端标识这个是让我感到最迷惑的事情。

最后 alpine 也很神奇,访问这个项目的不少请求的客户端标识是 Wget,134 个欧洲请求,130 个 IP,大概 21 个国家。这个请求数量并不多,但国家之广阔就很迷。作为一个来自荷兰的项目,他们项目网站的隐私条款是这么写的:

We do not process personal data on this site. We do not collect cookies.

好吧,你们不处理个人数据,镜像站还是要处理的吧。我姑且相信你们不会把欧洲用户主动送给镜像站的吧。

几个开源仓库

remi、repoforge、elrepo 这几个属于分发软件的小市场,大部分专注维护 RedHat 系的软件。他们为啥会存在呢?因为有的软件官方不会包装成可以直接在某种系统上安装的安装包,有的可能也更新得不是很及时,小市场的编译效率有时候还挺高的。

这几个仓库的流量也不小,来自欧洲的分别有 1344、2269、2442 个请求,近千个 IP 地址、20 多个国家,覆盖范围还是不小的。这些仓库通常会自己维护一个镜像的列表,客户端下载软件的时候就从这个列表里找服务器,我也不清楚他们是怎么找服务器的,但看起来有点随机就是了。要说明的是 remi、elrepo 分别是法国、英国服务器。

OSMC

OSMC 对我来说是个还挺陌生的名字,直到我查了下,才知道这个操作系统包装了 Kodi 这个家庭媒体播放器,而 Kodi 的前身是 XBMC。噢,原来是这货。访问这个项目的来自欧洲的用户里,基本上都是访问 download.osmc.tv 然后被跳转访问 TUNA 的,请求有 4919 次,来自 3323 个 IP 地址,一个仅供参考的国家数是 34。

OSMC 的背后是一个英国实体 Sam Nazarko Trading Ltd。虽然英国脱欧这事还没完,但隔壁的这种大法规难道也不需要理睬了嘛。

videolan-ftp

VideoLAN 这个组织是 VLC 视频播放器的维护者。访问这个项目的来自欧洲的用户里,客户端标识基本上都是“Mozilla/4.0”,看起来是软件自动更新的样子,请求有 2677 次,来自 1422 个 IP 地址,一个仅供参考的国家数是 33。

VideoLAN organization 来自法国,同样我不是很理解为啥他们能发生这种事情。不过我下载了下 Windows 的 3.x 版本 VLC,完全没有看到“Mozilla/4.0”的请求,他们请求的也是自己在法国的服务器,那我猜可能是旧版本的请求或者是第三方的请求了?

crystaldiskinfo

OSDN 这个项目的访问次数也很有意思,不少欧洲请求是在下载 crystaldiskinfo 这个软件。客户端标识那边写的是“Mozilla/4.0”,看起来又是一个标识乱写的自动更新,请求 193 次,IP 140 个,大概来自 17 个国家。不过我下载了下 5.x 版本的 crystaldiskinfo,并没有什么自动更新的请求。我猜那就是第三方更新程序了?

OSDN 托管站和 crystaldiskinfo 这软件都来自日本,其实用户应该会意识到自己下载这款软件是跟欧盟关系不大了。但 crystaldiskinfo 的隐私条款真的很直接就是了:

Crystal Dew World does not collect your privacy information.

大家怎么看

这几天正好在 v2ex 论坛上,有人提到了这个问题。我们来摘取网友的说法(如果需要撤下请务必联系我)。

Raymon111111 说:

欧盟隐私法太严格, 那边用户收益 /产出比不大的话就干脆直接关站了

这个法律最初意图打压 google 这种大企业, 最后适得其反, 因为小公司承担不起如此严格法律带来的成本

llvm98 说:

随手一查,主流做法是网站墙 GDPR 用户,而不是什么 ISP 墙网站。
https://www.bloomberg.com/news/articles/2018-05-25/blocking-500-million-users-is-easier-than-complying-with-gdpr

如果你和欧盟那边没什么业务联系,我觉得你没必要担心这个
https://www.reddit.com/r/gdpr/comments/8k3op7/im_in_the_us_who_fines_me_and_what_if_i_dont_pay/

但就算是有业务联系,罚款金额也是基于年盈利的,那么如果你没盈利的话……
https://www.gdpreu.org/compliance/fines-and-penalties/

我想插一句补充说明的是,我相信这个年盈利跟业务无关,只跟是哪个组织有关,所以如何界定盈利还是很迷的。惩罚大公司的角度,肯定是越多越好了。

imn1 说:

问题是不会有这样的罚单,GDPR 没有域外权限,开域外的罚单本身就违法啊

我这样说并不是我熟知 GDPR,是因为我认识一个洋人(在美),就有类似的业务
他开了一个西班牙语和葡萄牙语的服务,但只是面向南美洲,而且服务实行也在南美,跟西班牙 /葡萄牙本土的人无关
他就没有鸟 GDPR,服务协议上就注明了只受当地法律(指南美的国家,不同国家协议不同)监管
他说就算他想也做不了,部分国家法律和 GDPR 一些条款是冲突的,细节我就没追问了

迷的法律和分区的互联网

一直以来,因为网速的问题,互联网会有地域的区分,但正由于互联网的通透,很多互联网用户跨区玩耍,只要和气生财,大家都会欣然接受。几十年前大家说的互联网地球村就是这么来的。

慢慢的越来越多的东西上了网,由于各种各样的原因,问题就变得复杂了起来。YouTube 锁区、各种音乐出了国就版权限制、Blogger 分域名屏蔽内容,都是分区的体现。但一直以来,这道硬墙只限于网站提供的内容,不至于涉及到普通访客。

GDPR 这一起来,割裂就明显了一些,迷的法律变成了一道软墙四处弥漫。有的国家说 IP 地址不算个人信息不用担心,但欧盟其他 20 多个国家可还没这样的判例呢。保守一点吧,就变成了美国组织的法务拒绝划唯被抗议;宽容一点吧,就怕有人拿着法律“当挡箭牌”。可能直到有一天,每一家全球服务都要强制分区,软墙之外只能恕不接待了吧。但是,又会有多少人在乎呢?

开源社区的那股自由的劲,跟 GDPR 比一比,看起来格格不入,我们何必要在乎你属于哪里、在不在欧盟。但仔细一看,GDPR “拒绝互联网数据霸权”,似乎跟去中心化又有点和谐。

那个理想的全球化互联网,看似在离开,实际上,或许只是比我们想得要复杂得多罢了。

附件:一张表格

folder resource count country IP Entity
deepin 都是apt或detector 3591 37 2322 CN
osmc Referrer: download.osmc.tv 4919 34 3323 UK: Sam Nazarko Trading Ltd
videolan-ftp “Mozilla/4.0” 2677 33 1422 FR: VideoLAN organization
remi urlgrabber/3.10 yum/3.4.3 1344 32 705 FR
repoforge */repodata/repomd.xml 2269 31 1999 Open
archlinux pacman UA 2121 29 503 Open: server in DE
manjaro 没有UA 3282 25 717 DE: Manjaro GmbH & Co. KG
elrepo 全是yum的UA 2442 23 2001 UK
alpine Wget 134 21 130 NL: https://alpinelinux.org/privacy-policy.html ???
osdn /osdn/crystaldiskinfo/ - UA: “Mozilla/4.0” 193 17 140 JP: https://crystalmark.info/en/information/privacy-policy/ ???

麻省理工的信息服务“客服”

最近听说,学校里有位新来的老师,登不上自己的学校邮箱,然后抱怨(翻译的版本俏皮了一些):

行吧,我试着在两个地方登录我的邮箱:(……),在哪边我都看不到登录页面。今日头条——都 9102 年了,电子邮件都已经 20 多年了。你们能不能招一些麻省理工的学生把你们的系统搞好……

不想评价这个老师的态度和“提问的智慧”(他的“建议”似乎也被自动忽略掉了),麻省理工的学生愿不愿意做这个工作也是个问号。不过我们可以类比一下,麻省理工自己的信息服务水平如何呢?他们会招“麻省理工的学生”吗? 继续阅读“麻省理工的信息服务“客服””

Side note of some scheduling tools

SignUpGenius

Free version includes:

  • multiple spots in one time slot
  • email (ics) confirmation to invitee
  • export as table
  • cancellation email triggered by organizer
  • modify bookings by unique link (in the email).

UX feels like oldest.

Doodle

Free version includes:

  • multiple spots in one time slot
  • export as table (maybe?)

No invitee email is available in free version. Booking modification can only be protected if invitees log in with a Doodle account. UX is a lot better.

Calendly

Free version includes:

  • email (ics) confirmation to invitee
  • export as table
  • cancellation email triggered by organizer
  • modify bookings by unique ID (in the email)

Paid version (10 days trial) includes:

  • multiple spots in one time slot
  • webhook (API)

UX is the best.

意想不到的「重设密码」挑战 / 理想园

去年我提了一嘴,现在在做一个客服的工作。不做不知道,电脑常识的下限真的让我永远想不到。

对方的提问常常让我反思,为什么会造成这种情况。作为一个技术员,换个角度看看普通人的操作,其实对更友好的工程设计还是挺有帮助的。

这一篇,来看个似乎简单、但不少人会有奇奇怪怪的问题的业务:「重设密码」。以下提到的虚构问题,基本上都有真实案例支撑,毕竟生活比故事更精彩。 继续阅读“意想不到的「重设密码」挑战 / 理想园”

不是所有机器人都适合面对抱怨 / 随笔谈

去年 5 月出现了一条新闻,说某群众在政府微信公众号留言反映问题,结果被自动回复呛声:“你不说话没人把你当哑巴”、“我仿佛听见了一群蚊子在嗡嗡嗡”。

有关部门也没有回避问题,直接发了致歉信,也点名是第三方设置不当、“小黄鸡”自动回复导致。

致歉信一出,微博评论非常惨烈,热评都很不买账

  • “自动回复就可以这么任性”
  • “系统自动回复的内容还不一样是你设置的”
  • “不是临时工了??”
  • “谁信啊”
  • “把对人民群众的心里话设置成了自动回复……”

这些评论显然并没有意识到,这次这台机器人并不是以往只会匹配敏感词、自动回复固定句式的那类机器人了,而是会陪你聊天的那种机器人。

甚至有人开始批评,“为什么可以把这么重要的窗口交给‘第三方’来运维”。实际上类似客服外包这种事情,国内也实践得不少了,让专业的人做专业的事并没有错。然而这个情况,显然是不专业了而已。

问题来了,一个实实在在的服务部门,的确会有人联系你只想让陪聊,但更多的人还是有实实在在的问题需要解决的。这种情况下,让一个语音助理式的全能陪聊机器人来撑场子,真的能行吗继续阅读“不是所有机器人都适合面对抱怨 / 随笔谈”

Strip Assets Files in new Android Gradle

Spending 2 hours on this because 1) I don't have experience with Gradle script (its syntax looks funky) 2) DJI sxxks, and they put 50MB of large assets files to their SDK, which is camera distrotion_correction files that I never need, and 3) Android Gradle library upgrades, which deprecating mergeAssets.

Looking at some GitHub projects's Gradle script, it looks like dependsOn is very popular in defining what order the task should be executed, and it works! 继续阅读“Strip Assets Files in new Android Gradle”

猪年前夕的一点回望

预告:本文纯属个人的思绪宣泄。

时间真快呀,这可能对于所谓年轻人来说是一种新奇的感觉吧。都已经 2019 了,来一点什么十年挑战,然后就会想着怀旧,于是就发现自己已经再也不是那个「宝宝」了,自己却依然是一无所有。

这也是为什么这一年我写的东西越来越少的原因吧。除了抱歉之余,也请不要带着什么改变的期望。手头堆的事情太多了,写东西的(一些可能莫须有的)顾忌也越来越多了。

回想起来,2018 的上半年可能是我这些年来最充实的半年了,四处奔波,赚几份钱,认识了不少人,简历也莫名其妙地多了好多能写的东西。然而一切就在我夏天第二次从北京回家之后就结束了。可能是因为平衡,马上人就颓了下来。

继续阅读“猪年前夕的一点回望”

信息中心客服的 4 小时

中午 12 点,吃完午饭的我走进了学校信息中心的客服中心。正午的阳光透过落地窗从街头照进房间,显得有些慵懒。我找了个位置坐下,脱下外套,工服、工牌就位。

今天是我在客服中心上班的第三天,按计划还在培训的阶段。我跟第一次见的主管(老师)郭姐姐打了招呼,她就告诉我“今天有点难办,我去问问要怎么弄”。过了会她把她的主管带到了房间,说了下情况:下午这边只有我跟另外一位学生李斯,李斯老哥也没来几周,而我还在第一周培训。大主管问了问我培训的进度,接着问我:“你今天自己接电话感觉行吗?”我有点懵,就说“我试试吧”,两位主管接着就跟我说“有啥问题你让对方稍等,放下电话问我们谁都行,不用慌,大家都是提问题过来的”。

于是,我在我的工位坐下,登陆电话系统,打开工单界面,试了试耳机。两位主管还在谈笑风生的时候,我的第一个电话就毫无防备地打进来了。

继续阅读“信息中心客服的 4 小时”

对一列微信小程序比赛作品的想法

一堆事情没做,又厚着脸皮来写好久没有写过的博客了。今年真是神奇,参加了个小程序比赛,莫名其妙地进了地区选拔赛,虽然成绩并不理想(自费旅游),但也算是领略学习优秀大学生风采了。趁着比赛完想不到要干啥,北京的天也没黑,就斗胆来评论一下前十好了。

我来参加这个比赛的时候,想法是觉得,既然是小程序比赛,选题总该是适合小程序的,才能代表小程序的先进方向。一些 PWA 甚至网页就已经足够实现功能、又没结合微信小程序特点的作品,我总觉得蛮尴尬的。可能并不是每个人都会这么去执着平台依赖这个国内不大关注的问题的吧。答辩的时候并没想到要提小程序与 PWA 区别的思考,结果还剩了几分钟时间,后来发现一整天没人提 PWA 相关,想想还是挺遗憾。

先进一下前情提要。这轮选拔赛的前十都是有奖金的,其中前二可以晋级进入全国决赛。这个名次是现场公布的,不知道最后会不会公示。下面就按名次说好了,我也是这几天才第一次接触到这些小程序;如果没有特别说明,可以直接在微信里搜到这些小程序。 继续阅读“对一列微信小程序比赛作品的想法”