這個工具可以很好的解除百度屏蔽敏感詞。
為了對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官方手機版