<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/tips/3831

            0x01 需求背景


            公司要弄自動化的掃描工具,目前市面上的工具都無法針對業務進行檢測,所以只能自己開發。辣么,就有個問題,爬蟲需要自己去寫。。。

            之前自己也寫過相關的爬蟲,但是要么是半成品,要么就是垃圾代碼…很多都無法直接引用,所以,在強大的KPI考核下,強迫自己代碼重構。用Python寫起。

            0x02 遇到問題


            本身在爬蟲上輕車熟路,很輕易就寫出了一個根據多線程的爬蟲,完成整站掃描,但是問題來了,效率如何提高。仔細觀察下掃描的鏈接就發現,它爬取了很多鏈接,都是一些重復性比較高的鏈接,例如以下:

            這些鏈接都是靜態的頁面,也就是一些新聞之類的,頁面架構的都差不多,這個情況我們自己知道,但是爬蟲是不了解的。它只是按照我們指定的規則去做,所以導致爬蟲效率降低。

            在我預想的情況下,一些靜態的頁面,我們是可以減少抓取的,通過減少抓取我們可以提高整體的效率。例如:

            http://www.xxx.com/news/ziyue/2014/1029/61069.html

            http://www.xxx.com/news/ziyue/2014/1029/61070.html

            http://www.xxx.com/news/ziyue/2014/1029/61071.html

            這三個URL中,我們只需要抓取一條作為典型,完全就能達到我們的需求,不需要將所有的抓下來。因為大家都知道,這是偽靜態生成的。那么問題來了,該怎樣去做這個規則?小伙伴可能有想法說:“你怎么知道這種靜態頁面就一定架構一樣呢?” 好吧,我不確定,但是我有辦法去確定。現在就以上面的URL做個拆分了解下:

            http://www.xxx.com/ 這個是host

            /news/ziyue/2014/1029/ 這個是具體的目錄,或者說是具體的文章歸類。

            61069.html 這個是具體的頁面。

            上面分析后,小伙伴又有新的問題:“莫裝逼,你怎么知道人家的URL一定按照這個標準來?” 好吧,對此我整理了下我所發現的URL組合規則,目前很多URL都是以以下幾種方式組成的。

            1)靜態頁面型:

            http://[host]/xxx/xxx/xxx/[int|string].html

            2)rewrite型:

            http://[host]/xxx/xxx/xxx/[string|int]

            3)目錄型:

            http://[host]/xxx/xxx/xxx/Catalog/

            4)不固定型:

            http://[host]/xxx/xxx/xxx/file.[asp|php|aspx|do|jsp]?[string|int]=[string|int]

            0x03 奇葩的實驗


            找到了這些規律后,應該考慮怎樣去把爬蟲的質量提升起來,降低重復率,然后就有了以下奇葩的實驗:

            1)先建立規則:

            2)?然后針對這些規則進行引用、測試。

            運行結果諸如:

            確實達到了我期望的結果…. 本文只是拋磚引玉,可能代碼略挫。各位大俠輕拍,射射。

            【實驗前】

            【實驗后】

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线