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

        ?

        Python環(huán)境下利用Selenium與JavaScript逆向技術(shù)爬蟲研究

        2022-06-11 00:24:54時(shí)春波李衛(wèi)東秦丹陽張海嘯吳崢嶸
        河南科技 2022年10期
        關(guān)鍵詞:爬蟲瀏覽器逆向

        時(shí)春波 李衛(wèi)東 秦丹陽 張海嘯 吳崢嶸

        摘 要:針對使用調(diào)試檢測、數(shù)據(jù)加密等技術(shù)的網(wǎng)站,解析工具Beautiful Soup難以對網(wǎng)頁進(jìn)行解析爬取數(shù)據(jù)。本研究基于Python環(huán)境,結(jié)合JavaScript逆向技術(shù)、Beautiful Soup網(wǎng)頁解析等網(wǎng)絡(luò)爬蟲技術(shù),利用中間人攻擊工具M(jìn)itmproxy(man-in-the-middle attack proxy)在本地指定設(shè)備端口開啟本地代理,攔截并修改網(wǎng)頁響應(yīng)。同時(shí),運(yùn)用Web自動化工具Selenium來啟動瀏覽器,設(shè)置使用代理服務(wù)器,連接到本地Mitmproxy代理,訪問被修改的響應(yīng)網(wǎng)頁進(jìn)行網(wǎng)頁調(diào)試和解析,并對加密數(shù)據(jù)進(jìn)行還原,解決網(wǎng)絡(luò)爬蟲中調(diào)試檢測和數(shù)據(jù)加密難題,從而爬取數(shù)據(jù)。

        關(guān)鍵詞:網(wǎng)絡(luò)爬蟲;JavaScript逆向技術(shù);網(wǎng)絡(luò)代理;Selenium

        中圖分類號:TP393.092 ? ? 文獻(xiàn)標(biāo)志碼:A ? ? 文章編號:1003-5168(2022)10-0020-04

        DOI:10.19968/j.cnki.hnkj.1003-5168.2022.10.004

        Research on Crawler Using Selenium and JavaScript Reverse

        Technology in Python Environment

        SHI Chunbo? ? LI Weidong? ? QIN Danyang? ? ZHANG Haixiao? ? WU Zhengrong

        (College of Information Science and Engineering, Henan University of Technology, Zhengzhou 450001, China)

        Abstract:For websites that use debugging detection, data encryption and other technologies,the parsing tool beautiful soup is difficult to parse web pages and crawl data Based on the python environment, combined with JavaScript reverse technology,beautiful soup web page parsing and other web crawler technologies,this study uses the man in the middle attack proxy (mitmproxy) to open the local proxy at the local designated device port,intercept and modify the web page response,and uses the web automation tool selenium to start the browser,set up the proxy server and connect to the local mitmproxy proxy.Visit the modified middle note to debug and analyze the web page,restore the encrypted data,solve the problem of debugging and data encryption in web crawler,and then crawl data.

        Keywords:web crawler; JavaScript reverse technology;network agent;Selenium

        0 引言

        隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,萬維網(wǎng)成為大量信息的載體,如何有效提取并利用這些海量信息成為一個(gè)巨大挑戰(zhàn)。爬蟲技術(shù)就是在這樣背景下誕生的,其不僅在搜索引擎領(lǐng)域得到廣泛應(yīng)用,在大數(shù)據(jù)分析、商業(yè)等領(lǐng)域也得到了大規(guī)模應(yīng)用。隨著網(wǎng)絡(luò)反爬蟲技術(shù)[1]的發(fā)展,爬取數(shù)據(jù)也越來越困難。本研究針對網(wǎng)絡(luò)爬蟲中調(diào)試檢測和數(shù)據(jù)加密等反爬蟲技術(shù),使用Python爬蟲技術(shù),結(jié)合Selenium和JavaScript逆向技術(shù),加入Mitmproxy進(jìn)行網(wǎng)頁響應(yīng)攔截和修改,解決網(wǎng)絡(luò)爬蟲中調(diào)試檢測和數(shù)據(jù)加密難題,從而爬取數(shù)據(jù)。

        1 相關(guān)網(wǎng)絡(luò)爬蟲技術(shù)

        1.1 Python爬蟲技術(shù)

        網(wǎng)絡(luò)爬蟲[2]又稱網(wǎng)絡(luò)蜘蛛、網(wǎng)絡(luò)機(jī)器人,是一種按照一定規(guī)則自動瀏覽、檢索網(wǎng)頁信息的程序或腳本。網(wǎng)絡(luò)爬蟲能夠自動請求網(wǎng)頁,并將所需要的數(shù)據(jù)抓取出來。通過對抓取到的數(shù)據(jù)進(jìn)行處理,從而提取出有價(jià)值的信息。

        網(wǎng)絡(luò)爬蟲可分為三大類,分別是通用網(wǎng)絡(luò)爬蟲、聚焦網(wǎng)絡(luò)爬蟲和增量式網(wǎng)絡(luò)爬蟲。通用網(wǎng)絡(luò)爬蟲是搜索引擎的重要組成部分,須遵守Robots協(xié)議。在應(yīng)用過程中,通用網(wǎng)絡(luò)爬蟲一般會從初始UR開始,獲取初始頁面的代碼,同時(shí)會從代碼提取所需的URL,并將其放入列表中,直到其滿足停止條件;增量式網(wǎng)絡(luò)爬蟲是指對已下載網(wǎng)頁采取增量式更新方式,只爬取新產(chǎn)生或發(fā)生變化的網(wǎng)頁,能夠在一定程度上保證所爬取數(shù)據(jù)的時(shí)效性;聚焦網(wǎng)絡(luò)爬蟲是面向特定需求的一種網(wǎng)絡(luò)爬蟲程序,與通用網(wǎng)絡(luò)爬蟲技術(shù)相比,其在網(wǎng)頁抓取時(shí)會對網(wǎng)頁內(nèi)容進(jìn)行篩選和處理,盡量保證僅抓取需要的相關(guān)信息。但在應(yīng)用過程中,其程序的編寫更加復(fù)雜。聚焦網(wǎng)絡(luò)爬蟲極大地節(jié)省了硬件和網(wǎng)絡(luò)資源,能夠在海量數(shù)據(jù)中快速抓取有效數(shù)據(jù),并從有效數(shù)據(jù)中獲取用戶需要的信息,且能夠篩選和處理與主題無關(guān)的信息。由于保存的頁面數(shù)量少且更新速度快,其能夠更好地滿足特定人群對特定領(lǐng)域信息的需求。

        Python是一種面向?qū)ο蟆⒔忉屝?、弱類型的腳本語言,也是一種功能強(qiáng)大且完善的通用型語言。相比于其他編程語言(如Java、C、C++等),Python的代碼非常簡單,提供了許多網(wǎng)絡(luò)爬蟲模塊和庫。這些類庫包括文件I/O、GUI、網(wǎng)絡(luò)編程、數(shù)據(jù)庫訪問、文本操作等絕大部分應(yīng)用場景,具有很好的擴(kuò)展性。隨著大數(shù)據(jù)、人工智能技術(shù)的流行,Python的應(yīng)用領(lǐng)域?qū)⒏訌V泛。

        1.2 Mitmproxy代理工具

        Mitmproxy是一組工具,可為HTTP/1、HTTP/2和WebSocket提供交互式的、具有SSL/TLS功能的攔截代理。其功能包括:能夠完成攔截并動態(tài)修改HTTP、HTTPS的請求和響應(yīng);保存完整的HTTP對話,并進(jìn)行轉(zhuǎn)發(fā)和分析;轉(zhuǎn)發(fā)HTTP會話客戶端;轉(zhuǎn)發(fā)以前錄制的服務(wù)器的HTTP響應(yīng);反向代理模式將流量轉(zhuǎn)發(fā)到指定服務(wù)器;使用Python對HTTP流量進(jìn)行腳本化更改等功能。

        1.3 Selenium測試框架

        Selenium[3]是一個(gè)開源的、可移植的Web測試框架,支持多種操作系統(tǒng)、瀏覽器和編程語言,還支持并行測試執(zhí)行,在減少時(shí)間的同時(shí)提高了測試效率。Selenium Web驅(qū)動程序不需要安裝服務(wù)器,通過測試腳本直接與瀏覽器進(jìn)行交互。網(wǎng)絡(luò)爬蟲中使用Selenium驅(qū)動程序是為了解決Requests無法執(zhí)行JavaScript代碼的問題[4]。通過驅(qū)動瀏覽器自動執(zhí)行自定義腳本,模擬人工使用瀏覽器的操作[5],如跳轉(zhuǎn)、輸入、點(diǎn)擊、下拉等,進(jìn)而獲取網(wǎng)頁渲染后的結(jié)果。

        1.4 JavaScript逆向技術(shù)

        當(dāng)獲取網(wǎng)頁的HTML代碼后,部分網(wǎng)站運(yùn)用調(diào)試檢測和數(shù)據(jù)加密等反爬蟲技術(shù),這些技術(shù)會阻礙下一步的網(wǎng)頁解析和運(yùn)用,此時(shí)需要運(yùn)用JavaScript逆向技術(shù)[6]來解析JavaScript代碼,解決網(wǎng)絡(luò)數(shù)據(jù)抓取時(shí)所遇到的調(diào)試檢測和數(shù)據(jù)加密等問題。

        2 相關(guān)網(wǎng)絡(luò)反爬蟲技術(shù)

        在相關(guān)網(wǎng)絡(luò)爬蟲技術(shù)發(fā)展的同時(shí),反爬蟲技術(shù)[7]也在不斷發(fā)展,目前反爬蟲技術(shù)主要使用以下基本策略。

        2.1 User-Agent控制請求

        User-Agent中可以攜帶用戶設(shè)備信息,包括瀏覽器、操作系統(tǒng)、CPU等信息。通過在服務(wù)器中設(shè)置user-agent白名單,確保只有符合條件的user-agent才能訪問服務(wù)器。而網(wǎng)絡(luò)爬蟲技術(shù)可以通過偽造頭部信息來訪問服務(wù)器。

        2.2 IP限制

        通過設(shè)置服務(wù)器訪問閾值,將短時(shí)間內(nèi)訪問量超過閾值的IP地址加入黑名單中,禁止其訪問服務(wù)器,從而達(dá)到反爬蟲的目的。網(wǎng)絡(luò)爬蟲能夠利用IP代理來更換IP,從而能夠繼續(xù)訪問服務(wù)器。

        2.3 Session訪問限制

        Session是用戶請求服務(wù)器的憑證,在服務(wù)器端根據(jù)短時(shí)間內(nèi)的訪問量來判斷是否為網(wǎng)絡(luò)爬蟲,將疑似網(wǎng)絡(luò)爬蟲的Session禁用。通過網(wǎng)絡(luò)爬蟲技術(shù)可以注冊多個(gè)賬號,使用多個(gè)Session輪流對服務(wù)器進(jìn)行訪問,避免Session被禁用。

        2.4 驗(yàn)證碼

        在用戶登錄或訪問某些重要信息時(shí),可以使用圖片驗(yàn)證碼、短信驗(yàn)證碼、數(shù)值計(jì)算驗(yàn)證碼、滑動驗(yàn)證碼、圖案標(biāo)記驗(yàn)證碼等檢測用戶的狀態(tài)。該方法能夠有效阻擋網(wǎng)絡(luò)爬蟲,區(qū)分程序和正常用戶,使正常用戶可以正常訪問服務(wù)器,而網(wǎng)絡(luò)爬蟲因無法識別驗(yàn)證碼,使其不能訪問服務(wù)器。

        2.5 動態(tài)加載數(shù)據(jù)

        通過JavaScript技術(shù)動態(tài)加載數(shù)據(jù),網(wǎng)絡(luò)爬蟲在靜態(tài)頁面中無法獲得數(shù)據(jù)。網(wǎng)絡(luò)爬蟲技術(shù)能夠通過抓包的形式獲取URL,模擬請求。

        2.6 數(shù)據(jù)加密

        在前端請求服務(wù)器前,將相關(guān)參數(shù)進(jìn)行加密,使用加密后的參數(shù)請求服務(wù)器,在服務(wù)器端進(jìn)行相關(guān)解碼操作,而網(wǎng)絡(luò)爬蟲無法進(jìn)行模擬請求服務(wù)器。由于加密算法是寫在JavaScript代碼中,網(wǎng)絡(luò)爬蟲能夠找到并破解。

        3 Python環(huán)境下Selenium與JavaScript逆向爬蟲技術(shù)的應(yīng)用

        使用Mitmproxy開啟本地代理,進(jìn)行網(wǎng)頁響應(yīng)攔截。首先,創(chuàng)建addons.py文件。使用mitmweb-s addons.py命令啟動Mitmproxy并加載自定義腳本addons.py,修改網(wǎng)頁響應(yīng),繞過網(wǎng)站檢測(見圖1)。定義腳本文件代碼如下所示。

        def response(slef,flow:mitmproxy.http.HTTPFlo-w):

        if 'www.aqistudy.cn' in flow.request.url:

        flow.response.text=flow.response.text.replace("window.navigator.webdriver", "false")

        flow.response.text=flow.response.text.replace("debugger","")

        其次,設(shè)置Firefox瀏覽器驅(qū)動器的環(huán)境:Firefox_options=webdriver.FirefoxOptions()。設(shè)置瀏覽器Firefoxd代理方式為使用本地代理,其代碼如下所示。

        proxy_ip=“本地ip”

        # 設(shè)置瀏覽器代理端口

        ff_profile.set_preference("network.proxy.type",1)

        ff_profile.set_preference("network.proxy.http",p-roxy_ip)

        ff_profile.set_preference("network.proxy.http_p-ort",int(8080))

        ff_profile.set_preference("network.proxy.ssl",p-roxy_ip)

        ff_profile.set_preference("network.proxy.ssl_po-rt",int(8080))

        ff_profile.set_preference("network.proxy.ftp",pr-oxy_ip)

        ff_profile.set_preference("network.proxy.ftp_p-ort",int(8080))

        最后,創(chuàng)建Firefox瀏覽器驅(qū)動器啟動Firefox[8](見圖2)。相關(guān)代碼如下所示。

        browser=webdriver.Firefox(options=ff_profile)

        4 以某環(huán)境質(zhì)量監(jiān)測網(wǎng)站進(jìn)行技術(shù)方法測試

        針對某環(huán)境質(zhì)量監(jiān)測網(wǎng)站,首先使用逆向爬蟲技術(shù)解決該網(wǎng)站爬蟲調(diào)試中檢測和數(shù)據(jù)加密難題,然后使用網(wǎng)站解析工具BeautifulSoup對網(wǎng)頁結(jié)構(gòu)和屬性等進(jìn)行網(wǎng)頁解析[9]。圖3為該網(wǎng)站空氣質(zhì)量歷史數(shù)據(jù),根據(jù)其詳細(xì)信息頁面的<table>標(biāo)簽,通過select()獲取<table>整個(gè)標(biāo)簽內(nèi)容,調(diào)用函數(shù)Workbook()抽取所需要數(shù)據(jù)保存至Excel表[10-11](見表1)。

        5 結(jié)語

        本研究以某空氣質(zhì)量監(jiān)測反爬蟲分析平臺為例,基于Python環(huán)境,利用Selenium、JavaScript逆向爬取數(shù)據(jù)技術(shù),與中間人攻擊工具M(jìn)itmproxy開啟本地代理相結(jié)合,解決了網(wǎng)頁無法進(jìn)行調(diào)試的問題,從而突破網(wǎng)站的反爬蟲技術(shù)爬取到相關(guān)空氣質(zhì)量監(jiān)測數(shù)據(jù)。該方法能夠有針對性地分析并找到目標(biāo)網(wǎng)站反爬蟲技術(shù)漏洞進(jìn)行數(shù)據(jù)爬取,從而保證網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取的順利進(jìn)行。

        參考文獻(xiàn):

        [1] 周毅,寧亮,王鷗,等.基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究[J].現(xiàn)代信息科技,2021(21):149-151.

        [2] 張俊威,肖瀟.基于Python爬蟲技術(shù)的網(wǎng)頁數(shù)據(jù)抓取與分析研究[J].信息系統(tǒng)工程,2021(2):155-156.

        [3] 忽愛平,范伊紅,李陽,等.基于Selenium的網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與實(shí)現(xiàn)[J].無線互聯(lián)科技,2021(17):39-40.

        [4] 李晨昊.基于BeautifulSoup+requests和selenium爬蟲網(wǎng)頁自動化處理的實(shí)現(xiàn)和性能對比[J].現(xiàn)代信息科技,2021(16):10-12,18.

        [5] 許景賢,林錦程,程雨萌.Selenium框架的反爬蟲程序設(shè)計(jì)與實(shí)現(xiàn)[J].福建電腦,2021(1):26-29.

        [6] 王朝陽,范伊紅,李夢丹,等.Python環(huán)境下的JavaScript逆向技術(shù)分析[J].無線互聯(lián)科技,2021(17):97-98.

        [7] 張寶剛.基于Python的網(wǎng)絡(luò)爬蟲與反爬蟲技術(shù)的研究[J].電子世界,2021(4):86-87.

        [8] 沈熠輝.以Selenium為核心的亞馬遜爬蟲與可視化[J].福建電腦,2021(12):43-46.

        [9] 樊濤,趙征,劉敏娟.基于Selenium的網(wǎng)絡(luò)爬蟲分析與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2019(9):155-156,170.

        [10] 李曉宇,徐勇,汪倩,等.基于Selenium的淘寶商品評論爬蟲算法[J].信息與電腦(理論版),2020(12):62-64.

        [11] 龍學(xué)磊,田萌,徐英,等.網(wǎng)絡(luò)爬蟲在科技文獻(xiàn)檢索中的應(yīng)用[J].現(xiàn)代信息科技,2021(24):150-152.

        猜你喜歡
        爬蟲瀏覽器逆向
        利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說
        逆向而行
        基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
        反瀏覽器指紋追蹤
        電子制作(2019年10期)2019-06-17 11:45:14
        利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
        電子測試(2018年1期)2018-04-18 11:53:04
        逆向解答
        大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
        電子制作(2017年9期)2017-04-17 03:00:46
        環(huán)球?yàn)g覽器
        再見,那些年我們嘲笑過的IE瀏覽器
        逆向工程技術(shù)及應(yīng)用
        人妻丰满av∨中文久久不卡| 中文区中文字幕免费看 | 久久久久无码精品国产app| 亚洲另类激情综合偷自拍图| 国产 无码 日韩| 精品女厕偷拍视频一区二区| …日韩人妻无码精品一专区| 亚洲男人av香蕉爽爽爽爽| 国产一区二区三区最新视频| 国产在线一区二区av| 国产h视频在线观看| 综合网自拍| 一个人的视频免费播放在线观看| 国产精品一区二区黑丝| 女邻居的大乳中文字幕| 久久久亚洲欧洲日产国产成人无码 | 天码av无码一区二区三区四区| 中文国产成人精品久久一区| 日本少妇熟女一区二区| 一本一道人人妻人人妻αv| 色偷偷88888欧美精品久久久| 精品国产成人一区二区不卡在线| 伊人青青草综合在线视频免费播放 | 国产成人AV乱码免费观看| 成人av综合资源在线| 亚洲中文字幕成人无码| 99成人精品| 亚洲av第二区国产精品| 国产香港明星裸体xxxx视频| 性久久久久久久| 日本老年人精品久久中文字幕| 国产精品一区二区三区播放 | 亚洲在战AV极品无码| 日韩精品视频高清在线| 国语对白嫖老妇胖老太| 亚洲午夜无码久久yy6080| 国产精品国产三级国产专播| 丰满的人妻hd高清日本| 国产曰批免费视频播放免费s| 女同视频网站一区二区| 无码 人妻 在线 视频|