编译 | AI科技大本营
参与 | 张蔚敏 林椿眄
编辑 | 明 明
据美国《纽约时报》和英国《观察者报》消息,一家数据分析公司( Cambridge Analytica )通过收集了 5000 万选民的 Facebook 个人资料,并利用这些资料构建了一个强大的软件程序来预测和影响投票箱中的选择结果!据称,该数据分析公司与特朗普赢得大选、英国成功脱欧的竞选团队均有合作。这也是 Facebook 这家科技巨头有史以来最大的数据泄露事件之一。
日前,一位爆料者向 英国《观察者报》透露:剑桥分析公司 ( Cambridge Analytica ) 是如何利用 2014 年初获取的未经授权的个人信息,来构建一个可以描述美国选民个人特征,并以个性化政治广告为目标的系统。据称,剑桥分析公司由对冲基金亿万富翁罗伯特·默瑟 ( Robert Mercer ) 拥有。
与剑桥大学学者合作获取数据的 Christopher Wylie 告诉 《观察者报》 :“我们利用 Facebook 收集了数百上千万用户的个人资料,并建立起一个分析模型,从而利用这些现有的用户信息,精确的瞄准他们‘心魔’,来获得他们内心的真实需求( 达到左右其观点的目的 )。而这也是剑桥分析这个公司建立的意义所在。”
从英国《观察者报》报道中 Facebook 声明确认的文件显示,到 2015 年底,该公司发现信息收集的规模是空前的。 然而,当时它并没有提醒用户,只采取了有限的步骤来恢复和保护 5000 多万人的私人信息。
《纽约时报》 报道说,在网上仍然可以找到被剑桥分析所收集的数据副本;其报道小组查看了一些原始数据。
这些数据是通过一个名为“ thisisyourdigitallife ”的第三方应用程序来收集的,这个应用程序由学者亚历山大·科根( Aleksandr Kogan )在2014年创建。这款程序主打噱头是“测性格,领奖金”。通过他的公司“ 全球科学研究 ” ( GSR ) 与剑桥分析的合作,成千上万的用户接受了性格测试,并且同意其收集他们的数据用于学术研究。
为了吸引更多的人参与,他们还为用户提供 5 美元的奖金。用户只需回答一些娱乐性质一样的不疼不痒的测试问题,就可以获得奖金,而前提是,在做性格测试之前需要把部分 Facebook 信息授权给这个第三方程序,这其中不仅包括你的头像昵称,还有好友列表和好友的一些状态信息!
从英国《观察者报》报道中的一份日期为 2014年6月4日的合同中显示,该合同确认 SCL ( 剑桥分析公司的附属公司 ) 与 GSR 达成了一项完全以收集和处理 Facebook 数据为前提的商业协议。剑桥分析在数据收集方面花费了近 100 万美元,从而获得了 5000 多万份可与选民名单相匹配的个人简介。然后,它利用测试结果和 Facebook 数据构建了一个算法,用来分析 Facebook 个人简介并确定与投票行为相关的个性特征。
算法和数据库加在一起,已经成为了一个强大的政治工具。 它可以从一场测试中找出态度摇摆不定的选民,并针对他们制作更有可能引起共鸣的定制化消息。
“合同规定:这套训练集的最终产品是从 Facebook 个人资料信息中创建一个可以理解个性化的 ‘黄金标准’ 。 它承诺创建一个数据库,包含 11 个州的 200 万个“匹配”配置文件,可识别并绑定到选举登记簿,并且还有进一步的可扩展空间。”
在当时,5000 万用户代表着 Facebook 整个北美地区活跃用户的三分之一,同时也意味着潜在美国选民数量的四分之一。然而,当被议员问及他公司的数据是否来自 GSR 时,Nix 表示 : “ 我们与 GSR 有关系。他们早在 2014 年就为我们做了一些研究,但这些研究目前毫无结果,因此答案是否定的。”
剑桥分析公司表示,它与 GSR 的合同规定, Kogan 在收集数据时应征求知情同意,并且也相信他们一定会这样做。
GSR 的一位发言人表示,GSR “ 由一家国际知名机构的知名学者领导,该机构向我们就其向SCL 选举许可数据的法定授权上作出过明确的合同承诺 ” 。
他说,在此期间,附属公司 SCL election 与 Facebook 合作,以确保它没有任何 “ 蓄意违反 ” 的条款,并提供了一份签署声明,表明所有数据和衍生品都已被删除。剑桥分析公司还表示,2016 年总统大选没有使用这些数据。
Steve Bannon 的律师表示,他对此没有任何评论,因为他的委托人“对指控一无所知”。他补充说 : “ Bannon 先生第一次听到这些报道是过去几天媒体调查的结果 。”
在剑桥分析被爆滥用用户数据事件之后的 4 天里, Facebook 相关高层管理人员并没有对此事件做出任何回应,直到周二, Facebook 发表声明称:“ CEO 扎克伯格和 COO 雪莉·桑德伯格以及他们的团队认识到这次事件的严重性,并且正在夜以继日地工作,以便获取所有的事实真相,并采取相应的措施。” 在接受 《 The Daily Beast 》 采访时, Facebook 表示:“发生这样的事件,整个公司都感到十分愤怒,我们有一种被蒙骗的感觉,我们一直致力于大力保护用户信息的政策,同时我们也会采取一切必要措施,来确保用户信息的安全。”
因对 Facebook 对剑桥分析披露的回应越来越担心而保持沉默,CEO 扎克伯格和 COO 桑德伯格因此受到了批评。
美国《连线》杂志周二报道称,该问题在 Facebook 内部引起争议:
随着周末风暴的兴起,Facebook 的高管,包括 CEO 扎克伯格和COO 雪莉·桑德伯格,策划并讨论到深夜。 他们知道公众正在抨击他们,但他们也相信剑桥分析公司的错误远远超过他们。 尽管如此,他们还面临四大难题。 他们如何收紧系统以确保这一切不再发生? 他们应该如何处理所有关于请求扎克伯格作证的要求? 他们是否应该起诉 Cambridge Analytica? 他们应该怎样处理心理学家 Joseph Chancellor ,他曾帮助创建了 Kogan 的公司,并且现在还在 Facebook 工作?
有消息称,在本周五公司为员工定期举行的问答环节上,扎克伯格可能就此事向员工发表讲话。
事实表明,Facebook 的 5000 万用户数据的确被泄漏,营长今天就扒一扒:如何获取 Facebook 用户信息。这里有一份官方指南,本指南演示了从 Facebook 获取信息,并使用 Graph API 将信息发布到 Facebook 平台上的相关知识。
先决条件
概述
Graph API Explorer 是一款应用程序,能够让你探索 Facebook 的社交图谱。获取数据(用户信息,评论,照片),发布到用户时间表和页面,并使用你的应用进行测试,最终获取你已测试的操作代码示例。
访问行为概述
你的所有访问请求都必须包括如下三个操作:
从 Facebook 中读取数据
首先是查询
当你打开 Graph API Explorer 时,它将自动加载最新版本的 Graph API 和默认的 GET 请求,如:GET / me?fields = id,name
这种查询请求将搜索我的用户节点,包括我的 Facebook 用户 ID 和名称等信息。这些个人信息是公开或部分公开的。
要运行此 GET 请求,请从 Get Token 下拉列表中选择一个用户的访问令牌。
单击“获取访问令牌”按钮而不需要检查任何框(下一示例中将展示更多关于添加用户权限的信息)。访问令牌的默认权限是允许用户访问公共配置的文件信息。
按照你的方式继续并点击提交。资源管理器将在查询窗口的下方返回相应的用户响应。
更多的用户数据
在上面的例子中,你检索了与你有关的一些公共数据。 现在,在这个示例中将演示如何获取你相关的私人数据,如你的生日及你的身份信息等。
访问令牌:因为你想要访问的是私人信息,因此系统需要你的访问令牌信息来获取相应的访问权限。 点击 Get Token 按钮,并在 Select Permissions 弹出菜单中选择 user_about_me 和 user_birthday。
想要获取用户访问令牌,首先必须要登录你的 Facebook 账号,随后系统将审阅你所发送应用信息,并根据你的需要提供相应的访问权限。值得注意的是,用户提供的信息只能包含应用所需的权限,其他额外的权限请求都将被系统拒绝。具体演示如下:
点击 Get Access Token 按钮获取访问令牌并根据提示继续操作。
添加新字段:如果你是 Graph API 的新手,那么可能对一些用户节点字段不太熟悉。 你可以在节点面板中单击 Search for a field 的+按钮来查看并选择新的字段。
如果你已经接触过一些用户节点字段的话,你可以直接将它们添加到请求路径中。请求路径设置为:GET / me?fields = id,name,about,birthday
随后,提交请求。
如果你还没有在 Facebook 上填写有关个人信息,那么该区域在“节点”面板中将呈现灰色,且在用户响应中不会返回有关个人信息的行。
想要查看可用于节点的字段列表吗? 你可以从资源管理器中查看节点的元数据。
将你的请求设置为 :GET / me?metadata = 1
那么系统将返回字段名称,描述和类型。
获取代码示例
你已经测试了上面的代码,系统也返回了你所需要的结果。 现在,我们使用 Android,iOS,JavaScript,PHP 或 cURL 示例代码来获取用户响应,你可以点击窗格下方的 Get Code 按钮来获取这部分的代码。
将此示例代码直接插入到你的代码中将不会生成相应的功能。 这些代码示例只是用来帮助你,构建应用程序所需的代码。
访问用户相册
现在,我们将访问你的相册。你需要将相册字段添加到你的请求中。 在这个例子中,我们删除了个人信息,生日,用户id和名字等字段。
将你的请求设置为:GET / me?fields = albums
并点击提交。
如上界面所示,你只得到用户的ID信息,面板中的相册字段是灰色的。 产生这种情况的原因可能是用户没有可用的照片,因此并没有填写相册的信息。或者,由于你的访问令牌中不包含访问此数据所需的权限而导致的访问权限问题,也有可能会发生这种情况。 幸运的是,资源管理器能够帮助你。 单击响应窗格上方的 1Debug Message ( Show ) 链接,来查看可能缺少此数据的原因,界面如下所示。
你需要拥有一个新的访问令牌,该令牌需要具有新的访问权限 user_photos。 点击 Get Token 并获取用户的访问令牌。 请注意,由于上次的权限请求仍处于选中状态,因此 建议你在这处只选择你所需要的权限。 在这个例子中,你只需要 user_photos 的访问权限。 现在重新运行该请求,系统将会返回你的相册。
如果你对权限级别或访问令牌类型有疑问,请单击访问令牌框中的圆圈图标。 此框将显示你所发出请求的应用程序,发出请求的用户,令牌的有效期,到期时间和范围等信息,如下界面所示。
虽然此请求限制了响应窗格中所显示的项目数量,但仍然可以使用基于光标的分页操作来访问其他相册。 请注意,在请求的底部,这里有一个名为 paging 的字段,其中有一个 cursors 和 next 字段。 Cursors 用于标记所返回信息的首尾字段。 点击下一个字段中的链接将显示以下 5 个选项,如下界面所示。
通过点击下一个和上一个链接,你就能在无需运行多个请求的情况下查看所有相册中较小的块。 需要注意的是,光标会随着时间而改变,所以不要在代码中依赖这些光标。
此外,我们还使用基于时间的分页操作,找到特定时间段内的照片。 对于这种访问方式,首先你需要获取一些已发布新闻照片,无论是你自己的,或你朋友的,或是被你所标记的照片,并将查询的时间设置为从 2017 年 9 月 1 日( 自 1504224000 发布)至 2017 年 9 月 30日( 已发布直到 1506729600 )。
需要你的请求设置为:GET / me / photos?since = 1504224000&until = 1506729600
此外,你的用户访问令牌仍然有效,因为它具有 user_photos 权限,但是系统只会返回 9 月份的照片。
受限制访问
如果你已经是Facebook的老用户,你可能会有很多的相册,这里面包含大量的信息。现在,让我们将相册的数量限制为5。将.limit(5)添加到查询中,如下界面所示。
并将你的请求设置为:GET /me?fields=albums.limit(5)
正如你所知道的,相册会由许多照片组成,每张照片都有自己的元数据。 每张照片都有一个 ID,created_time,name 等信息。 使用字段扩展来获取这些数据,并限制为每张相册只能有 2 张照片,以使项目数返回一个最小值。
将你的请求设置为:GET me?fields = albums {name,photos}
在上次查询中,你所使用的访问令牌应该具有user_photo的访问权限,因此这次你只需提交查询即可。
这里,你也可以使用基于光标的分页操作,因为许多相册中都包含多张照片,你可以使用光标链接来查看相册的更多照片。
下面,我们可以为相册和照片添加一些访问限制。 尝试修改请求路径,以使得每次只返回 5 个相册,每个相册中只包含 2 张照片。 请记住上面的示例,修饰符应该位于正在修改的对象旁边,即 album.limit(5)。
在Facebook上创建数据
将评论添加到你的时间表
访问令牌:你需要给予管理器权限,以便将其发布到你的时间表中。 点击Get Token并选择publish_actions权限。
选择这篇post的隐私级别:公共,朋友,只有我可见,自定义。
在请求路径中从GET切换到POST。
系统的响应将返回 post_id 。 post_id 由你的用户 id ,后面加下划线和整数组成。
检查资源管理器中的更新。 从系统响应中单击 post_id ,将其移至查询框。,并切换到 GET 并获取具有 user_posts 权限的新访问令牌。 新访问令牌所返回的响应将是 created_time ,message 和 post_id 。
检查新闻源中的更新。 这里的更新将显示发布的消息内容以及用于发布消息的应用程序。
请记住,你可以在代码中使用这个模块的代码。
想要在 Facebook 上发布一张照片,你需要的是该图片 url 地址,它的大小要小于 4 MB,且是 JPG,PNG,GIF 或 TIFF 格式的文件。
将你的请求设置为:POST / me / photos,其中我是您的 user_id。
添加网址字段和值。此外,我还添加了标题字段。
使用 publish_actions 权限访问令牌。
请求如下所示:
POST me / photos url = https://www.facebook.com/images/fb_icon_325x
325.png caption =Having fun with Graph API!
系统响应将返回 photo_id 和 post_id 。你可以在新闻源以及浏览器中查看它。
发表评论
页面ID:使用上面的 / me / accounts 请求获取你想要评论的页面 id(page_id) 。单击响应中的 page_id 并将其移动到请求路径框中。
访问令牌:对于此请求,你需要一个页面访问的令牌。点击 Get Token ,获取用户访问令牌并选择 publish_actions 权限。现在,使用 Get Token 下拉菜单选择你希望将访问令牌应用于的页面。
在请求框中从 GET 切换到 POST。
将你的请求设置为:POST / page_id / feed
在此添加你的信息:
返回的响应值是 post_id
更新 Facebook 信息
让我们更新之前发送到你新闻源的第一篇文章。
访问令牌 :如果你还没有 publish_actions 的权限令牌,请先获取相关权限的访问令牌。
获取 post_id :在第一篇文章回复中,点击 id 链接。 这将 id 移动到请求路径中,并自动运行 GET 请求。
更改为 POST :添加消息字段并键入新消息。
如果该帖子已更新,则会显示成功的回复。
在大多数情况下,执行更新的应用程序必须是能够创建需要更新的对象的程序。
删除 Facbook中 的内容
假如你有一个应用程序允许用户从其时间轴中删除一些帖子。 现在,我们在资源管理器中测试这个程序。
首先,选择一个应用程序并从 Application 的下拉菜单中执行删除操作。 在这个例子中,我们使用的是 Graph API Explorer 。
使用具有 user_posts 权限的用户访问令牌并创建获取请求,从而找到要删除的帖子。
屏幕截图:获取一个帖子 ID 的示例
接下来,点击请求中返回的 post_id ,将其移至请求路径的框中。 使用 publish_actions 获取一个新的用户访问令牌,并将操作更改为 DELETE ,最后提交请求。
响应:
在大多数情况下,执行删除的应用程序必须是能够创建要删除的对象的程序。
页面
要运行这些示例,那你需要在 Facebook 页面上拥有一个账户。 如果你还没有创建的话,赶紧点击这里创建一个吧。
让我们列出你所拥有的所有页面。 对于此请求,你将需要具有 manage_page 或pages_show_list 权限的用户访问令牌。 然后,将账户添加到请求中。
将你的请求设置为:GET / me / accounts
返回的响应将包含有关页面类别,页面名称,页面 id 以及你在该页面上拥有的权限信息等。
我们来计算帐户上的所有对象的数量。
将你的请求设置为:GET / me / accounts?summary = total_count
点击提交后,向下滚动到响应窗格的底部查看计数。在这里,即使系统的响应显示了所请求的数据,但是调试消息也会出现。
请记住,即使你拥有所需的访问权限,有些数据系统也不会返回。 如果有些数据涉及另一个用户的信息,那么他们的隐私设置将优先于访问令牌。
发布页面信息
如果要帖子发布到页面上,你需要具有 publish_actions 权限,或者 manage_pages 和 publish_pages 并作为具有管理权限的管理员页面访问令牌。 要获取这些所需权限的页面访问令牌,请先选择获取用户访问令牌并选择 manage_pages 和 publish_pages 。 然后,从获取令牌下拉列表中选择你想要发布的页面。 这将为你提供了该页面的页面访问令牌。
点击前一个请求中的页面 id ,并将 id 移动到请求路径。
将你的请求设置为:POST / page_id / feed
添加一个字段,其中消息的内容为 Hello Page !. 随后提交请求。如果系统响应成功的话,那么所返回的响应将是发布到页面的消息的 page_id 。
点击访问令牌圆圈图标,来查看有关页面访问令牌的信息。
据英国《金融时报》报道,美国联邦贸易委员会 ( FTC ) 已经致函 Facebook ,要求进一步了解剑桥分析究竟如何获得逾 5000 万 Facebook 用户(主要是美国选民)的数据。Facebook 目前面临的风险在于,它可能被认定违反了其在 2011 年与美国联邦贸易委员会签署的 20 年用户隐私协议,该和解协议旨在更清楚地规定分享用户数据的方式。
原美国联邦贸易委员会消费者保护局主任、曾领导这家美国监管机构与 Facebook 达成上述和解的戴维•弗拉德克 ( David Vladeck ) 表示,如果 Facebook 违反了协议,Facebook 或将面临对高达 2 万亿美元的罚款。据称,和解令每违反一次,可判处 40000 美元罚款。这意味着,如果确实如新闻所报,有 5000 万 Facebook 用户的数据被泄露的话,Facebook 可能会被判处 2 万亿美元的罚款。
据美国《彭博社》报道,这已经不是 Facebook 第一次因其隐私政策而成为攻击目标。美国联邦贸易委员会 ( FTC ) 正在调查:Facebook 在数据保护方面是否违反了 2011 年与该机构达成的和解协议——任何违反的行为都可能让 Facebook 损失数百万美元。但这只是该公司近 4,930 亿美元市值的一小部分,并且根据其近年来支付的一些主要“罚金”和“和解金”的审查表明,这些案件往往不会以巨额赔偿结束:
结语:
实际上,用户数据泄漏是一直以来都存在的问题。不仅 Facebook 面临这样的问题, Google 同样也面临这样的问题,但本次 Facebook 的不回应方式被称为是最失败的公安案例。
本周周五,扎克伯格将在公司为员工定期举行的问答环节上向员工发表讲话。届时,小扎应该会对本次的是事件调查发表言论,营长静候小扎的表现。
参考:
1.https://www.theguardian.com/news/2018/mar/17/cambridge-analytica-facebook-influence-us-election
2.https://www.theverge.com/2018/3/20/17144796/facebook-cambridge-analytica-crisis-mark-zuckerberg
3.https://developers.facebook.com/docs/graph-api/explorer/
4.http://www.ftchinese.com/story/001076826
5.https://www.bloomberg.com/news/articles/2018-03-20/facebook-s-long-history-of-resolving-privacy-claims-on-the-cheap