網友評分: 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接口的時候預留了一個方法。