這個工具可以很好的解除百度屏蔽敏感詞。
為了對BT文件有一個直觀的印象,我們還是以速度與激情7這個BT文件為例,從圖中為各位看官做一下介紹。仔細觀察下圖,我們發(fā)現(xiàn)在圖中的節(jié)點無非是三種類型,第一種是根節(jié)點,第二種是鍵值對節(jié)點(字典也是一個特殊的鍵值對節(jié)點,其鍵為名字,而值為其所有子節(jié)點),第三種列表節(jié)點。
簡單的BT文件解析器
可以看到bencoding編碼中的四種類型都有一個標(biāo)識頭,比如整數(shù)類型以'i'開始,string類型以數(shù)字開始。利用這一特性,對于每一個類型,我們先嘗試讀一個字符,并根據(jù)讀入的字符判斷讀入的是什么類型,如‘i’為整形,'d'為字典,'l'為列表而剩下的數(shù)字則為字符串。
那么接下來的思路就非常清晰了,我們需要四個方法來分別解析數(shù)字,字符串,字典和列表。其中數(shù)字和字符串類型只用于表示值,而不能作為容器;列表和字典類型都可以作為容器,故還有一個parent參數(shù),用于向父節(jié)點添加子節(jié)點。
由于到BT文件是樹狀結(jié)構(gòu)的,這里我們使用遞歸來實現(xiàn)對BT文件的解析?梢源_定的,BT文件一定是以一個字典類型開始的,所以我們先調(diào)用AnalysisDictionary方法,并把參數(shù)根節(jié)點傳給它。之后在該方法中通過讀入下一個字符來判斷是什么類型,并調(diào)用相應(yīng)的方法來解析該類型,而相應(yīng)的方法又通過相同的方法繼續(xù)調(diào)用另外的方法,如此循環(huán),直到解析完畢,這也正是遞歸的思想。下邊就是我實現(xiàn)的一個簡單的BT文件解析器,返回的是一個IBNode類型的根節(jié)點。
顯示BT文件樹狀圖
好不容易解析完了,當(dāng)然要先把它顯示出來看是否正確。這里我們仿照“BEncode Editor”這款工具的界面來顯示。簡單分析一下,其實就是使用了一個TreeView的控件來顯示。由于我們解析出來的節(jié)點和TreeView控件的節(jié)點正好是一一對應(yīng)的,所以這里也用一個遞歸就能實現(xiàn)了。
顯示效果就像下面這個樣子。已經(jīng)和上面BT文件修改工具很像了。
修改BT文件
至今為止我們都在做重復(fù)的工作,模仿已有的工具,那么接下來就是新的內(nèi)容了。經(jīng)過我的仔細觀察后發(fā)現(xiàn),百度云離線下載檢測的關(guān)鍵詞主要為
{ "name", "name.utf-8", "path", "path.utf-8", "comment", "comment.utf-8", "publisher", "publisher-url", "publisher-url.utf-8", "publisher.utf-8"}
這些鍵后面的值。只要我們把這些后面對應(yīng)的值改為一些不敏感的詞,那么就能躲過百度的審查。
為了把剛學(xué)的設(shè)計模式用上去,我在之前定義IBNode接口的時候預(yù)留了一個方法。
- PC官方版
- 安卓官方手機版
- IOS官方手機版