这个工具可以很好的解除百度屏蔽敏感词。
为了对BT文件有一个直观的印象,我们还是以速度与激情7这个BT文件为例,从图中为各位看官做一下介绍。仔细观察下图,我们发现在图中的节点无非是三种类型,第一种是根节点,第二种是键值对节点(字典也是一个特殊的键值对节点,其键为名字,而值为其所有子节点),第三种列表节点。
简单的BT文件解析器
可以看到bencoding编码中的四种类型都有一个标识头,比如整数类型以'i'开始,string类型以数字开始。利用这一特性,对于每一个类型,我们先尝试读一个字符,并根据读入的字符判断读入的是什么类型,如‘i’为整形,'d'为字典,'l'为列表而剩下的数字则为字符串。
那么接下来的思路就非常清晰了,我们需要四个方法来分别解析数字,字符串,字典和列表。其中数字和字符串类型只用于表示值,而不能作为容器;列表和字典类型都可以作为容器,故还有一个parent参数,用于向父节点添加子节点。
由于到BT文件是树状结构的,这里我们使用递归来实现对BT文件的解析。可以确定的,BT文件一定是以一个字典类型开始的,所以我们先调用AnalysisDictionary方法,并把参数根节点传给它。之后在该方法中通过读入下一个字符来判断是什么类型,并调用相应的方法来解析该类型,而相应的方法又通过相同的方法继续调用另外的方法,如此循环,直到解析完毕,这也正是递归的思想。下边就是我实现的一个简单的BT文件解析器,返回的是一个IBNode类型的根节点。
显示BT文件树状图
好不容易解析完了,当然要先把它显示出来看是否正确。这里我们仿照“BEncode Editor”这款工具的界面来显示。简单分析一下,其实就是使用了一个TreeView的控件来显示。由于我们解析出来的节点和TreeView控件的节点正好是一一对应的,所以这里也用一个递归就能实现了。
显示效果就像下面这个样子。已经和上面BT文件修改工具很像了。
修改BT文件
至今为止我们都在做重复的工作,模仿已有的工具,那么接下来就是新的内容了。经过我的仔细观察后发现,百度云离线下载检测的关键词主要为
{ "name", "name.utf-8", "path", "path.utf-8", "comment", "comment.utf-8", "publisher", "publisher-url", "publisher-url.utf-8", "publisher.utf-8"}
这些键后面的值。只要我们把这些后面对应的值改为一些不敏感的词,那么就能躲过百度的审查。
为了把刚学的设计模式用上去,我在之前定义IBNode接口的时候预留了一个方法。
- PC官方版
- 安卓官方手机版
- IOS官方手机版