亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        設計網(wǎng)站后臺數(shù)據(jù)采集程序

        2019-07-10 00:59:56江蘇王坤
        網(wǎng)絡安全和信息化 2019年7期
        關鍵詞:憑證字符頁面

        ■ 江蘇 王坤

        編者按:在日常的工作中,需要周期性的登錄某些站點獲取任務信息、任務進展狀態(tài)、匯總數(shù)據(jù)及傳送文件至共享服務器等,登錄步驟繁瑣且密碼復雜多樣,登錄成功后需要逐個查看并保存任務,日常操作過程中工作效率不高,需要花費大量時間。本文介紹了利用Python模擬登錄網(wǎng)站后臺并采集數(shù)據(jù)的程序?qū)崿F(xiàn)原理及設計方法。

        Python是一門非常快捷的工具語言,類庫非常豐富,在解決工作及生活中各類問題都有很多現(xiàn)成的工具和例子。近年來,Python成為數(shù)據(jù)科學家們在數(shù)據(jù)分析、可視化和機器學習方面的語言,它可以帶來高效率和高生產(chǎn)力。利用Python采集數(shù)據(jù),在自動登錄環(huán)節(jié),需要對驗證碼進行識別,識別正確后,利用POST提交用戶名、密碼信息完成登錄操作。登錄成功后,系統(tǒng)會返回登錄憑證的Cookie信息,利用登錄憑證查找特定數(shù)據(jù),如數(shù)據(jù)存在更新則保存為mht文件。

        圖1 數(shù)據(jù)采集程序功能流程

        程序功能介紹

        程序功能如圖1所示,其難點在于如何實現(xiàn)自動登錄及利用登錄憑證抓取特定數(shù)據(jù)。在自動登錄過程中,由于驗證碼采用了空心化、扭曲、翻轉(zhuǎn)、干擾線等手段防止程序的自動識別,在特定頁面的訪問上,需要獲取登錄憑證。同時,頁面采取了“反盜鏈”機制,對頁面來源、頁面代理進行嚴格檢測。因此,在程序設計過程中,需要訓練樣本,打造模型,完成對驗證碼的識別并容錯控制,在采集數(shù)據(jù)過程中,需要 “偽裝”成正常用戶行為,繞過頁面檢測。

        自動登錄

        1.驗證碼識別技術(shù)

        設計驗證碼的主要目的是區(qū)分人類和計算機,用來防止網(wǎng)絡機器人的一些行為。因此許多人開始研究網(wǎng)絡機器人技術(shù),用來實現(xiàn)郵箱自動注冊、群發(fā)信息、自動灌水、自動登錄等功能。目前,各種類型網(wǎng)站系統(tǒng)都利用驗證碼阻止網(wǎng)絡機器人入侵,從而驗證碼識別技術(shù)成為研究熱點。

        通過批量下載大量驗證碼分析,驗證碼采用了空心化、扭曲、翻轉(zhuǎn)、干擾線等手段防止程序的自動識別,同時干擾線顏色與驗證碼顏色相近,無法有效去除。驗證碼如圖2所示。

        驗證碼采用4位隨機字符,字符采用數(shù)字和大寫字母組成,字符位置固定??赏ㄟ^云除噪音、灰度化、二值化后,對字符進行切割,切割后保存到對應文件夾內(nèi),如圖3所示。

        由于噪音線條和驗證碼字符的顏色相近,去噪難度較大,只能去除黑點和顏色較深的部分。在人工標注好切割后的驗證碼后,利用svm[2]、pca[3]訓練數(shù)據(jù),生成pca.model及clf.model文件,最后測試識別成功率在70%左右。

        2.登錄獲取會話令牌

        Python中cookielib[4]庫(python3中 為 http.cookiejar)為存儲和管理cookie提供客戶端支持,該模塊主要功能是提供可存儲cookie的對象,使用此模塊捕獲cookie并在后續(xù)連接請求時重新發(fā)送,還可以用來處理包含cookie數(shù)據(jù)的文件。這個模塊主要提供了這幾個對象:CookieJar,F(xiàn)ileCookieJar,MozillaCookieJar,LWPCook ieJar,此處主要用到LWPCookieJar。def login():

        loginurl1 = "https://www.fjhh.com/workspace/sys.LoginCtl.depLogin.do"

        圖2 驗證碼形態(tài)

        圖3 切割驗證碼

        loginurl2 = "https://www.fjhh.com/workspace/sys.LoginCtl.login.do"

        cj = cookielib.LWPCookieJar()

        cookie_support = urll ib2.HTTPCookieProcessor(cj)

        opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)

        urllib2.install_opener(opener)

        img_req=urllib2.Request("https://www.fjhh.com/workspace/Captcha.jpg")

        img_response=opener.open(img_req)

        try:

        out=open('captcha.jpg','wb')

        #print img_response.read()

        out.write(img_response.read())

        out.flush()out.close()

        p r i n t'------------Veri fy------------'

        # print 'Get code success'

        except IOError:

        print 'file wrong'#input code

        img_code=captcha("cap tcha.jpg")

        print img_code

        print 'your code is%s'%img_code

        for index,item in enumerate(cj):

        tmp = re.compile('Co okie (.*) for').findall(str(item))

        cookievalue = tmp[0]

        headers = {'User-Agent' : 'Mozilla/5.0(Windows NT 6.1; WOW64;rv:14.0) Gecko/20100101 Firefox/14.0.1',

        'Referer' : '******'}postData1 = {

        'userType' : 'intern al',

        'departmentname' :'fjhh',

        'password' :'password-fjhh',

        'captcha_key' : img_code

        }

        postData1 = urllib.urlencode(postData1)

        request = urllib2.Request(loginurl1,postData1, headers)

        l o g i n _response=opener.open(request)

        login_response=login_response.read()

        #如果驗證碼出錯,則

        if("Verfication code is wrong" in login_response):

        print "Fail,Login1 Again"

        login()

        圖4 程序運行效果圖

        print 'login1 success'

        運行后如圖4所示。

        特定內(nèi)容的抓取

        為了快速準確匹配到特定內(nèi)容,需要用到正則表達式[5]來實現(xiàn)此功能。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本。在Python中利用re模塊來實現(xiàn)正則匹配。在匹配特定內(nèi)容前,在header頭的User-Agent參數(shù)填寫IE客戶端參數(shù),“偽裝”成正常用戶的訪問。

        def saveHttpPage(url,cookie,taskID,type_ccc):

        url = "https://www.fjhh.com"+url

        request = urllib2.Request(url)

        request.add_header('User-Agent', 'Mozilla/4.0(compatible; MSIE 8.0;Windows NT 6.1; WOW64;Trident/4.0; SLCC2;.NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C;.NET4.0E)')

        request.add_header('Referer','https://www.fjhh.com/workspace/tests.LabSubTasksCtl.listLabTasks.do')

        request.add_header('Language', 'zh-CN,zh;q=0.8')

        request.add_header('Cookie', cookie)

        response = urllib2.urlopen(request)

        response_body =response.read()

        people_weituo= re.compile('').findall(response_body)

        filename =re.compile('appNumber"value="(.*)">').findall(response_body)

        applyID = filename[0].decode('utf8')

        applyTime_tmp= re.compile('20(.*)<').findall(response_body)

        applyTime ="20"+apply Time_tmp[0].decode('utf 8')

        productSortCode_tmp =re.compile('productSortC

        ode" value="(.*)">').findall(response_body)

        productSortCode=productSortCode_tmp[0].decode('utf8')

        存儲及傳送技術(shù)

        獲得特定數(shù)據(jù)后,先保存為html文件,再調(diào)用pywin32庫中的win32com.client將html轉(zhuǎn)換為mht格式,方便IE瀏覽器用戶的訪問。

        1.將html文件轉(zhuǎn)化為mht格式

        def html2mht(filenam e):

        filename2 = os.path.join(os.p

        ath.abspath('.'),file name)

        try:

        iMsg = Dispatch('CDO.Message')

        iMsg.CreateMHTMLBody('file://

        /' + filename2)

        iMsg.GetStream().SaveToFile(os.path.splitext(filename2)[0]+'.mht')

        #mht文件生成后,刪除html文件,此處需優(yōu)化os.remove(filename2)

        except Exception,e:

        print filename+"is error"

        2.利用Samba傳輸文件

        保存好文件后,利用Samba協(xié)議將文件傳輸至文件共享服務器。

        conn = SMBConnection(userID, password, client_machine_name, server_name, domain=domain_name, use_ntlm_v2=True,is_direct_tcp=True)

        conn.connect(server_ip, 445)

        shares = conn.listShares()

        remotefilelist = []

        for share in shares:

        if not share.isSpecial and share.name not in ['NETLOGON','SYSVOL']:

        sharedfiles = conn.listPath(share.name,'/')

        for sharedfile in sharedfiles:

        #

        print(sharedfile.filename)

        remotefilelist.append(sharedfile.filename)

        num = 0

        def copy2Remote(file name,):

        try:

        file = open(filename,'rb')

        c o n n .storeFile('share',filename, file) #share mean share name

        file.

        close()

        global num

        num = num + 1

        print str(num) + " "+ filename + " upload"

        except:

        pass

        def getFileName(path):

        f_list = os.listdir(p ath)

        for i in f_list:

        # os.path.splitext():分離文件名與擴展名

        if os.path.splitext(i)[1] == '.mht':

        if i.decode("gbk") in remotefilelist:

        print "ERROR! %s already exists."%i

        else:

        copy2Remote(i.decode("g bk"))

        getFileName(".")

        print str(num) + "files had upload!"

        conn.close()

        猜你喜歡
        憑證字符頁面
        大狗熊在睡覺
        帶您了解醫(yī)保電子憑證
        刷新生活的頁面
        尋找更強的字符映射管理器
        已完成匯交并出具匯交憑證的項目統(tǒng)計
        字符代表幾
        一種USB接口字符液晶控制器設計
        電子制作(2019年19期)2019-11-23 08:41:50
        消失的殖民村莊和神秘字符
        (2018年)《中國司法》
        司法所工作(2017年8期)2017-05-17 02:54:23
        (2018年)《司法所工作》
        司法所工作(2017年8期)2017-05-17 02:54:22
        丁香花在线影院观看在线播放| 亚洲成人一区二区三区不卡 | 亚洲国产女性内射第一区二区| 97碰碰碰人妻无码视频| 国产成人综合久久精品免费| 久久99久久99精品免观看女同| 精品国产a毛片久久久av| 中国孕妇变态孕交xxxx| 欧美日韩中文国产一区发布| 亚洲精品综合第一国产综合| 手机在线观看亚洲av| av网站在线观看入口| 亚洲av日韩综合一区在线观看| 中文字幕无码专区一VA亚洲V专| 最新日本免费一区二区三区 | 色综合久久精品亚洲国产| 18无码粉嫩小泬无套在线观看| 久久综合一本中文字幕| 精品露脸熟女区一粉嫩av| 国产农村妇女精品一二区 | 欧美—iGAO视频网| 国产女优一区在线观看| 无码人妻人妻经典| 国产在线一区观看| 日韩av一区二区三区在线观看| 巨爆中文字幕巨爆区爆乳| 久久九九国产精品怡红院| 一区二区三区放荡人妻| av国产自拍在线观看| 在教室伦流澡到高潮hgl动漫| 日韩一线无码av毛片免费| 强d乱码中文字幕熟女1000部| 日本区一区二区三视频| 精品成人av一区二区三区| 日批视频免费在线观看| 国产91九色免费视频| 亚洲欧美国产精品久久| 双腿张开被9个黑人调教影片| 大量老肥熟女老女人自拍| 成人免费自拍视频在线观看| 中文字幕av一区中文字幕天堂|