2012-08-04 64 views
0

我正在製作一個腳本來計算網絡中單詞的分佈。我所要做的就是檢查儘可能多的隨機網站,並計算這些網站中的單詞數量,列出它們並對它們進行排序,以便大部分時間發生的單詞都是列表中的頂部。我在做什麼是隨機生成的IP號碼:在bash中獲取隨機的網站名稱

a=`expr $RANDOM % 255` 
let "a+=1" 
b=`expr $RANDOM % 256` 
c=`expr $RANDOM % 256` 
d=`expr $RANDOM % 256` 
ip=$a.$b.$c.$d 

後使用nmap我檢查端口80或8080是這些網站上的開放,使有機會的話,這是一個網站。

如果我確定該ip不屬於一個網站我將地址添加到黑名單文件,以便它不會再次檢查。

如果端口80或端口8080打開,那麼我必須通過反向查找來解析IP並獲取屬於該IP的所有域名。

的問題是,如果我做這些命令之一,產量僅是單一的PTR記錄,同時可以有多個:

dig -x ipaddres +short 
nslookup ipaddress 
host ipaddress 

我prefere這在bash來解決,但如果有是C中的解決方案,它也可以幫助

之後,我使用w3m將網站頁面複製到文件,並計算單詞出現次數。

另外在這裏,我還有一個問題,有沒有辦法檢查屬於該網站的可用公共頁面,而不僅僅是索引?

任何幫助表示讚賞

+0

端口掃描通常是不被接受的。雖然這是小規模的,只限於80港口,但我不認爲你會被抓住是不現實的;但我肯定會建議您至少檢查一下您的ISP的可接受使用政策對此有何評論。你可能不想冒這個風險你的互聯網訪問。無論如何,贊同毛澤東的答案; 「你這樣做是錯的」。 – tripleee 2012-08-04 06:32:53

+0

可以通過從搜索結果中拉出(比方說)第六個Google命中來獲得一組隨機字典單詞的合理隨機網頁集合。這樣一來,你也不大可能會出現在不是英文的網站上,我認爲你想限制自己。在每次搜索中使用多個英文單詞以減少誤報的可能性。 (例如,「anaconda hat」可能是英語以外的一些語言,只使用較長的單詞可能會有所幫助,並且可能不會過多地扭曲結果;或者在每個查詢中包含「the」和「of」作爲搜索詞?) – tripleee 2012-08-04 06:41:00

+0

...嗯,搜索兩個難得的單詞會導致結果嚴重偏向長文檔,如字典列表,所以不要這樣做。 – tripleee 2012-08-04 06:45:46

回答

3

很多網站無法訪問純粹的IP地址,由於虛擬主機和這樣的。我不確定你會通過這種方式在網上獲得統一的文字分佈。此外,承載網站的IP地址並不是通過隨機生成32位數字來實現均勻分佈的。擁有絕大多數真實網站的託管公司將集中在小範圍內,而許多其他IP將成爲ISP的端點,可能沒有任何東西託管。

鑑於上述情況以及您嘗試解決的問題,我實際上會建議讓URL分佈以抓取並計算這些詞的頻率。一個好的工具可以像WWW一樣:在Python,Perl,Ruby等中進行機械化。由於你的限制因素將是你的互聯網連接,而不是你的處理速度,所以在低級別中這樣做沒有任何優勢語言。這樣,您將有更高的機會在同一個IP上訪問多個站點。

+0

感謝但不幸的是我需要做大部分shell編程的工作,因爲這是我需要爲大學做的功課......說實話,我知道你的意思,但並不一定要那麼準確。其實我只需要找到儘可能多的網站,並計算單詞。問題是,正如你們知道大多數IP包含多個域名一樣,我無法找到所有這些域名的方法,因爲我在我的文章中列出的命令只給出了一個站點的canonic名稱: ( – Epilogue 2012-08-04 02:57:39

+0

也很抱歉,但網站的IP地址不均勻分佈,有沒有辦法檢查哪些IP範圍最重要的託管公司提供? – Epilogue 2012-08-04 03:02:56

+0

而隨機IP方法將無法工作,例如在具有HTTP代理 – 2012-08-04 06:02:02