• 
    

    
    

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

      ?

      自動采集網站數(shù)據與反自動采集網站數(shù)據方法的研究

      2015-04-20 21:25:06陳國耀
      科技創(chuàng)新與應用 2015年11期
      關鍵詞:研究

      陳國耀

      摘 要:網站安全問題一直都是網絡安全領域的技術人員研究的重點問題之一,其不僅包含網站受非法攻擊、入侵、服務器端代碼被篡改、被注入木馬等問題,而且包含被特定自動采集數(shù)據軟件自動采集網站數(shù)據等問題。若自動采集網站數(shù)據軟件長時間運行,必然對網站服務器造成巨大壓力,甚至直接導致網站服務器的崩潰。文章基于windows平臺下的JAVA編程語言如何實現(xiàn)自動采集網站數(shù)據以及如何反自動采集網站數(shù)據進行深入研究。

      關鍵詞:自動采集;網站數(shù)據;反自動采集;研究

      1 研究背景及意義

      現(xiàn)代社會是一個信息社會,工作、生活越來越離不開信息的支撐,信息技術和信息產業(yè)在經濟、社會發(fā)展中的作用日益增強,并逐漸發(fā)揮著主導作用,成為比物質、能源更為重要的資源。數(shù)據已經成為一種商品進行交易,對數(shù)據進行再加工、提取、去噪、排序、整合后得出的數(shù)據往往具有非常高的商業(yè)價值,因為這些經過處理的數(shù)據能夠更有效地指導商業(yè)決策,以使得公司、企業(yè)能夠在競爭激烈的商業(yè)環(huán)境中處于不敗之地。比如要獲取某市年溫度、降雨量等信息,則從該市氣象局網站上獲取的數(shù)據較為權威、可信;要獲取某市的高新技術企業(yè)信息,則從該市負責注冊高新技術企業(yè)的政府網站獲取的數(shù)據較為準確;即準確的數(shù)據往往來自官方網站、權威性網站,而官方數(shù)據、權威數(shù)據的獲取往往具有一定的困難或限制,比如只能按條進行順序查詢,不能進行批量查詢,如果采用人工復制、采集的方式獲取完整的、大批量的數(shù)據,時間、開銷等各個方面均不允許,于是采用具有自動采集數(shù)據功能的軟件采集網站數(shù)據往往成為人們獲取官方、具有權威性、完整、大批量數(shù)據常用的手段。

      目前比較流行的編程語言c++、c#、java、python等實現(xiàn)自動采集網站數(shù)據的原理類似,只是語法或所使用的組件不同,文章對基于windows平臺下的java編程語言實現(xiàn)自動采集網站數(shù)據以及反自動采集網站數(shù)據的方法進行探討。

      2 自動采集網站數(shù)據的方法

      通常由編程語言實現(xiàn)的自動采集網站數(shù)據均要通過模擬客戶端向服務器發(fā)送請求的方式,獲取服務器返回的數(shù)據,從中提取所需數(shù)據。

      具體又分為兩類:

      (1)模擬客戶端向網站服務器發(fā)送請求,直接獲取服務器返回的html格式的數(shù)據,并對該數(shù)據進行解析從中提取所需數(shù)據。采用java語言實現(xiàn)的核心代碼如下:

      URL url = new URL(websiteAddress);

      // websiteAddress為請求網址,為待查詢數(shù)據的查詢結果頁面

      URLConnection connection = url.openConnection();

      //創(chuàng)建與網站服務器的連接

      connection.setDoOutput(true);

      connection.setDoInput(true);

      OutputStreamWriter out = new

      OutputStreamWriter(connection.getOutputStream(), "GBK");

      //根據網站服務器端操作系統(tǒng)編碼設置相應的請求參數(shù)編碼

      out.write(otherRequestParams);

      //otherRequestParams為請求附帶的參數(shù)

      out.flush();

      out.close();

      //以下代碼用于接收、讀取服務器端返回的數(shù)據

      InputStream l_urlStream=null;

      l_urlStream = connection.getInputStream();

      BufferedReader l_reader = new BufferedReader(new InputStreamReader(l_urlStream));

      while ((sCurrentLine = l_reader.readLine()) != null) {

      sTotalString += sCurrentLine;

      }

      然后采用Java提供的subString()函數(shù)或正則表達式對從服務器端獲取的字符串組合進行解析,從中提取所需數(shù)據。

      (2)當網站服務器端對返回值進行一定的加密設置,或者通過其它手段使得客戶端獲取的響應內容無效等,即通過正常的請求、響應機制獲取不到服務器端后臺返回的數(shù)據。而通過在客戶端的瀏覽器中輸入請求網址,能夠正常獲取服務器端響應的html文件;即網站服務器返回數(shù)據并將其裝配成html文件返回到客戶端,在客戶端的瀏覽器中能夠讀取到該html文件,但是我們的后臺應用程序卻獲取不到服務器端返回的數(shù)據。此時可采用JAVA提供的Robot類進行相應的操作以獲取數(shù)據。

      關于Robot類:此類用于為測試自動化、自運行演示程序和其他需要控制鼠標和鍵盤的應用程序生成本機系統(tǒng)輸入事件。Robot的主要目的是便于JAVA平臺實現(xiàn)自動測試。該類提供的模擬鍵盤、鼠標功能使得我們不僅能夠利用其開發(fā)自動測試應用程序,而且能夠開發(fā)其它無需手動控制、自動執(zhí)行的“機器人”應用程序。采用java語言的Robot類實現(xiàn)的自動采集網站數(shù)據的核心代碼如下:

      //通過模擬鍵盤按鍵在地址欄中輸入請求網址

      Robot robot = new Robot();

      robot.keyPress(KeyEvent.鍵值);

      robot.keyRelease(KeyEvent.鍵值);

      //通過復制、粘貼的方式獲取從網站服務器端返回的html頁面

      robot.keyPress(KeyEvent.VK_CONTROL);

      robot.keyPress(KeyEvent.VK_C);

      robot.keyRelease(KeyEvent.VK_C);

      robot.keyRelease(KeyEvent.VK_CONTROL);

      //得到剪貼板中的內容

      Transferable contents=sysc.getContents(this);

      stringEachPageGet = (String) contents.getTransferData(DataFlavor.stringFlavor);

      }

      然后利用java語言的subString()函數(shù)或正則表達式對獲取的字符串進行解析,從中提取所需信息。

      3 反自動采集網站數(shù)據的方法

      針對上述基于windows平臺下的JAVA編程語言實現(xiàn)的自動采集網站數(shù)據的方法,我們可以采取以下方法進行應對,以防止網站數(shù)據被數(shù)據采集軟件自動采集:

      (1)定期或隨機更改返回客戶端瀏覽器html文件的格式。目前網站服務器與客戶端間的通信基本上都是基于http協(xié)議,該協(xié)議是一個請求-響應式的協(xié)議,服務端返回的內容多為html文件。數(shù)據采集軟件依據html文件內容的格式對從服務端返回的內容進行解析,隨機改變返回html文件的格式就可以阻斷解析的過程,從而阻斷數(shù)據采集的過程。

      (2)針對不同的瀏覽器,通過在服務器端返回的html頁面中加入防復制、禁止保存網頁等功能的JS代碼,可以阻斷自動采集網站數(shù)據軟件的采集過程。

      猜你喜歡
      研究
      FMS與YBT相關性的實證研究
      2020年國內翻譯研究述評
      遼代千人邑研究述論
      視錯覺在平面設計中的應用與研究
      科技傳播(2019年22期)2020-01-14 03:06:54
      關于遼朝“一國兩制”研究的回顧與思考
      EMA伺服控制系統(tǒng)研究
      基于聲、光、磁、觸摸多功能控制的研究
      電子制作(2018年11期)2018-08-04 03:26:04
      新版C-NCAP側面碰撞假人損傷研究
      關于反傾銷會計研究的思考
      焊接膜層脫落的攻關研究
      電子制作(2017年23期)2017-02-02 07:17:19
      宜兰县| 容城县| 登封市| 天台县| 沛县| 汽车| 钦州市| 鲁甸县| 伊吾县| 隆昌县| 普宁市| 泗水县| 阿荣旗| 八宿县| 疏附县| 芦溪县| 正蓝旗| 余姚市| 新乡市| 苗栗市| 万年县| 南岸区| 余江县| 镇坪县| 色达县| 普宁市| 盖州市| 九龙县| 龙州县| 神木县| 大荔县| 南京市| 马龙县| 突泉县| 沁源县| 吕梁市| 佳木斯市| 灌阳县| 博乐市| 玉山县| 平远县|