<abbr id="8ggge"></abbr>
<kbd id="8ggge"><code id="8ggge"></code></kbd>
<pre id="8ggge"></pre>
  • <s id="8ggge"><dd id="8ggge"></dd></s>
    <s id="8ggge"><dd id="8ggge"></dd></s><cite id="8ggge"><tbody id="8ggge"></tbody></cite>
    <kbd id="8ggge"><code id="8ggge"></code></kbd>

    國內或國外 期刊或論文

    您當前的位置:發表學術論文網電子論文》 國外科技網站反爬蟲研究及數據獲取對策研究> 正文

    國外科技網站反爬蟲研究及數據獲取對策研究

    所屬分類:電子論文 閱讀次 時間:2020-04-09 11:00

    本文摘要:摘要:當前,來自國外網站的互聯網開源科技信息已經成為科技情報的重要表現形式和組成部分,利用垂直爬取技術抽

      摘要:當前,來自國外網站的互聯網開源科技信息已經成為科技情報的重要表現形式和組成部分,利用垂直爬取技術抽取、集成、解析、跟蹤、研究這些網頁信息可幫助科研人員實時、全面、深入地了解領域內的研究現狀。然而國內目前訪問國外某些網站困難;且國外很多網站都加強了反爬蟲技術策略與應用,爬蟲技術總是不斷被反爬蟲技術超越,特定主題內容規模化信息獲取尤為困難。采用簡單的搜索方式難以獲取,且有些信息具有很強的時效性,人工跟蹤難度大、時間耗費多,不利于數據的長期積累。為此,我們重點針對開源信息獲取的反爬蟲技術開展了研究,提出針對性的解決方案,系統地介紹了反爬蟲技術和爬蟲技術的應用。

      關鍵詞:爬蟲;反爬蟲;信息采集;搜索引擎;python

    信息化研究

      0引言

      當前,互聯網開源信息已經成為科技情報的重要表現形式和組成部分,特別是重點科技網站的信息,代表了全球最新的科技發展現狀和趨勢,但有些信息處于網站深層結構中,采用簡單的搜索方式難以獲取,且具有很強的時效性,人工跟蹤難度大、時間耗費多,不易于長期積累。通過爬蟲技術對這些開源數據自動抽取、集成、解析后得到的信息,可支撐科研人員在當前大數據背景下對情報作出快速反應,滿足這種需求需要基于爬蟲技術的數據采集與加工處理[3]。目前,國外很多重點科技網站都加強了反爬蟲技術研究與應用,爬蟲技術總是不斷被反爬蟲技術超越,特定主題內容規模化信息獲取尤為困難,因此迫切需要系統地開展網絡爬蟲和反爬蟲技術研究[1]。

      1網站反爬蟲策略研究

      爬蟲和反爬蟲技術是矛與盾之爭,且換代周期越來越短,故需要長期化、系統化、平臺化、標準化的研究,以避免每次遇到不同的爬蟲和反爬蟲問題都重新進行重復冗余的工作[2]。一是針對信息源網站開展反爬蟲技術研究,進而針對性地提出解決方案,從而合法、高效、便捷地獲取開源信息。二是針對惡意爬蟲攻擊,研究相應的反爬蟲解決方案(例如,如何制定上下策略,如何匹配規則,如何更換懲罰等),限制網絡爬蟲大量無效的訪問以及惡意爬取信息。只有加強網站反爬蟲技術措施的應用,才能有效屏蔽爬蟲工具惡意竊取數據。

      在用爬蟲工具爬取數據時,經常會遇到數據雖然在瀏覽器上顯示但卻抓取不到的情況,其原因也許是向服務器提交不恰當的表單被拒絕,也許是需要注冊才能訪問、IP地址已經被限制請求、復雜的驗證碼攔截等。我們共分析了50個國外科技門戶網站,共133條信息源,其中網站欄目也叫“爬蟲入口”(同一個網站包含多個信息源,但同一網站不同信息源的反爬蟲策略可能不同,例如網站的文獻類欄目跟視頻類欄目反爬蟲策略不同)。由于篇幅原因,表1列舉了幾個具有代表性反爬蟲措施的典型網站欄目所應用的反爬蟲策略。

      2反爬蟲解決方案

      2.1服務端限制

      反爬蟲技術通常先在服務器端進行請求限制,防止爬蟲進行數據請求,從源頭限制惡意數據爬取。通常有如下幾種方式。

      (1)“請求頭設置”反爬蟲策略:HTTP的請求頭是在每次向網絡服務器發送請求時,傳遞的一組屬性和配置信息。HTTP定義了十幾種請求頭類型,如python-requests、User-Agent等,易被發現,網站運維如發現攜帶有這類請求頭的數據包,拒絕訪問,爬蟲任務即刻失敗,通常會返回403錯誤。目前幾乎所有網站都模擬了請求頭設置。例如www.northropgrumman.com-AnnualReports,www.afcea.org-Magazine等。

      雖然目標網站可能會對HTTP請求頭的每個屬性進行“是否常規訪問”的判斷,但如果把User-Agent屬性設置成其他無關參數,偽裝成通用搜索引擎或者其他瀏覽器請求頭,例如設置r=requests.get(url,headers={’User-Agent’:’Baiduspider’})就可解決。

      (2)“簽名請求規則”反爬蟲策略:簽名請求指在請求url中增加一個sign字段,通常取值為自定義字段的md5校驗碼。對于每一次HTTP或者HTTPS協議請求,網站根據訪問中的簽名信息驗證訪問請求者身份,判斷是否允許繼續訪問。例如www.militaryaerospace.com網站應用的就是此種反爬蟲策略。爬蟲技術人員對待此類網站,通常會判斷發起請求方,如果是JS發起的請求,簽名規則可以在JS函數中尋找,再根據規則去構造簽名;如果是App發起的請求,最大可能是由于前端調用原生封裝,或者原生發起等多種原因。情況復雜的,需要反編譯App包,但也不一定能成功,需要反復調試驗證。

      (3)“流量限制”反爬蟲策略:防護措施完備的網站會監控用戶是否快速地提交表單,或者快速地與網站進行交互,從而限制速度異常、短時間大量下載信息的IP訪問。但此種方法極其容易誤傷其他正常瀏覽用戶,因為同一區域內的其他用戶可能有著相同的IP,所以一般運維人員很少采用此方法限制爬蟲。而爬蟲技術人員如果發現請求被限制,可嘗試請求延遲,通過AJAX延時加載、異步更新腳本技術延遲網頁加載的速度,避免被目標網站查封,具體延遲時間應根據實際情況設定。如www.ict.fraunhofer.de、www.ieeexplore.ieee.org、萊茵金屬防務公司網站等可采用此種方法。

      除此之外還可考慮使用分布式爬取或者購買代理IP設置代理池的方式解決,筆者就是采用直接購買專業代理的方式進行解決,實踐證明應用效果很好。目前有很多收費的代理IP服務平臺,有各種服務方式,可滿足各種應用需求。但需要注意,合理控制數據爬取速度是爬蟲行業應該遵守的規則,惡意速度的訪問爬取會消耗服務器資源,嚴重情況甚至會把目標網站拖垮。

      (4)“cookie/cookies限制”反爬蟲策略:“cookie/cookies限制”指服務器對每一個訪問網頁的用戶都設置cookie/cookies,給其一個cookie/cookies字段。網站為了辨別用戶身份、進行session跟蹤,當該cookies訪問超過某一個閾值時就禁止掉該cookie/cookies,導致數據爬取失敗。如https://www.militaryaerospace.com/sea-technology/sea-technology-articles.html就是此類情況。網絡爬蟲想要模擬真實用戶請求發送給目標站點,就需要擬造匿名身份,然后填入cookie/cookies中,在每一次訪問時帶上cookie/cookies,如果登錄用戶cookie/cookies信息在固定周期內失效,那就要找到登錄接口,重新模擬登錄,存儲cookie/cookies,再重新發起數據請求,不斷循環此步驟。

      (5)“驗證碼限制”反爬蟲策略:驗證碼是基于人能從圖片中識別出文字和數字而機器卻不能的原理產生的,是網站最常用來驗證是爬取機器人還是普通用戶在瀏覽的方式之一。但由于近幾年機器學習和人工智能技術的飛速發展,機器和人之間的差距越來越小,驗證碼技術的發展已經迭代了多次。從最初的數字字母驗證碼到中文驗證碼、再到圖像驗證碼,網絡安全技術人員不斷地與爬蟲技術作斗爭,驗證碼技術的發展史就是爬蟲技術和反爬蟲技術的博弈史。目前滑動拼圖驗證則是驗證碼的升級版,要求必須滑動拼圖到指定位置才能通過驗證進行下一步操作。爬蟲工具可建立簡單的驗證碼庫,如對圖片里的字母或者數字進行識別讀取,可使用識圖的模塊包或一些驗證碼識別第三方庫(pytesser,PIL)來破解。但復雜驗證碼,無法通過識圖識別,可以考慮使用第三方收費服務或通過機器學習讓爬蟲自動識別復雜驗證碼,識別后程序自動輸入驗證碼繼續數據爬取。

      (6)“數據加密”反爬蟲策略:有些網站把ajax請求的所有參數全部加密,根本沒辦法構造所需要的數據請求,如美國復合材料世界網站Magazine欄目,全文文件加密內嵌在flash插件中,無法爬取。有的網站反爬蟲策略更復雜,還把一些基本的功能都封裝了,全部都是在調用網站自己的接口,且接口參數也是加密的,如www.compositesworld.com。遇到這樣的網站,爬蟲可以考慮用selenium+phantomJS框架,調用瀏覽器內核,并利用phantomJS執行js模擬人為操作,觸發頁面中的js腳本。從填寫表單到點擊按鈕再到滾動頁面,不考慮具體的請求和響應過程,全程模擬人瀏覽頁面獲取數據的過程。用這套框架幾乎能繞過大多數的反爬蟲,因為它不是偽裝成瀏覽器來獲取數據,它本身就是瀏覽器。

      (7)“Youtube鏈接”反爬蟲策略:很多國外科技公司網站都以Youtube為平臺設有專門視頻頻道,介紹其最新產品、技術路線、技術原理等。針對Youtube平臺市場上有較為成熟的開源工具,爬取解決方案主要是解決代理訪問和開源工具的有機結合。先爬取采集任務入口下所有列表頁地址,根據地址調用國外代理,再利用Youtube-DL開源工具進行二次封裝爬取視頻,通過技術手段判定爬取任務是否完成。代理負責避開流量監控,開源工具負責解決Youtube加密防爬。

      2.2前端限制

      前端通常利用“CSS或HTML標簽”“自定義字體”“元素錯位”等干擾混淆關鍵數據的反爬策略,保護數據安全。

      (1)“CSS或HTML標簽”干擾反爬蟲策略:前端通過CSS或者HTML標簽控制一些關鍵信息安全,例如利用CSS來控制圖片的偏移量顯示出來,或把文字偽裝成圖片,干擾混淆關鍵數據,如https://www.defensemedianetwork.com/sections/photos-videos/等網站就是如此。針對此類反爬蟲機制沒有通用手段,需要對網頁抽樣分析,反復測試,尋找其規則,然后替換成正確的數據。例如需要先請求初始網頁得到CSS文件和相應數據的span標簽的CSS屬性,再從CSS文件中提取出svg文件和一些CSS屬性的偏移量。

      (2)“自定義字體”反爬蟲策略:某些網站在源碼上的字體不是正常字體編碼,而是自定義的一種字體,調用自定義的TTF文件來渲染網頁中的文字,真實內容通過一種對應關系最終在頁面上展示,而不在網頁源代碼中展示,通過復制或者簡單的采集無法爬取到真實的數據,例如www.sto.nato.int等網站就是這種情況。雖然反爬蟲在源代碼中隱藏了真正的字體,但最終如果要在頁面上展示還是需要導入字體包,找到字體文件,下載后使用font解析模塊包對TTF文件進行解析,解析出一個字體編碼集合,與模塊包里的文字編碼進行映射,再反推轉換對應關系即可獲得真實正確的內容。

      (3)“元素錯位”反爬蟲策略:不管是爬蟲還是自動化測試,元素定位是爬蟲最基本而且必需的一個步驟,如用BeautifulSoupfind定位,BeautifulSoupcss定位、selenium定位等。“元素錯位”反爬蟲策略是指網站維護人員利用偽裝或錯位一些關鍵信息的定位,讓爬蟲爬不到真實正確的內容。如設置一個合同數據相關網頁內容中的價格顯示,先用backgroudimage標簽渲染,再用標簽設置偏移量,展示錯誤的標簽,形成視覺上正確的價格。本次研究的國外網站暫未遇到此情況,這種反爬蟲策略在國內應用較多。通常先用上述各種方法找到樣式文件,根據backgroudpostion值和圖片數字進行映射,然后根據HTML標簽里class名稱,匹配出CSS里對應class中content的內容進行替換。

      (4)“隱藏元素”反爬蟲策略:用隱含字段阻止網絡數據采集的方式主要有兩種。第一種是表單頁面上的一個字段可以用服務器生成的隨機變量表示。如果提交時這個值不在表單處理頁面上,服務器就認為這個提交不是從原始表單頁面上提交的,而是由一個網絡機器人提交。另一種是通過隱藏偽裝元素保護重要數據,在重要數據的標簽里加入一些干擾性標簽,干擾數據的獲取。元素的屬性隱藏和顯示,主要是通過type="hidden"和style="display:none;"屬性控制,在元素屬性里面讓它隱藏,如www.enisa.europa.eu-CorporateDocuments、Facebook等就是如此。繞開第一種表單交驗的方式最佳方法為先采集表單所在頁面上生成的隨機變量,然后再提交到表單,處理頁面第二種情況則需要過濾掉干擾混淆的HTML標簽,或者只讀取有效數據的HTML標簽的內容。

      3結論與建議

      除了掌握以上各種針對服務器端和前端的不同解決方案外,在策略管理上我們還需要遵循以下4個基本原則。

      (1)遵守Robots協議網絡爬蟲技術逐漸從僅作為搜索引擎的工具,到成為互聯網公司數據競爭的標配裝備,已被廣泛地應用于各個行業,但由此引發的企業之間關于數據權利的爭議層出不窮。Robots協議全稱RobotsExclusionProtocol,也稱為爬蟲協議,該協議是網絡爬蟲行業需要廣泛遵守的協議。網站通過Robots協議告訴搜索引擎哪些頁面可以抓取、哪些頁面不能抓取。爬取數據的前提是遵守Robots協議,在合法的情況下獲得數據[3]。

      (2)采用適用的代理以保障研究爬蟲技術渠道暢通任何項目想要大規模爬取數據或者解決反爬蟲技術問題,基本需求就是選用合適的代理,沒有代理IP,爬蟲工作將寸步難行。從數據爬取規模、速度等需求方面考慮購買代理后,還需要優化方案,合理分配資源,才能更高效更快速更穩定地進行爬蟲工作。有時還需要實現必要的IP輪轉、請求限制、會話管理以及黑名單邏輯來預防代理被屏蔽。

      (3)開發專用監控系統、及時發現網站變化目標網站發生的結構性改變是爬蟲失效的主要原因,靠人工檢查采集任務發生變化與否是不現實的,如通過人工比對目標網站信息的標題、發布時間、摘要、內容、作者等,一旦采集任務超過10個,每天的工作量就會大大增加。因此,需要開發專用監控系統,這種系統會對爬取任務進行頻繁的輪巡檢查,一旦發現任何變化第一時間會發出通知。

      (4)搭建專業的反爬蟲平臺通過本項目研究發現,一般大型門戶網站都會用到反爬蟲策略,且其采用的反爬蟲策略復雜多樣而且更新迅速,一般規模化的爬取數據需要搭建一個專業的反爬蟲和爬蟲技術實驗平臺,來管理反爬蟲策略并提供相應的解決方案,節省反復開發反爬蟲策略的成本,提高爬蟲技術的快速反應能力,減少反爬蟲策略的失效時間。沒有一個好的平臺支撐,策略很難在最短的時間內生效。

      參考文獻:

      [1]潘曉英,陳柳,余慧敏,等.主題爬蟲技術研究綜述[J/OL].計算機應用研究:1-6.[2019-10-21].https://doi.org/10.19734/j.issn.1001-3695.2018.11.0790.

      [2]潘洪敏.反爬蟲探索(1)——爬蟲[EB/OL].[2018-07-25].https://mp.weixin.qq.com/s/_yjAr_7nKu-IiShBmicyxQ.

      [3]張嘉琳.由Robots協議引發的不正當競爭問題思考——以3百大戰為視角[J].法制與社會,2013(23):96-97.

      計算機論文投稿刊物:《信息化研究》(雙月刊)創刊于1975年,由江蘇省電子學會主辦。本刊以前瞻性、權威性、實用性為主特色,跟蹤電子信息技術的最新發展動態,報道最新的實用電子技術和新產品,是電子信息技術應用領域內具有權威性和影響力的綜合性技術刊物。

    轉載請注明來自發表學術論文網:http://www.zpfmc.com/dzlw/22383.html

    主站蜘蛛池模板: 很黄很污的视频在线观看| 亚洲人6666成人观看| a4yy私人影院| 91大神在线观看视频| 综合图区亚洲欧美另类图片| 欧美人与动性行为视频| 国产资源中文字幕| 亚洲欧美日韩第一页| 888亚洲欧美国产VA在线播放| 永久免费AV无码网站在线观看| 成人a毛片视频免费看| 向日葵app在线观看下载大全视频| 中文字幕乱码系列免费| 美女大量吞精在线观看456| 日韩成人免费aa在线看| 国产呻吟久久久久久久92| 久久成人国产精品| 蜜桃成熟时33d在线| 日韩人妻一区二区三区蜜桃视频| 国产成a人亚洲精v品无码| 久久国产加勒比精品无码| 抽搐一进一出gif免费视频| 桃子视频在线官网观看免费| 国产精品视频观看| 亚洲综合激情另类小说区| 一个人看的www片免费| 男人j桶进女人p无遮挡免费| 岛国a香蕉片不卡在线观看| 俄罗斯大荫蒂女人毛茸茸| 97久久精品午夜一区二区| 欧美乱妇高清无乱码免费| 国产成人高清亚洲一区91| 久久久久久久99精品免费观看 | 亚洲av无码专区国产乱码不卡| 91精品国产免费网站| 欧美一级三级在线观看| 国产精品久久久久影院嫩草| 亚洲国产精品无码成人片久久| 91普通话国产对白在线| 月夜直播在线看片www| 国产一区日韩二区欧美三区|