国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

自動(dòng)采集網(wǎng)站數(shù)據(jù)與反自動(dòng)采集網(wǎng)站數(shù)據(jù)方法的研究

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

陳國耀

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

關(guān)鍵詞:自動(dòng)采集;網(wǎng)站數(shù)據(jù);反自動(dòng)采集;研究

1 研究背景及意義

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

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

2 自動(dòng)采集網(wǎng)站數(shù)據(jù)的方法

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

具體又分為兩類:

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

URL url = new URL(websiteAddress);

// websiteAddress為請(qǐng)求網(wǎng)址,為待查詢數(shù)據(jù)的查詢結(jié)果頁面

URLConnection connection = url.openConnection();

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

connection.setDoOutput(true);

connection.setDoInput(true);

OutputStreamWriter out = new

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

//根據(jù)網(wǎng)站服務(wù)器端操作系統(tǒng)編碼設(shè)置相應(yīng)的請(qǐng)求參數(shù)編碼

out.write(otherRequestParams);

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

out.flush();

out.close();

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

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ù)或正則表達(dá)式對(duì)從服務(wù)器端獲取的字符串組合進(jìn)行解析,從中提取所需數(shù)據(jù)。

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

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

//通過模擬鍵盤按鍵在地址欄中輸入請(qǐng)求網(wǎng)址

Robot robot = new Robot();

robot.keyPress(KeyEvent.鍵值);

robot.keyRelease(KeyEvent.鍵值);

//通過復(fù)制、粘貼的方式獲取從網(wǎng)站服務(wù)器端返回的html頁面

robot.keyPress(KeyEvent.VK_CONTROL);

robot.keyPress(KeyEvent.VK_C);

robot.keyRelease(KeyEvent.VK_C);

robot.keyRelease(KeyEvent.VK_CONTROL);

//得到剪貼板中的內(nèi)容

Transferable contents=sysc.getContents(this);

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

}

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

3 反自動(dòng)采集網(wǎng)站數(shù)據(jù)的方法

針對(duì)上述基于windows平臺(tái)下的JAVA編程語言實(shí)現(xiàn)的自動(dòng)采集網(wǎng)站數(shù)據(jù)的方法,我們可以采取以下方法進(jìn)行應(yīng)對(duì),以防止網(wǎng)站數(shù)據(jù)被數(shù)據(jù)采集軟件自動(dòng)采集:

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

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

猜你喜歡
研究
FMS與YBT相關(guān)性的實(shí)證研究
2020年國內(nèi)翻譯研究述評(píng)
遼代千人邑研究述論
視錯(cuò)覺在平面設(shè)計(jì)中的應(yīng)用與研究
關(guān)于遼朝“一國兩制”研究的回顧與思考
EMA伺服控制系統(tǒng)研究
基于聲、光、磁、觸摸多功能控制的研究
新版C-NCAP側(cè)面碰撞假人損傷研究
關(guān)于反傾銷會(huì)計(jì)研究的思考
焊接膜層脫落的攻關(guān)研究
蓬安县| 万全县| 曲阳县| 济南市| 莱西市| 东海县| 天全县| 丰台区| 如皋市| 炎陵县| 靖宇县| 宁乡县| 华宁县| 同心县| 五常市| 淄博市| 太仓市| 云霄县| 望奎县| 都兰县| 夹江县| 鄂托克前旗| 上杭县| 香港| 栾川县| 镶黄旗| 宜都市| 白河县| 吉安市| 汕头市| 江孜县| 兴安盟| 石台县| 江永县| 盐源县| 安西县| 邯郸县| 大安市| 都兰县| 荥阳市| 运城市|