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