网友评分:
9.7分
简单的BT文件解析器
可以看到bencoding编码中的四种类型都有一个标识头,比如整数类型以'i'开始,string类型以数字开始。利用这一特性,对于每一个类型,我们先尝试读一个字符,并根据读入的字符判断读入的是什么类型,如‘i’为整形,'d'为字典,'l'为列表而剩下的数字则为字符串。
需要四个方法来分别解析数字,字符串,字典和列表。其中数字和字符串类型只用于表示值,而不能作为容器;列表和字典类型都可以作为容器,故还有一个parent参数,用于向父节点添加子节点。
显示BT文件树状图
仿照“BEncode Editor”这款工具的界面来显示。简单分析一下,其实就是使用了一个TreeView的控件来显示。由于我们解析出来的节点和TreeView控件的节点正好是一一对应的,所以这里也用一个递归就能实现了。
修改BT文件
至今为止我们都在做重复的工作,模仿已有的工具,那么接下来就是新的内容了。经过我的仔细观察后发现,百度云离线下载检测的关键词主要为
{ "name", "name.utf-8", "path", "path.utf-8", "comment", "comment.utf-8", "publisher", "publisher-url", "publisher-url.utf-8", "publisher.utf-8"}
这些键后面的值。只要我们把这些后面对应的值改为一些不敏感的词,那么就能躲过百度的审查。
为了把刚学的设计模式用上去,我在之前定义IBNode接口的时候预留了一个方法。