下载Tor的consensus文件

主要就是从Tor的权威目录服务器上获取Tor的consensus文件,并尝试解析一下这个consensus文件。主要目的是获取到当前Tor网络中所有Tor节点的信息。

首先是如何获取consensus文件,Tor是通过HTTP的形式分发consensus文件的,因此首先要找到这个HTTP链接在哪里。

十分幸运的是我之前读过Tor的一些specification,其中在https://gitweb.torproject.org/torspec.git/tree/dir-spec.txt这个文件当中看到了相应的HTTP链接

3.11. Publishing the signed consensus

   The voting period ends at the valid-after time. If the consensus has
   been signed by a majority of authorities, these documents are made
   available at
      http:///tor/status-vote/current/consensus.z
   and
      http:///tor/status-vote/current/consensus-signatures.z
   [XXX current/consensus-signatures is not currently implemented, as it
    is not used in the voting protocol.]

   [XXX possible future features include support for downloading old
    consensuses.]

   The other vote documents are analogously made available under
     http:///tor/status-vote/current/authority.z
     http:///tor/status-vote/current/.z
     http:///tor/status-vote/current/d/.z
     http:///tor/status-vote/current/bandwidth.z
   once the voting period ends, regardless of the number of signatures.

   The authorities serve another consensus of each flavor "F" from the
   locations
      /tor/status-vote/(current|next)/consensus-F.z. and
      /tor/status-vote/(current|next)/consensus-F/+....z.

   The standard URLs for bandwidth list files first-appeared in Tor 0.3.5.
也就是说HTTP链接形如:http:///tor/status-vote/current/consensus.z

其中hostname是Tor的某个权威目录服务器的IP:DirPort。因此下一步的主要任务就是找到Tor的权威目录服务器都有哪些,找到后套用即可。

我目前使用source insight看Tor的源码,一番操作之后,我找到了权威目录服务器的地址:

以171.25.193.9:443这个权威目录服务器为例,在浏览器中键入地址:http://171.25.193.9:443/tor/status-vote/current/consensus.z即可下载共识文件

下载完后是这样的一个文件:

此时需要查看consensus文件的内容只需要将其后缀.z去掉。然后用记事本打开即可。

打开后是这种样子的:可以看到很多有用的信息。

下图主要是共识文件头部的一些信息,描述了consensus文件的可用时间、建议使用的Tor版本、已知的flags。还可以看到参与投票的权威目录服务器是谁,它的投票digest

再往下翻就是各个节点的信息:其中一个r s v pr w p讲述一个结点的相关信息。