• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于SCRAPY框架的網絡爬蟲封鎖技術破解研究

      2020-04-27 08:45:40陳輝
      科技視界 2020年6期
      關鍵詞:爬蟲封鎖間隔

      陳輝

      摘 要

      本文闡述了網絡爬蟲及封鎖網絡爬蟲最常用的四種技術:時間間隔封鎖,Cookie封鎖,User-Agent封鎖,IP封鎖;分析了上述封鎖技術的基本原理,提出了針對上述封鎖技術的破解方法,并給出了基于Scrapy框架的破解封鎖實現(xiàn)代碼。

      關鍵詞

      Scrapy;網絡爬蟲;時間間隔封鎖;Cookie封鎖;User-Agent封鎖;IP封鎖

      中圖分類號: TP393.092;TP391.3 ? ? ?文獻標識碼: A

      DOI:10.19694/j.cnki.issn2095-2457 . 2020 . 06 . 82

      0 引言

      網絡爬蟲,即網絡機器人,是按照一定的規(guī)則,自動抓取互聯(lián)網信息的程序。在各種應用場景中,通過應用網絡爬蟲技術,網絡機器人可以在網站上自動獲取相關的專業(yè)數(shù)據,從而實現(xiàn)快速、準確、完整地獲取海量數(shù)據,為正確做出各種決策提供數(shù)據支持。有關調查研究證明,網絡上60%的訪問量都來自網絡爬蟲[1]。對于網站方,網絡爬蟲占用其過多的資源,并且其未能從爬蟲的訪問中受益,因此網站方采取多種技術措施拒絕網絡爬蟲的訪問,即封鎖網絡爬蟲。

      當前,封鎖網絡爬蟲的技術主要有[2]:時間間隔封鎖,Cookie封鎖,User-Agent封鎖,IP封鎖等。時間間隔封鎖:通過兩次網頁請求的時間間隔判斷訪問是否由網絡爬蟲引發(fā),當時間間隔<0.1秒時,可判斷為網絡爬蟲,從而拒絕其訪問;Cookie封鎖:網站可通過Cookie來確定用戶身份,當一連續(xù)網頁請求來自同一Cookie時,此時可判斷訪問由網絡爬蟲引發(fā),從而拒絕其訪問;User-Agent封鎖:User-Agent是瀏覽器的身份標識,通過User-Agent可確定瀏覽器的類型,網站可將頻繁提交請求的User-Agent作為爬蟲標志,將其列入黑名單;IP封鎖:同一IP短時間連續(xù)訪問同一站點,如訪問數(shù)量過大可以判斷由網絡爬蟲引發(fā),從而拒絕其訪問。以上為封鎖網絡爬蟲最常用的4種技術,破解上述封鎖技術是本文主要解決的問題。本文以網絡爬蟲Scrapy框架為基礎,給出以上4種封鎖技術的破解方法及實現(xiàn)代碼。

      1 破解時間間隔封鎖

      網站通過兩次網頁請求的時間間隔判斷訪問是否由網絡爬蟲引發(fā),當時間間隔<0.1秒時,可判斷為網絡爬蟲,從而拒絕其訪問;因此,可將兩次請求的時間間隔放大,從而模擬人訪問網頁的速度,達到破解時間間隔的限制。

      在Scrapy框架中,兩次網頁請求的時間間隔配置為DOWNLOAD_DELAY。因此放大時間間隔的實現(xiàn)代碼為,在settings.py中加入代碼。

      DOWN_DOWNLOAD = 5

      2 破解Cookie封鎖

      網站可通過Cookie來確定用戶身份,當在同一連續(xù)時間段中,多個請求由同一Cookie的用戶發(fā)起,則可判斷為網絡爬蟲,從而拒絕其訪問;因此,可將Cookie禁用,從而網站方無法判斷是否為同一用戶,以達到破解Cookie封鎖。

      在Scrapy框架中,啟用禁用Cookie的配置為COOKIES_ENABLED。因此放大時間間隔的實現(xiàn)代碼為,在settings.py中加入代碼。

      COOKIE_ENABLED = False

      3 破解User-Agent封鎖

      網站可通過User-Agent來確定瀏覽器的類型,當在同一連續(xù)時間段中,多個請求由同一User-Agent的瀏覽器發(fā)起,則可判斷為網絡爬蟲,從而拒絕其訪問;因此,網絡爬蟲可以準備多個User-Agent,發(fā)出請求時隨機選一個User-Agent使用,以達到破解User-Agent封鎖。

      在Scrapy框架中,為了實現(xiàn)破解User-Agent封鎖,需要在settings.py的同級目錄創(chuàng)建middlewares模塊;在模塊中,創(chuàng)建資源文件resource.py和中間件文件customUserAgent.py。resource.py用于存放多個User-Agent;customUserAgent.py用于隨機調用不同的User-Agent。

      資源文件resource.py,將多個瀏覽器的User-Agent放在列表中,具體實現(xiàn)如下。

      UserAgents=[ “Mozilla/4.0 ?(compatible; MSIE 6.0; Windows NT 5.1; SV1; Acoo Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)”,

      “Mozilla/4.0 ?(compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0)”,

      “Mozilla/4.0 ?(compatible; MSIE 7.0; AOL9.5; AOL Build 4337.35; ?Windows NT 5.1; .NET CLR 1.1.4322)”,

      “Mozilla/5.0 ?(Windows; U; ?MSIE 9.0; ?Windows NT 9.0; ?en-US)”,

      “Mozilla/5.0 ?(compatible; MSIE 9.0; Windows NT 6.0; ?Trident/4.0; ?SLCC1; .NET CLR 2.0.50727; Media Center PC 6.0)”,

      ..........

      “Opera/9.80 ?(Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52”, ]

      中間件文件customUserAgent.py,隨機使用資源文件中的User-Agent,具體實現(xiàn)如下。

      Class RandomUserAgent(UserAgentMiddleware):

      Def process_request(self,request,spider):

      Ua= random.choice(UserAgents)

      Request.headers.setdefault(‘User-Agent, ua)

      修改配置文件settings.py,將RandomUserAgent加入到DOWNLOADER_MIDDLEWARES中,具體實現(xiàn)如下。

      DOWNLOADER_MIDDLEWARES = {

      ‘myproject.middlewares.customUserAgent.RandomUserAgent:30,

      ‘scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware:None

      }

      通過以上代碼,爬蟲具備破解User-Agent封鎖的能力。

      4 破解IP封鎖

      網站可通過IP來確定用戶身份,當在同一連續(xù)時間段中,多個請求由同一IP的用戶發(fā)起,如果請求數(shù)量較少,則可判斷為網吧或大型局域網[3],允許其訪問;如果請求數(shù)量較多,則可判斷為網絡爬蟲,從而拒絕其訪問;因此,網絡爬蟲可以準備一個代理池,發(fā)出請求時隨機選一個代理服務器使用,以達到破解IP封鎖。

      在Scrapy框架中,為了實現(xiàn)破解IP封鎖,需要在settings.py的同級目錄創(chuàng)建middlewares模塊;在模塊中,創(chuàng)建資源文件resource.py和中間件文件customeProxy.py。resource.py用于存放多個網絡代理;customProxy.py用于隨機調用不同的代理服務器。

      資源文件resource.py,將裝有多個代理服務器的代理池放在列表中,具體實現(xiàn)如下。

      PROXIES = [

      ‘110.73.7.47:8123,

      ‘110.73.42.145:8123,

      ‘182.89.3.95:8123,

      ‘39.1.40.234:8080,

      ‘39.1.37.165.8080

      ]

      中間件文件customProxy.py,隨機使用資源文件中的代理服務器IP,具體實現(xiàn)如下。

      Class RandomProxy(object):

      Def process_request(self,request,spider):

      Ua= random.choice(PROXIES)

      Request.meta[‘proxy]= ‘http://%s ?%proxy

      修改配置文件settings.py,將RandomProxy加入到DOWNLOADER_MIDDLEWARES中,具體實現(xiàn)如下。

      DOWNLOADER_MIDDLEWARES = {

      ‘myproject.middlewares.customUserAgent.RandomUserAgent:30,

      ‘scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware:None,

      ‘myproject.middlewares.customProxy.RandomUserAgent:10,

      ‘scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware:20

      }

      5 結束語

      綜上所述,網絡爬蟲最常見的時間間隔封鎖,Cookie封鎖,User-Agent封鎖,IP封鎖,都有相應的攻擊方法破解;本文以網絡爬蟲Scrapy框架為基礎,給出以上4種封鎖技術的破解方法及實現(xiàn)代碼。

      參考文獻

      [1]潘曉英,陳柳,余慧敏,趙逸喆,肖康濘.主題爬蟲技術研究綜述[J/OL].計算機應用研究:1-6[2019-10-03].

      [2]劉清.網絡爬蟲針對“反爬”網站的爬取策略分析[J].信息與電腦(理論版).2019(03).

      [3]黃克敏.網站信息安全之反爬蟲策略[J].保密科學技術,2018(10):62-63.

      猜你喜歡
      爬蟲封鎖間隔
      利用網絡爬蟲技術驗證房地產灰犀牛之說
      基于Python的網絡爬蟲和反爬蟲技術研究
      間隔問題
      《在被封鎖的武漢,他運送的還有希望》新聞談
      間隔之謎
      利用爬蟲技術的Geo-Gnutel la VANET流量采集
      電子測試(2018年1期)2018-04-18 11:53:04
      大數(shù)據環(huán)境下基于python的網絡爬蟲技術
      電子制作(2017年9期)2017-04-17 03:00:46
      上樓梯的學問
      頭夾球接力
      二戰(zhàn)以來三次島嶼封鎖作戰(zhàn)的戰(zhàn)略決策及啟示
      軍事歷史(2004年3期)2004-11-22 07:28:36
      靖宇县| 蒙山县| 子洲县| 荃湾区| 苏尼特右旗| 嫩江县| 临西县| 始兴县| 潼南县| 广灵县| 颍上县| 万源市| 阳原县| 江山市| 忻城县| 电白县| 株洲市| 登封市| 乐平市| 钟祥市| 乳山市| 石狮市| 眉山市| 湟中县| 平泉县| 高碑店市| 阳城县| 桂阳县| 申扎县| 九龙坡区| 正安县| 高州市| 尼木县| 抚宁县| 元朗区| 洪泽县| 中阳县| 亚东县| 武宣县| 麦盖提县| 曲水县|