2014年1月17日

如何保护隐私[5]:扫盲“浏览器指纹”

  去年4季度,俺写了4篇《TrueCrypt 使用经验》,又写了3篇 Linux 方面的扫盲,导致本系列又中断了几个月。经热心读者提醒,现继续补上。
  本系列的前面三篇,咱们聊了浏览器的基本防范。对于“隐私要求不高并且技术水平也不高”的同学,那三篇基本上够了。后面俺要继续聊浏览器方面的问题,面向的是那些“对隐私要求较高,同时也具有一定折腾能力”的同学。今天这篇谈谈浏览器的“指纹”是如何暴露你的隐私,顺便分享一些防范技巧。


★啥是“指纹”?


  看过警匪片或者破案小说的同学,应该都知道“指纹”在刑侦中的作用——警方虽然没有直接看到犯罪现场的作案人员,但可以根据现场留下的指纹来猜测/判断作案人员。
  如果你时常接触信息安全领域的一些资料,也会听到“指纹”这个形象的说法(比如:操作系统指纹、网络协议栈指纹、等等)。IT 领域提到的“指纹”一词,其原理跟“刑侦”是类似的——“当你需要研究某个对象的类型/类别,但这个对象你又无法直接接触到。这时候你可以利用若干技术来获取该对象的某些特征,然后根据这些特征来猜测/判断该对象的类型/类别。”


★啥是“指纹”的“信息量”?


  在 IT 领域有各种各样的特征可以用来充当“指纹”。这时候就需要判断,用哪个特征做指纹,效果更好。为了讨论这个问题,就得扫盲一下“指纹的信息量”。
  为了帮助大伙儿理解,先举一个例子:
假设你要在学校中定位某个人,如果你光知道此人的性别,你是比较难定位的(只能排除 1/2 的人);反之如果你不知道性别,但是知道此人的生日,就比较容易定位(可以排除掉大约 364/365 的人,只剩大约 1/365 的人)。为啥捏?因为“生日”比“性别”更加独特,所以“生日”比“性别”能够提供更多的信息量。
  从这个例子可以看出:某个特征越独特,则该特征的信息量越大;反之亦然。信息量越大的特征,就可以把对象定位到越小的范围。


★“指纹”的“信息量”如何度量——关于指纹的比特数?


  (本节涉及到中学数学,数学很差的或者对数学有恐惧感的读者,请直接无视)
  在 IT 领域中,可以用【比特数】来衡量某个指纹所包含的信息量。为了通俗起见,先以前面提到的“性别”来说事儿。性别只有两种可能性——“男”或者“女”,并且男女的比例是大致平均的。(那些喜欢抬杠的同学,别跟俺扯啥双性人,俺没空搭理)所以,当你知道了某人的性别,就可以把范围缩小到原先的 1/2。用 IT 的术语来讲,就是:“性别”这个特征只包含“一个比特”的信息量。
  以此类推:
当我们说:某特征包含3比特信息量,意思就是:该特征会有8种大致平均的可能性(8等于2的3次方)。一旦知道该特征,可以把目标定位到八分之一。
当我们说:某特征包含7比特信息量,意思就是:该特征会有128种大致平均的可能性(128=2^7)。一旦知道该特征,可以定位到 1/128
  再来说“生日”。(不考虑闰年的情况下)生日有365种可能性(并且也是平均分布滴),所以生日包含的比特数大约是 8.51。为啥是 8.51 捏,因为“2 的 8.51 次方”约等于 365。因此,知道了某人的生日就可以把范围缩小到 1/365
  通过上述举例,大伙儿对于指纹的信息量,应该有一些粗浅的认识了吧?


★多个指纹的综合定位


  如果能同时获取【互不相关】的若干个指纹,就可以大大增加定位的精确性。
  比如要在某个公司里面定位某人,如果你知道此人的“生日”和“生肖”,那么就可以达到 1/4380(1/4380 = 1/12 * 1/365) 的定位精度。因为综合定位之后,比例之间是【乘法】的关系,所以范围就被急剧缩小了。
  为啥俺特别强调“互不相关”捏?假如你同时知道的信息是“生日”和“星座”,那么定位的精度依然是 1/365——因为生日的信息已经包含了星座的信息。所以,只有那些相互独立的特征(所谓的相互独立,数学称为“正交”),在综合定位的时候才可以用【乘法】。


★啥是“浏览器的指纹”?


  前面说的是预备知识,现在开始进入正题。
  当你使用浏览器访问某个网站的时候,浏览器【必定会暴露】某些信息给这个网站。为啥俺强调“必定”捏?因为这些信息中,有些是跟 HTTP 协议相关的(本章节说的 HTTP 协议是广义的,也包括 HTTPS)。只要你基于 HTTP 协议访问网站,浏览器就【必定】会传输这些信息给网站的服务器。
  再罗嗦一下:HTTP 协议是 Web 的基石。只要你通过浏览器访问 Web,必定是基于 HTTP 协议的。因此,Web 网站的服务器必定可以获取到跟你的浏览器相关的某些信息(具体是哪些信息,俺下面会聊)。


★“浏览器指纹”如何暴露隐私?


  “浏览器指纹”的机制跟 cookie 有点相似。关于 cookie 的作用,建议那些健忘的同学先去“前面的博文”复习一下。
  对于“浏览器指纹”导致的隐私问题,俺举2个例子来说明其危害。

◇对于无需登录的网站


  如果你的浏览器允许记录 cookie,当你第一次访问某网站的时候,网站会在你的浏览器端记录一个 cookie,cookie 中包含某个“唯一性的标识信息”。下次你再去访问该网站,网站服务器先从你的浏览器中读取 cookie 信息,然后就可以根据 cookie 中的“唯一标识”判断出,你之前曾经访问过该网站,并且知道你上次访问该网站时,干了些啥。对付这种 cookie 很简单,你只需要在前后两次访问之间,清空浏览器的 cookie,网站就没法用 cookie 的招数来判断你的身份。
  但是“清空 cookie”这招对“浏览器指纹”是无效滴!比如说你的浏览器具有非常独特的指纹,那么当你第一次访问某网站的时候,网站会在服务器端记录下你的浏览器指纹,并且会记录你在该网站的行为;下次你再去访问的时候,网站服务器再次读取浏览器指纹,然后跟之前存储的指纹进行比对,就知道你是否曾经来过,并且知道你上次访问期间干了些啥。

◇对于需要登录的网站


  假如网站没有采用“指纹追踪”的技术,那么你可以在该网站上注册若干个帐号(马甲)。当你需要切换身份的时候,只需要先注销用户,清空浏览器的 cookie,然后用另一个帐号登录。网站是看不出来的。
  一旦网站采用“指纹追踪”的技术,即使你用上述方式伪造马甲,但因为你用的是同一个浏览器,浏览器指纹相同。网站的服务器软件可以猜测出,这两个帐号来自同一个人。


★“浏览器指纹”比“cookie”更隐蔽,更危险


  刚才对比了“浏览器指纹”和“cookie”两种身份追踪技术。两者的原理类似——都是利用某些特殊的信息来定位你的身份。两者的本质差异在于:
1. cookie 需要把信息保存在浏览器端,所以会被用户发现,也会被用户清除。
2. 而“浏览器指纹”无需在客户端保存任何信息,不会被用户发觉,用户也无法清除(换句话说:你甚至无法判断你访问的网站到底有没有收集浏览器指纹)。


★“浏览器指纹”包含哪些信息?


  浏览器暴露给网站的信息有很多种,常见的有如下几种:

◇User Agent


  关于 User Agent 是啥,俺已经在本系列前一篇博文中扫盲过了(请看“这里”),健忘的同学先去复习一下,再继续往下看。

◇屏幕分辨率


  这个比较通俗易懂。俺稍微补充一下:这一项不仅包括屏幕的尺寸,还包括颜色深度(比如你的屏幕是16位色、24位色、还是32位色)。

◇时区


  这个也比较通俗。对于大部分天朝的网友,你的时区应该都是“东8区”

◇浏览器的插件信息


  也就是你的浏览器装了哪些插件。
  再罗嗦一次:浏览器的“插件”和“扩展”是两码事儿,别搞混了。本系列前面的博文扫盲了两者的差异,链接在“这里”。

◇字体信息


  和浏览器相关的一些字体信息。
  如果你的浏览器安装了 Flash 或 Java 插件,有可能会暴露某些字体信息。所以俺在本系列的第2篇就警告了浏览器插件的风险。

◇Canvas 绘图的指纹


  Canvas 是 HTML5 新增的一个功能。该功能可以让 JavaScript 脚本在页面的 canvas 元素中绘图。由于不同的浏览器类型,不同的浏览器版本,不同的操作系统平台,都会导致“Canvas 绘图”在一些细节方面的差异。因此,该功能也会暴露浏览器信息(成为“浏览器指纹”的一部分)。
  要想测试你的浏览器是否暴露“Canvas 绘图指纹”,可以查看“这个链接”。
  如果你用的是 Firefox 浏览器,可以安装“这个扩展”,来禁用 canvas 绘图功能。该扩展可以针对不同的域名配置“黑名单和白名单”。

◇HTTP ACCEPT


  这是 HTTP 协议头中的一个字段。考虑到列位看官大都不是搞 IT 技术的,俺就不深入解释这项。

◇其它


  以上就是常见的浏览器指纹。当然啦,还有其它一些信息也可以成为“浏览器指纹”,考虑到篇幅,俺就不一一列举并解释了。有兴趣的同学,请自行阅读 Mozilla 官网的文档(在“这里”。提醒一下:是洋文)


★如何看自己浏览器的指纹?


  关于浏览器指纹导致的隐私问题,可能是由“电子前哨基金会”(简称 EFF)率先在2010年曝光的。后来 EFF 提供了一个页面,帮助网友看自己浏览器的指纹(请猛击“这个链接”)。
  打开此页面之后,当中有一个大大的,红色的“TEST ME”按钮。点一下此按钮,稍等几秒钟,会显示出一个表格,里面包含你当前的浏览器的指纹信息。
  在这个表格中会列出每一项指纹的“信息量”以及该指纹的“占比”。关于“信息量”的含义,本文前面已经扫盲过,此处不再罗嗦。你只需记住,某项的信息量越大,就说明该项越独特。而越独特的指纹,对隐私的威胁也就越大。

  考虑到篇幅有点长,今天先聊到这里。俺争取明后天发下一篇,聊聊如何防范“浏览器指纹”导致的隐私风险。


回到本系列的目录

119 条评论:

  1. 博主,学编程的话数学要懂到什么程度啊?需要到大学高等数学程度还是高中水平就可以了?

    回复删除
    回复
    1. 从Python到c/c++再到unix核心、web开发,数学具体要掌握到什么程度?数学荒废了国内教材又不放心,怎么补回来呀?英语又缺乏欧美环境怎么学啊?
      国内论坛功利性过强我怎么敢信任啊?——————1楼网友

      删除
    2. TO 1楼的网友
      说说俺个人观点,供参考:
      如果是仅仅掌握编程语言的语法,本身是无需太多数学知识的(主要是【逻辑】)。
      如果是具体到某个开发领域,需要的数学知识是各不相同的。
      大多数领域的开发(比如 Web 开发、数据库开发、等),可能只会用到中学甚至小学的数学知识。
      少数领域的开发(比如做图像处理的算法),需要额外的数学知识。

      删除
    3. 感谢提问和回答,这个问题,我一直很疑惑。

      删除
    4. 博主说的挺对的 我高中都没毕业 现在在做Web开发

      删除
    5. 如果你能到国外就职你就会成为我的偶像

      删除
    6. 英语学习《人人都能用英语》

      删除
  2. 编程的时间宝贵,基础问题建议楼上去其他论坛发问喔。

    回复删除
  3. "一旦网站没有采用“指纹追踪”的技术,即使你用上述方式伪造马甲....."
    编程兄,有处笔误。

    回复删除
    回复
    1. TO 4楼的网友
      多谢细心指出本文的笔误 :)
      已经更正

      删除
  4. 好靠前 挤挤
    浏览器指纹果然有问题 这些广告似乎也和这个有关?删除了很多次cookies挂了代理百度推广都可能相似

    回复删除
    回复
    1. TO Softether
      俺猜测,百度的广告估计会采用浏览器指纹来定位。
      以百度的技术实力,搞这个不难。

      删除
  5. 请教:【VPN Gate 提供的中继服务器,遍及全球,而且大都是由志愿者义务提供的。】这样的话安全吗?如果这些中继服务器里面遇到方校长派人搞得咋办?会不会暴露自己的信息?

    回复删除
    回复
    1. TO 6楼的网友
      如果你只是翻墙浏览网页,问题不大。
      如果你对安全性的要求比较高,不希望 VPN Gate 的 Server 看到你的真实网络流量,办法有两个:
      1、
      尽量用 HTTPS 访问网站(当然,如果网站本身不支持 HTTPS,这招就没辙)
      2、
      用 TOR 组合 VPN Gate 构造双重代理。TOR 本身的流量是强加密的。用了双重代理之后,VPN server 看到的是加密的 TOR 流量。看不到你真实的网络流量。

      删除
    2. 6楼谢谢随想兄!

      删除
    3. 引用博主的回答
      用 VPN Gate 组合 TOR 搞双重代理,在“网络层面”是安全的。
      但是,如果你要在国内网站发布敏感内容,除了要留意“网络层面”的隐匿性,还需要注意其它层面的防范。
      比如
      “个人软件层面”(不要使用危险的国产软件,比如 360 之流)
      “通讯工具层面”(不要依赖国内的邮箱,IM、等)
      “社会工程学层面”(你发布的内容不要涉及个人身份相关的信息)

      更多介绍,请看俺的系列博文《如何隐藏你的踪迹,避免跨省追捕》http://program-think.blogspot.com/2010/04/howto-cover-your-tracks-0.html

      删除
    4. TO 12345
      看来你对俺之前的留言很熟悉 :)
      多谢帮俺补充。

      删除
  6. 21.85bite 算高吗?说我的指纹在370W人种独一。。。

    回复删除
    回复
    1. 猜测你是用了自己appid的goagent代理,这样的ua里面会包含自己的appid,所以就几乎是全球唯一的。因此如果你用自己appid的goagent上网干“坏事”,10000000000%被秒杀!我发这条回复也是用自己appid的goagent,我对自己这几句话负责。

      删除
    2. TO Li Han
      对于浏览器指纹,别太担心。
      下一篇俺会介绍如何防范。敬请关注。

      删除
    3. TO 1单元的网友
      俺从来没用过 GAE 翻墙(也包括 GoAgent)。
      如果真如你所说,User Agent 里面会包含 appid,那太恐怖了。
      appid 比“公网IP”的信息量更大,更容易锁定身份。

      另,
      俺之前反复强调过,GAE 翻墙的安全性(尤其是隐匿性)不够强。
      如果纯粹是翻墙浏览网页或者看看视频,问题倒不大。
      但如果是对安全性要求较高的场合,尽量不要用 GAE 翻墙。

      删除
    4. 这是我使用自己appid的goagent上网时,在前哨测出来的ua指纹:
      (Browser Characteristic)User Agent
      (bits of identifying information)20.27
      (one in x browsers have this value)1263045.67
      (value)Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36 AppEngine-Google; (+http://code.google.com/appengine; appid: s~******(这是我的appid))
      所以要是干“坏事”,绝对不能用goagent!!!!或者其它同类的基于gae的代理,ua后面那段是gae硬性加上去的,对于这一点,我觉得google很不厚道!有别于她“不作恶”的信条。

      删除
    5. 的确如一单元所说,用goagent会把app id泄露,用goagent的看看这里就知道了http://www.stilllistener.com/checkpoint1/envv/environmentchk.pl

      删除
    6. TO 4单元 和 12345
      很感谢两位补充 :)
      因为俺一直担心 GAE 翻墙的安全性,所以从来没用过 GAE 翻墙,一直不知道 GAE 竟然还有这么大一个风险点(太恐怖了)

      User Agent 会发送给 Web 网站,不但网站会看到,当中的传输渠道(比如 VPN 服务器,比如代理服务器、比如 ISP)也有可能看到 User Agent。
      把 AppID 放到 User Agent,对 GAE 用户而言如同裸奔。
      AppID 就是一个超级指纹。

      删除
    7. 所以希望博主在下一篇教如何防范指纹跟踪里,分别说下各种代理工具的指纹特性,重点指出gae平台代理的不安全性。现在用goagent翻墙的人很多,主要是方便和速度快,就像当年流行free门一样,当中十有八九都是技术小白,很容易一时气盛发表“不当”言语而被跨省。

      删除
    8. 当初一时心血来潮忽悠博主写这篇浏览器指纹,谁知博主真的花心思写出来了,起初还有点不好意思,现在博主这样一说,我才安心点。
      在保证博主安全情况下,如果有热心网友捐出个appid给博主研究下goagent的安全性就好了,可惜我也只有一个。

      删除
    9. 如果如博主所说,appid甚至会在传输过程泄露,那是不是说,如果用G+和Google的服务,goagent的安全性反而不如hosts了?现在G+都几乎成反共平台了。如果是这样那用goagent上G+的人岂不是很危险了?

      删除
    10. 自从上次查看自己UA以后才发现GAE的appid是透明的,不过这个问题很好解决:我虽然在GAE注册appid的时候没考虑到(也不知道)会被UA泄漏,但还是用了独立的google帐号来注册,这个帐号仅仅用作GAE/goagent,至少不会因为跟G+、gmail账户的关联而泄漏个人信息。至于唯一性就没办法了,只能尽量不要用goagent来做敏感行为,或者用“goagent”之类的公用appid.
      顺便插句题外话,我觉得自己已经算很注意安全和隐私防范了,结果前段时间在这个博客用好一个N多年前注册的blogspot帐号回复了几条,昨天在一个QQ群里居然被人猜到:“你是不是在编程随想有留言”,能被关联的原因是一个很低级的错误。。。。

      删除
    11. TO 7单元的网友
      多谢提建议 :)
      因为本系列主要是面向普通的网友,介绍隐私保护的经验。
      你提到的 GAE 翻墙的危险性,俺会单独写一篇博文(初步考虑会放到《[url=http://program-think.blogspot.com/2010/04/howto-cover-your-tracks-0.html]如何隐藏你的踪迹,避免跨省追捕[/url]》系列中)
      GAE 翻墙的危险性有好几个方面,User Agent 只是其中之一。

      删除
    12. TO 12345
      作为俺博客的老熟人,首先应当感谢你之前的建议 :)

      关于你提到的 用 GAE 访问 G+ 的风险
      俺觉得这还不是主要风险。
      因为 G+ 是 Google 的网站,而且 Google 的人品还是不错的(至少不会轻易跟朝廷合作)
      所以朝廷要想拿到 G+ 服务器上的日志来分析用户的 User Agent,恐怕没那么容易(除非让御用骇客去入侵 G+ 服务器)。
      主要的危险在于:用 GAE 方式访问国内网站并发表敏感言论。
      因为国内网站的访问日志,朝廷走狗可以随时获取到。
      一旦朝廷要追查国内网站的敏感言论,一查服务器日志,看到 User Agent 里面包含 GAE 的 appid,就惨了

      删除
    13. TO jeff
      多谢分享你的经验 :)
      如果不得不用 GAE,确实需要用一个独立的、彻底隔离的 Google 帐号。
      另,看来你的朋友里面也有俺这儿的常客 :)

      删除
    14. 若非《2014年5月翻墙快报(继续补充 VPN Gate 经验)》提到这一问题,我还没发现呢,感谢提醒!

      删除
  7. 21.85bit是高到爆表的意思。就是说他从来没见过跟你一样的指纹。而一共只有370万人在这个网站上测过指纹。

    回复删除
    回复
    1. TO Atry
      “高到爆表”的说法很生动 :)

      删除
    2. 我21.87bits怎么破?

      删除
  8. 我也是哎, 有没有人是低于21.85bit的?

    回复删除
    回复
    1. TO 9楼的网友
      估计大部分人都是 21.85 bits

      删除
  9. TorBrowser3.5 UserAgent只有8.15分...

    回复删除
    回复
    1. TO 张金涛
      俺猜测,有一种可能是:
      EFF 的这个浏览器指纹测试,覆盖的面还不够广(只有几百万的样本)
      能主动到这个页面进行测试的网友,多半都是安全意识比较高的。
      而这个群体的用户,用 TOR Browser 的比例较高。
      所以,在整个样本中,TOR Browser 的 User Agent,指纹信息量就会偏低

      删除
  10. 如何挖掘网络资源[0]:为啥要写这个话题?


    为了方便阅读,把本系列帖子的目录整理如下(需翻墙):
    1. 网站的类型和使用场景
    2. Google 搜索的基本语法
    3. 解答 Google 搜索的常见问题(FAQ)
    4. 搜索关键字有啥讲究
    5. 扫盲博客阅读器的使用
    6. (未完待续)

    请把这个系列补下吧.觉得挺有用的.

    回复删除
    回复
    1. 善用网络搜索+不断实践+勤于交流+善于思考和总结====通向高手之路

      删除
    2. TO 11楼的网友
      多谢提醒 :)
      元旦前后,好像也有读者提醒俺更新这个系列。
      看来俺要把这个系列的优先级提高一下了。

      删除
  11. 同样是appears to be unique的路过

    回复删除
  12. 随想大哥 我想镜像您的博客网站,使用wget -m http://program-think.blogspot.com 中间是否还要加什么参数啊?
    比如 wget -c -k -r -p -np http://program-think.blogspot.com
    这个和上面那个效果一样吗

    回复删除
    回复
    1. wget -m -c -k -p -w 5 http://program-think.blogspot.com

      删除
    2. 上面的方法都不行耶。。。。 有什么方法镜像吗?

      删除
    3. TO 13楼的网友
      不如等俺推出电子书吧。
      俺有一个计划,把整个博客的内容做成电子书。然后定期更新。
      这样就有利于在墙内进行【离线分享】。

      删除
  13. 博主谈谈你的文章是咋写的

    逻辑性强

    废话少

    还能把问题阐述清楚

    快指点一下如何办到的

    回复删除
    回复
    1. TO 守夜人
      你这个问题问得好!

      关于【废话少、逻辑性强】
      估计这跟俺的编程生涯有关。
      俺还在中学的时候,就很喜欢编程。
      熟练的程序员都明白一个道理:优秀的软件代码,必定是层次清晰、条理分明的。这样的代码可读性才会好。
      俺写程序的时候,都比较注意这点。所以写博客的时候,自然也就有这个习惯。

      关于【把问题阐述清楚】
      要想用简短的篇幅说清楚一个问题。尤其是向该领域的【外行】说清楚问题,是有难度的。
      要做到这点:
      首先,
      作者本身就需要对该领域有足够深入的了解;
      其次,
      一定要学会抓住重点和要点。俺又要再次罗嗦“二八原理”——作者需要把关键的那 20% 讲清楚,基本上就够了。

      如果有空,俺可以单独写一篇博文,谈谈写博文的经验。

      删除
    2. 我还有一个好问题

      如何识别信息的真假,或者是更好的不被各种信息迷惑

      就拿博主熟悉的IT领域来讲

      媒体放的没营养的IT业水文,内行人一眼就能看出是水文,而外行人就不明就里,说不定就被忽悠了

      最常见的就是经济领域的经济分析,我现在根本不能驳斥阴谋美帝的经济侵略那种文章(针对力挺档中央的那种,广泛的不谈)

      看着那些花里胡哨的专业术语,举的例子,根本是无从下口,因为我根本不懂经济学!

      其实说中国经济有问题的分析文章我也看过,甚至是著作,但是我的道行确实浅到家了,我只能知道中国大陆存在相当的问题!

      归根结底就是说,如果是内行的话,怎么快速提升能力保证自己不被迷惑?(相对的,因为总有高的层次的信息接触不到)

      如果是外行的话,如何尽可能的弥补这种与专业人员的差距?

      毕竟经济,政治,各种业界新闻的烟雾弹放的太多,尤其是党政军和经济界,不是真正接触的人谁知道那些事情的真假

      删除
    3. 我越俎代庖回答一下。
      我个人推荐萨缪尔森的经济学,虽然部头比较吓人,但看了就知道,所谓名师出高徒的含义。做为诺奖得主,甚至会教导你读二象限图这种初中代数的内容。一本好书,首先要讲清基本概念,再在概念的基础上推出命题,通过缜密的逻辑加以论证。
      读完之后,基本可以保证不被迷惑。国内的专家往往在玩概念,如果了解这些概念的本质,自然可以轻松应对。如果想更进一步,提出新的理论就要去到PHD的水平才好,一般人不搞学术就不用深究了。
      大学时,我看过厉以宁的经济学,尽管是入门教材,通本都是专业术语,而且既没解释又没图表,这样的书除了浪费时间之外并无收益。
      现在国内有影响力的几位,如许小年、张五常、胡祖六等人,都是80年代美国提供留学生项目过去的,现在确实起到了部分开启民智的作用。
      其他所谓专家,往往是靠的行政级别/官位,而不是学术水平在发挥影响力.有关极权体制对中国教育的腐化,有空再写篇评论单独谈。

      删除
    4. 我就是想问如何在泡沫化的信息里筛选出真正有用的信息,也可以说成“防忽悠”

      照这样看来还是得从专业的角度入门一下

      其实不光经济学,还有it,各种各样的新闻等

      都要有分辨真假,干货水货的眼光

      删除
    5. 这种情形我也经历过,刚接触网络的海量信息,方方面面,初看很热闹,看久了发现不会识别和分析。

      这只能练好内功,如果凡事都有人指点当然最好,但不可能事事依赖他人,决策能力只能自己培养。我记得随想写过知识结构的博文,我的想法基本一样。有广泛的知识基础,通才上再作专才,既有协同效应也有深度,自己的个人理念也就出来了。

      这样对于别人的看法,不管专家或者无名氏,可以做到判断看法本身而不以人为据,权威和从众自然失去效力。

      删除
    6. 墙外真不赖

      我个人推荐萨缪尔森的经济学,虽然部头比较吓人,但看了就知道,所谓名师出高徒的含义。做为诺奖得主,甚至会教导你读二象限图这种初中代数的内容。一本好书,首先要讲清基本概念,再在概念的基础上推出命题,通过缜密的逻辑加以论证。

      这本书的书名就叫《缪尔森的经济学》?哪里有可供下载的电子版?

      删除
    7. 全名就是经济学。作者是萨缪尔森/samuelson,MIT教授.前几年已经去世了.我多年前看的17版.或者看曼昆的也可以,听说更浅显易懂.

      删除
    8. TO Ho Steven
      多谢推荐经济学的读物 :)
      除了你推荐的这本萨缪尔森的,之前曾经有读者推荐过曼昆的那本。
      下次俺再分享电子书的时候,捎带上这几本。

      删除
    9. TO 守夜人
      你提的第二个问题也不错 :)

      【如何分辨信息的真伪,如何判断各种忽悠性的宣传】
      俺在博客中反复提到过:培养【批判性思维的能力】是非常有必要滴。
      早在2010年,俺就推荐过《学会提问——批判性思维指南》一书([url=https://code.google.com/p/program-think/wiki/Books]俺的网盘[/url]有电子版)
      这本书真的非常好!

      书中介绍了:
      如何分清:论题的种类
      如何识别:理由和结论
      如何判断:论证是否成立
      如何识别:各种歧义性的文字
      如何看穿:各种逻辑谬误
      如何识别:依靠统计数字的忽悠
      (还有很多,恕不一一列举)........

      有些网上的文章,虽然其内容可能是你不熟悉的学科/领域,但如果这个文章本身在论证的时候出现纰漏,那么即使你不懂该领域的知识,一样可以判断该文章的结论是站不住脚的。

      删除
  14. 感谢楼主的那个太子党关系网,很多深度洗脑者、中老年人、对中共歪曲的政治感兴趣的人难以接受真相,但是看了这个看兴趣,或者有点怀疑中共的神圣。建议楼主能把博文分门别类的制作电子书,像太子党关系网一样让我和广大网友在墙内传播。楼主的年龄估计34岁左右吧?

    回复删除
    回复
    1. Gr:年龄的包含约ln(100)/ln(2)=6.64比特的信息量。

      删除
    2. 对中老年人、深度洗脑者要采取隐性渗透的方式来改变,太直接了不但没用还会起反作用——越相信党国的宣传,还认为你被欧美国家洗脑了。

      删除
    3. TO 15楼的网友
      多谢提建议 :)
      去年3季度,也有热心读者讨论这个话题(把博客内容制作成电子书)。
      因为3、4季度比较忙,俺一直没落实。
      如果这个春节假期能利用好,或许可以搞定此事

      另,关于俺的年龄,不方便说得太细(必须防范“社会工程学”)。
      不过捏,如果你看过俺写的所有博文,或许能猜到俺年龄的大致范围。

      删除
    4. TO 1单元的网友
      其实捏,年龄的信息达不到 6.64 比特。
      基本可以排除 20岁以下 的范围,也可以排除 60岁以上的范围。
      算下来,大约只有 5比特

      删除
  15. 使用goagent+chorome+SwitchySharp,按照博主提供的方法(http://program-think.blogspot.com/2013/07/privacy-protection-4.html#useragent)修改chrome的User Agent,查询User Agent里依然还有appid的信息,显示如下:XXX AppEngine-Google; (+http://code.google.com/appengine; appid: s~##########)
    XXX为修改后的User Agent ######### 为appid
    用goagent的同学们 你们有什么感想?

    回复删除
    回复
    1. TO 16楼的网友
      多谢分享经验 :)
      俺介绍的“修改 User Agent”的方法,是在浏览器端(客户端)进行的。
      而如果你用了 GAE 翻墙,GAE 服务器会在中转你的 HTTP 请求的时候,补上 AppID 的信息。
      这你就没辙了。

      前几年俺就提醒过:用 GAE 翻墙的安全性不够高。
      俺本人从来不用 GAE 翻墙(以免被朝廷跨省)

      删除
  16. 刚刚在网页上做了个测试,感觉结果还好吧。User Agent为14.76,HTTP_ACCEPT Headers为15.09,Are Cookies Enabled为1.94,其余各项(Browser Plugin Details、Time Zone、Screen Size and Color Depth、System Fonts、Limited supercookie test)均为1.73。不知编程君以为如何?

    回复删除
    回复
    1. TO 17楼的网友
      俺在本系列的[url=http://program-think.blogspot.com/2014/01/privacy-protection-6.html]下一篇博文[/url]中提到了:
      EFF 的这个测试工具,其采集的数据量不够大。所以,其分析出的比特数(相比全球的统计数据)会有偏差。
      俺建议,只看其“定性”而不看其“定量”。
      在通常情况下,User Agent 的信息量通常会大于 HTTP_ACCEPT(除非浏览器的 HTTP ACCEPT 的设置很古怪,很独特)

      删除
  17. 博主,可不可以改变一下你的博客主题呀?实在太简陋了!简洁大方的主题风格看着让人很舒爽、不花哨

    回复删除
    回复
    1. 还有扩展一下blogspot的留言功能吧——让用户可以自定义屏蔽/过滤掉一些对自己而言毫无意义的留言(某些留言看着让人很厌烦、恼火,一点帮助意义都没有)

      删除
    2. 博主,快现身吧!看那些对个人而言毫无意义的“垃圾”留言就厌烦透了,实在恼火得有种要砸电脑屏幕的冲动,这些不堪入目的留言害得我连开机都不敢开,对工作、生活已造成了严重的影响

      删除
    3. 这些不堪入目的留言害得我连开机都不敢开,对工作、生活已造成了严重的影响
      --------------------------------
      扯鬼,还影响你生活

      你是那个“挨踢粉丝”吧

      上次缠着编程随想回复VPN代理的事情

      编程随想一时半会儿没把事情解决

      就嚷嚷着对编程事业失去兴趣和热情

      不想看到什么样子的留言就公开说出来

      就像别人质疑反专制那样,有理没理的公开说一说

      别不明就里的不点名

      想砸电脑就砸电脑,没人拦着你

      删除
    4. 如果会写JS,自己应该可以做到“屏蔽”某些留言,比如含特定字符的楼层,比如特定ID发的留言。不过18L2单元还是先调理好自己的情绪吧,最近的留言还好吧,没有spam,没有大量重复的网评,人身公鸡的也比较轻微。

      如果是LS单元“守夜人”说的那位IT fans,我觉得还是看一下从IT界流出来的《如何提问》吧(好像是这个)。相信对提升有帮助。

      P.S. LS的“扯鬼”用得真是到位!

      删除
    5. to 2单元
      看了下回复时间,如果我没对错号的话,所指“不堪入目”的留言是我写的么(囧),如果对你的个人生活造成如此大的困扰,看来我必须say sorry了。

      毕竟这个博客就是讨论翻墙与政治为主,如果仅考虑编程技术,似乎不用冒险来这里吧。所以来到这里又对民主和反专制讨论如此困扰的人,我也有点摸不着头脑了,或许是搞学术研究不得不来此摸索翻墙技术的党员?

      记得当年大学时,团委书记找我们入党,要每人定期上交思想审查,考察通过后放行。我当时很惊讶,入党何需如此,本能的厌恶感让我转身离开,入党之事就此不了了之。事后想来,对极权政治的不了解和自由的人性使我作出了那个选择,团委书记迷惑甚至憎恨的眼光让我至今记忆犹新,我或许就是他眼中的异见人士和反动派吧(笑)。

      所以我常常猜想,一个愿意自我审查,自我阉割的党员内心究竟如何?借鉴心理学中保持一致(认知失调)的理论,这种自我审查的方法,使入党者为了让自己的想法与行为保持一致,即便一开始不信,或迟或早,他们都会捍卫共产主义和党的理念。

      这正是中朝战争中对美国战俘洗脑的方法,中共将它用在“同志”的身上,使每个党员都成为对党忠心不二,对其它思想拒绝接受的机器。这样一来,深受洗脑的党员们把其它思想视为异端,严加排斥就有个合情合理的解释了。

      删除
    6. 其实由用户自定义屏蔽某些留言/用户在g+、facebook、twitter这些主流社交网站上是很正常的,不一定非要涉及人身攻击才去屏蔽。

      而且信息流过载使得一些自己所需要(有价值意义)的信息被淹没在一片“海洋”中如同海底捞针似的很耗费时间、精力,严重挤压个人生活空间和降低工作效率,长时间下去还会令人精神分散、恍惚游离。这不是造成很严重的影响吗?

      另外语言暴力也会对人的心理、精神上产生很大的负面影响,这点也没错啊?

      有时候气急焦虑说的话难免会伤人你又不是不知道,此时此刻再“以牙还牙”、“以暴制暴”其后果...在现实生活中又会怎样呢(留给各位想象吧)?

      删除
    7. 2单元的感性和6单元的理性真的是同一个人么。。
      不知是否是我的错觉,6单元的语气似乎似曾相识,尤其3个反问句,难道是和我讨论反共不是反专制的那位?
      比较下他说过的这3句话“老兄,你知道发挥阴谋论搞成人身攻击伤害有多严重吗?”“你也太神经过敏了吧?”“看你把神经绷得紧紧的,何不干脆把我定性为政府爪牙来抄你家水表?”
      不得不说,五毛们经过各种培训在不断进化,转移话题的技巧在不断提高。大家不要模糊焦点,还是延续5单元的内容继续谈好了。

      PS:

      删除
    8. Ho Steven
      你多虑了
      那是因为语言组织表达上的问题(说真的我在小学作文就很差劲,论文更不用说了),不知道该怎么分段,标点符号不知道怎么用,好像用“。”也不对,用“!”也不对,还是用“?”呢?

      想找教材补补基础苦于难找,不吝赐教啊!

      删除
    9. 个人猜想,五毛们针对随想时间精力有限的情形开始有意识地加以利用,用各种问题分散精力。毕竟个人不像党国那样财力雄厚,打得起消耗战。
      这种策略不失为一种方法,不过这种方法既然我能看出,相信明眼人不在少数。

      删除
    10. 我本来想说Ho Steven想得太多了,想唠叨一段,结果一看6单元的发言,我倒觉得是我考虑太多了

      既然你一直嚷嚷什么语言暴力,心理健康,那就说说哪些人的哪些话让你不爽?

      让你哪里不爽?

      真不知道你故意放大事实是想干什么

      人家5单元说话是委婉说,没有直接说你是五毛,仅小心表达的自己的猜测

      你在6单元就自己撞枪口

      我感觉这个人应该不是跟Ho Steven争论的那个“匿名”

      删除
    11. Ho Steven
      正因为以上原因让我想写博客(怎么组织语言才流利以及标点符号怎么用)都很困扰,多多包涵(后面这个“多多包涵”该用哪个标点符号)

      为避免引起误会那我以后不要标点符号了,用空格隔开行了吧

      删除
    12. 另外语言暴力也会对人的心理、精神上产生很大的负面影响,这点也没错啊?

      有时候气急焦虑说的话难免会伤人你又不是不知道,此时此刻再“以牙还牙”、“以暴制暴”其后果...在现实生活中又会怎样呢(留给各位想象吧)?
      ----------------------------------
      这两句话才是真正的重点

      你好好把这两句话解释解释

      别玩儿不明觉厉那套

      删除
    13. 为避免引起误会那我以后不要标点符号了,用空格隔开行了吧
      ------------------------------------------
      故意抬扛啊?

      删除
    14. 语言暴力对人的心理、精神上产生很大的负面影响,这在现实生活中经常上演,例子多如牛毛一点都不奇怪啊 (并不是暗箭伤人)

      疑心重重也是一种心理问题 只是很多人对心理学缺乏了解意识不到自己有心理问题 这是很普遍的现象

      删除
    15. 语言暴力对人的心理、精神上产生很大的负面影响,这在现实生活中经常上演,例子多如牛毛一点都不奇怪啊 (并不是暗箭伤人)
      ------------------------------
      不要重复论证

      疑心重重也是一种心理问题 只是很多人对心理学缺乏了解意识不到自己有心理问题 这是很普遍的现象
      -----------------------
      不要转移话题

      先把那两段话解释清楚再说别的

      删除
  18. RSS订阅功能貌似挂了

    回复删除
    回复
    1. TO 19楼的网友
      多谢提醒 :)
      但博客的 RSS 订阅链接,目前还是正常的。
      你可以用浏览器访问 http://feeds2.feedburner.com/programthink
      如果你的浏览器可以打开这个链接,但是你的阅读器没有显示俺博客的新博文,那么很有可能是博客阅读器的问题。

      删除
  19. to 楼主:有一本关于较为通俗的介绍女权运动的书籍,我已经发给你了,邮件主题是“通俗介绍女权运动流派由来的书”,请查收一下,另外还发了一本关于言论自由的书,请在有空时上传分享给大家,谢谢!

    回复删除
    回复
    1. 老熟人,你好!
      很感谢再次分享电子书给俺,刚才已经给你回信了。
      这两本书俺会抽空上传到网盘

      删除
  20. 建议博主开个论坛,现在以你的博客影响力和人气肯定撑得起一个论坛。博文是干货,论坛是其他讨论,哪怕是用google论坛开一个,链接过来

    回复删除
    回复
    1. TO jeff
      多谢提建议 :)

      俺也在想这个问题。
      1、
      是否有足够的人气(看最近一年的评论数,大概有。但俺还不是很确定)
      2、
      用哪一个网站来搭建论坛?
      曾经考虑过 Google Group,甚至还考虑过 TOR 和 I2P 的暗网。
      不知道还有没有更好的选择?
      3、
      谁当论坛的管理员?
      老实说,俺从来没管理过 BBS(缺少这方面经验啊)
      另外,俺的时间也不够啊。
      或许得另外找人帮忙

      删除
    2. 安全否?BBS不好搞啊!

      删除
    3. 不要搞bbs 用的东西越多风险就越多!!!

      删除
    4. TO 2单元 和 3单元
      多谢提醒 :)
      如果要搞 BBS,肯定得考虑安全性因素。

      删除
    5. Google论坛有什么安全性需要考虑呢?
      至于管理员,我认为不需要,翻墙来的人,自律性应该很好。

      最主要的,是放手一试。不试一试,怎么知道有什么问题?

      删除
    6. 我也认为用Google的很方便,安全性不用博主花心思,管理也容易,改一下hosts不用代理就能轻松访问。只是现在G+已是墙外国人聚集最多的地方,用Google论坛的国人倒不多,如果博主在那开坛,相信会成另一聚集热点,这样是否有把所鸡蛋放同一篮里的风险

      删除
    7. TO 5单元的网友
      Google 论坛本身,安全性肯定是不错的。

      但是“隐匿性”方面,好像做不到。
      因为 Google 论坛需要登录。而目前在俺这里发言的,很多人都喜欢用匿名,以防身份暴露。
      当然,有些网友可以单独注册一个 Gmail 帐号专门用来登录这个论坛。但这样还是有点麻烦。
      所以俺还在考虑。

      删除
    8. TO 12345
      论坛还是需要有人做“版主”来管理的。如果没有“版主”,内容的信噪比会很差的。
      但是俺又缺乏足够的时间来干这事儿 :(

      删除
    9. 自由是有代价的,麻烦一点还是值得的!

      删除
  21. Firefox 附加组件Lightbeam怎么用,看不懂,

    回复删除
    回复
    1. TO 22楼的网友
      这个 Lightbeam 俺没用过,没法帮你。抱歉 :(

      删除
  22. 过滤至少一部分浏览器指纹,可以用privoxy。比如UA可以过滤。当然,配置过于麻烦了。
    从privoxy的配置文件中我还注意到一个指纹——真是没想到啊——浏览器发送HTTP Headers时各项的顺序。配置文件说,这个顺序可以识别浏览器,但是过滤时重新排序,最好按照一个比较常见的顺序,否则特立独行,反而会增加指纹的独特性。

    回复删除
    回复
    1. TO 23楼的网友
      多谢分享 Privoxy 的经验 :)

      关于“HTTP Headers 的发送顺序”
      这确实可以用来识别浏览器的【真实类型】——如果不同类型的浏览器,其发送顺序不同对话。
      不过这个信息的信息量还不是很大(如果用的是主流浏览器,这个信息的信息量应该远小于 User Agent)

      删除
  23. 大神,请教一个问题。我们公司使用NAC Agent。如果我用GoAgent代理访问网站公司能监控到我访问的是什么网站吗?

    回复删除
    回复
    1. TO shlen do
      首先,请不要叫俺“大神”。俺的水平没那么高。

      关于你提到的这个问题,请参见俺之前写的《[url=http://program-think.blogspot.com/2013/05/howto-anti-it-audit-0.html]如何对付公司的监控[/url]》系列博文。
      关键要搞清楚你们公司的监控,用的是“网络行为监控”还是“主机行为监控”?
      然后才能采取针对性防范措施。

      删除
    2. 应该是采用流量监控。谢谢博主。

      删除
    3. TO shlen do
      你提到是“流量监控”,通常这属于“网络行为监控”的一种。
      对于“网络行为监控”,你可以采用翻墙工具上网(即使上国内网站也翻墙)。
      因为翻墙工具都会对网络传输流量加密,那么你公司的网络监控就无法知道你上了啥网站。
      另外,GoAgent 本身没有提供原生的 HTTPS 代理,而且本身没有足够强度的加密。
      不如改用 VPN 类别的翻墙 或者 某些传统的翻墙工具(无界、自由门、赛风、等)

      删除
  24. 大神,关于昨天下午DNS被劫持的事件,你有什么看法没有??因为国内报刊说的都是黑客的攻击。。我觉得这是假的。
    还有就是“曾经发生国E国用户经过C国问A国地址被忽悠到未知领域的恶性事件,于是C国的世界级邮局被除名”,这是什么事件?

    回复删除
    回复
    1. TO 25楼的网友
      首先,请不要叫俺“大神”。俺的水平没那么高。

      昨天的 DNS 全国性故障,非常大的可能性是:GFW 技术人员出现误操作。
      因为 GFW 本身就具有DNS 污染的能力,而且 GFW 又是部署在国际出口的,具有对大陆整个公网的影响力。
      (以上只是俺个人猜测,俺目前没有充分证据证明是 GFW)

      当然啦,如果这事儿真是 GFW 导致的,朝廷肯定不会承认的啦。
      咱们的党国,连 GFW 的存在,都一直不肯承认呢

      删除
  25. wsj给出的答案-http://cn.wsj.com/gb/20140122/bog093049.asp?source=whatnews2
    貌似是GFW进行后台调整出现了错误,官媒当然不敢报道,只好推到黑客的头上。

    回复删除
    回复
    1. TO Ho Steven
      多谢转贴《华尔街日报》的相关报道 :)
      俺也觉得是 GFW 的误操作导致了昨天的全国性故障。
      昨天的事故,感觉就像是一次全范围的 DNS 污染。

      删除
  26. https://download-chromium.appspot.com/ 这个页面,很奇怪,貌似是浏览器下载地址。然后,我直接点下载,下载的安装包88.5M,右键复制链接地址&迅雷下载无论怎么整都是33.4M。这个可能被篡改吗?迅雷探测到这个地址然后自己替代文件?没有搞懂哎~还是我这是偶然现象?

    回复删除
    回复
    1. TO 28楼的网友
      迅雷会根据下载的 URL 网址进行缓存(缓存到迅雷自己的服务器上,以加快速度)。
      有可能是你下载的网站,文件已经变了,而 迅雷 没有即使更新缓存,所以从 迅雷 的缓存上下载到的还是旧的文件。

      上述只是俺的猜测。如果你比较担心国内的流氓软件,最好别用迅雷——开源并且靠谱的下载工具有很多

      删除
  27. 编程随想您是不是忘了xff header?

    回复删除
    回复
    1. X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。-维基百科
      例如http://www.leaky.org/ip_tester.pl这个网站能显示出你的xff header。
      在使用代理的时候,有些匿名度低的代理会把你的IP加入xff header里面,有些不会。用代理的要注意了。

      删除
  28. 对于第二个的 solution: 进入chrome://plugins/, 把所有插件都禁用了

    回复删除
  29. 我的指纹现在达到 20多位啦,不要问我具体数字

    回复删除
  30. 在使用代理时,据说FLASH和JAVA会泄露真实IP,把谷歌浏览器“设置-内容设置-插件”选项,设置成“点击运行”或“阻止所有插件”,应该就可以了吧!
    IP泄露测试站点:http://ip-check.info

    回复删除
    回复
    1. Tor不存在这样的问题,Tor默认是禁止这类插件的,经过几次测试,Tor不会因插件问题泄漏真实IP

      删除
  31. 现代浏览器的一项安全功能有可能成为一种超级的跟踪器,除非你改用IE。HTTP Strict Transport Security(HSTS)是帮助网站将用户从不安全的HTTP版本重定向到安全的HTTPS版本的一种机制。如果你访问的网站启用了HSTS,那么浏览器将会记住这一标记,确保你在未来每次访问该网站都会自动使用HTTPS连接。自动重定向功能能保护你的连接在访问期间不会被人拦截,但也可能会被恶意网站滥用,储存一个独一无二的数据跟踪你的浏览器。即使使用隐私模式,HSTS标记也会在网站之间共享。在Google Chrome、Firefox 和Opera上,这个问题不那么严重,因为清空cookies会同时清空HSTS标记,但苹果设备则没有方法清空HSTS标记。IE则不存在这个问题,因为它不支持HSTS。

    回复删除
  32. 想问您个问题,我用虚拟机的系统打开浏览器canvas指纹还和主机一样是什么情况?应该如何防护?

    回复删除