2023年11月30日发(作者:)
总780期第十期河南科技
2022年5月HenanScienceandTechnology
信息技术
Python环境下利用Selenium与JavaScript逆向
技术爬虫研究
时春波李卫东秦丹阳张海啸吴峥嵘
郑州450001)(河南工业大学信息科学与工程学院,河南
摘要:
针对使用调试检测、数据加密等技术的网站,解析工具BeautifulSoup难以对网页进行解析
爬取数据。本研究基于Python环境,结合JavaScript逆向技术、BeautifulSoup网页解析等网络爬虫
技术,利用中间人攻击工具Mitmproxy(man-in-the-middleattackproxy)在本地指定设备端口开启
本地代理,拦截并修改网页响应。同时,运用Web自动化工具Selenium来启动浏览器,设置使用代
理服务器,连接到本地Mitmproxy代理,访问被修改的响应网页进行网页调试和解析,并对加密数
据进行还原,解决网络爬虫中调试检测和数据加密难题,从而爬取数据。
关键词:
网络爬虫;JavaScript逆向技术;网络代理;Selenium
中图分类号:文献标志码:A文章编号:1003-5168(2022)10-0020-04
TP393.092
DOI:10.19968/.1003-5168.2022.10.004
ResearchonCrawlerUsingSeleniumandJavaScriptReverse
TechnologyinPythonEnvironment
(CollegeofInformationScienceandEngineering,HenanUniversityofTechnology,Zhengzhou450001,China)
Abstract:
Forwebsitesthatusedebuggingdetection,dataencryptionandothertechnologies,theparsing
SHIChunboLIWeidongQINDanyangZHANGHaixiaoWUZhengrong
toolbeautifulsoupisdifficulttoparsewebpagesandcrawldataBasedonthepythonenvironment,com⁃
binedwithJavaScriptreversetechnology,beautifulsoupwebpageparsingandotherwebcrawlertech⁃
nologies,thisstudyusesthemaninthemiddleattackproxy(mitmproxy)toopenthelocalproxyatthelo⁃
caldesignateddeviceport,interceptandmodifythewebpageresponse,andusesthewebautomationtool
debugginganddataencryptioninwebcrawler,andthencrawldata.
seleniumtostartthebrowser,setuptheproxyserverandconnecttothelocalmitmproxythe
modifiedmiddlenotetodebugandanalyzethewebpage,restoretheencrypteddata,solvetheproblemof
Keywords:
webcrawler;JavaScriptreversetechnology;networkagent;Selenium
0引言
的,其不仅在搜索引擎领域得到广泛应用,在大数
据分析、商业等领域也得到了大规模应用。随着网
络反爬虫技术的发展,爬取数据也越来越困难。
[1]
本研究针对网络爬虫中调试检测和数据加密等反
爬虫技术,使用Python爬虫技术,结合Selenium和
随着网络技术的迅速发展,万维网成为大量信
息的载体,如何有效提取并利用这些海量信息成为
一个巨大挑战。爬虫技术就是在这样背景下诞生
收稿日期:
2022-04-24
基金项目:
国家级大学生创新创业训练计划项目(2S、2S);省级大学生创新创
业训练计划项目(S2、S2)。
作者简介:
时春波(1999—),男,本科生,研究方向:网络爬虫、深度学习。
Copyright©博看网 . All Rights Reserved.
第10期
Python环境下利用Selenium与JavaScript逆向技术爬虫研究
·21·
JavaScript逆向技术,加入Mitmproxy进行网页响应
难题,从而爬取数据。量进行脚本化更改等功能。
1相关网络爬虫技术
Python爬虫技术1.1
发以前录制的服务器的HTTP响应;反向代理模式
将流量转发到指定服务器;使用Python对HTTP流拦截和修改,解决网络爬虫中调试检测和数据加密
1.3Selenium测试框架
Selenium
[3]
是一个开源的、可移植的Web测试
框架,支持多种操作系统、浏览器和编程语言,还支
率。SeleniumWeb驱动程序不需要安装服务器,通
网络爬虫又称网络蜘蛛、网络机器人,是一
[2]
种按照一定规则自动浏览、检索网页信息的程序或
脚本。网络爬虫能够自动请求网页,并将所需要的
数据抓取出来。通过对抓取到的数据进行处理,从
而提取出有价值的信息。
网络爬虫可分为三大类,分别是通用网络爬
虫、聚焦网络爬虫和增量式网络爬虫。通用网络爬
虫是搜索引擎的重要组成部分,须遵守Robots协
议。在应用过程中,通用网络爬虫一般会从初始
UR开始,获取初始页面的代码,同时会从代码提
取所需的URL,并将其放入列表中,直到其满足停
止条件;增量式网络爬虫是指对已下载网页采取
增量式更新方式,只爬取新产生或发生变化的网
页,能够在一定程度上保证所爬取数据的时效性;
聚焦网络爬虫是面向特定需求的一种网络爬虫程
序,与通用网络爬虫技术相比,其在网页抓取时会
对网页内容进行筛选和处理,尽量保证仅抓取需在相关网络爬虫技术发展的同时,反爬虫技
要的相关信息。但在应用过程中,其程序的编写术也在不断发展,目前反爬虫技术主要使用以下
更加复杂。聚焦网络爬虫极大地节省了硬件和网基本策略。
络资源,能够在海量数据中快速抓取有效数据,并
从有效数据中获取用户需要的信息,且能够筛选和
处理与主题无关的信息。由于保存的页面数量少览器、操作系统、CPU等信息。通过在服务器中设
且更新速度快,其能够更好地满足特定人群对特定置user-agent白名单,确保只有符合条件的user-
领域信息的需求。
本语言,也是一种功能强大且完善的通用型语言。
相比于其他编程语言(如Java、C、C++等),Python的通过设置服务器访问阈值,将短时间内访问量
代码非常简单,提供了许多网络爬虫模块和库。这
些类库包括文件I/O、GUI、网络编程、数据库访问、器,从而达到反爬虫的目的。网络爬虫能够利用IP
文本操作等绝大部分应用场景,具有很好的扩展
性。随着大数据、人工智能技术的流行,Python的
应用领域将更加广泛。
1.2Mitmproxy代理工具
Mitmproxy是一组工具,可为HTTP/1、HTTP/2
Python是一种面向对象、解释型、弱类型的脚
持并行测试执行,在减少时间的同时提高了测试效
过测试脚本直接与浏览器进行交互。网络爬虫中
使用Selenium驱动程序是为了解决Requests无法
执行JavaScript代码的问题。通过驱动浏览器自
[4]
动执行自定义脚本,模拟人工使用浏览器的操
作,如跳转、输入、点击、下拉等,进而获取网页渲
[5]
染后的结果。
1.4JavaScript逆向技术
当获取网页的HTML代码后,部分网站运用调
试检测和数据加密等反爬虫技术,这些技术会阻碍
下一步的网页解析和运用,此时需要运用JavaScript
逆向技术来解析JavaScript代码,解决网络数据抓
[6]
取时所遇到的调试检测和数据加密等问题。
2相关网络反爬虫技术
[7]
2.1User-Agent控制请求
User-Agent中可以携带用户设备信息,包括浏
agent才能访问服务器。而网络爬虫技术可以通过
伪造头部信息来访问服务器。
2.2IP限制
超过阈值的IP地址加入黑名单中,禁止其访问服务
代理来更换IP,从而能够继续访问服务器。
2.3Session访问限制
Session是用户请求服务器的凭证,在服务器端
根据短时间内的访问量来判断是否为网络爬虫,将
疑似网络爬虫的Session禁用。通过网络爬虫技术
可以注册多个账号,使用多个Session轮流对服务和WebSocket提供交互式的、具有SSL/TLS功能的
器进行访问,避免Session被禁用。拦截代理。其功能包括:能够完成拦截并动态修改
2.4验证码HTTP、HTTPS的请求和响应;保存完整的HTTP对
在用户登录或访问某些重要信息时,可以使用话,并进行转发和分析;转发HTTP会话客户端;转
Copyright©博看网 . All Rights Reserved.
·22·第10期
Python环境下利用Selenium与JavaScript逆向技术爬虫研究
图片验证码、短信验证码、数值计算验证码、滑动验
证码、图案标记验证码等检测用户的状态。该方法
能够有效阻挡网络爬虫,区分程序和正常用户,使
正常用户可以正常访问服务器,而网络爬虫因无法
识别验证码,使其不能访问服务器。
2.5动态加载数据
通过JavaScript技术动态加载数据,网络爬虫
在静态页面中无法获得数据。网络爬虫技术能够
通过抓包的形式获取URL,模拟请求。
2.6数据加密
在前端请求服务器前,将相关参数进行加密,
使用加密后的参数请求服务器,在服务器端进行相
关解码操作,而网络爬虫无法进行模拟请求服务
器。由于加密算法是写在JavaScript代码中,网络
爬虫能够找到并破解。
3Python环境下Selenium与JavaScript逆向爬
虫技术的应用
使用Mitmproxy开启本地代理,进行网页响应
拦截。首先,创建文件。使用mitmweb-s
命令启动Mitmproxy并加载自定义脚本
定义脚本文件代码如下所示。
,修改网页响应,绕过网站检测(见图1)。
检测到非法调试,请关闭调试终端后刷新本页面重试!
WelcomeforPeople,NotWelcomeforMachine!
WelcomeforPeople,NotWelcomeforMachine!
检测到非法调试,请关闭调试终端后刷新本页面重试!
if''in:
("ver","false")
bugger","")
flow.response.text=flow.response.text.replace
=e("de⁃
其次,设置Firefox浏览器驱动器的环境:
Firefox_options=xOptions()。设置浏
览器Firefoxd代理方式为使用本地代理,其代码如
下所示。
proxy_ip=“本地ip”
#设置浏览器代理端口
roxy_ip)
ff__preference("",1)
ff__preference("",p-
ff_profile.set_preference("network.proxy.http_p-
ff_profile.set_preference("network.proxy.ssl",p-
ff_profile.set_preference("network.proxy.ssl_po-
ff__preference("",pr-
ff_profile.set_preference("network.proxy.ftp_p-
最后,创建Firefox浏览器驱动器启动Firefox
[8]
browser=x(options=ff_profile)
4以某环境质量监测网站进行技术方法测试
ort",int(8080))
roxy_ip)
rt",int(8080))
oxy_ip)
ort",int(8080))
(见图2)。相关代码如下所示。
图1网站调试检测
w):
defresponse(slef,flow:o-
针对某环境质量监测网站,首先使用逆向爬虫
图2启动Firefox浏览器
Copyright©博看网 . All Rights Reserved.
第10期
Python环境下利用Selenium与JavaScript逆向技术爬虫研究
·23·
技术解决该网站爬虫调试中检测和数据加密难题,题,从而突破网站的反爬虫技术爬取到相关空气质
然后使用网站解析工具BeautifulSoup对网页结构量监测数据。该方法能够有针对性地分析并找到
和属性等进行网页解析。图3为该网站空气质量
[9]
历史数据,根据其详细信息页面的 过select()获取 (见表1)。 Workbook()抽取所需要数据保存至Excel表 [10-11] PM10 38130.633826 34140.634024 38170.643925 36220.863722 33140.765121 NO质量等级PM2.5 22 COSO O_8h 3 目标网站反爬虫技术漏洞进行数据爬取,从而保证 网络爬虫数据抓取的顺利进行。 参考文献: [1]周毅,宁亮,王鸥,等.基于Python的网络爬虫和反 爬虫技术研究[J].现代信息科技,2021(21):149-151. [2]张俊威,肖潇.基于Python爬虫技术的网页数据抓 取与分析研究[J].信息系统工程,2021(2):155-156. [3]忽爱平,范伊红,李阳,等.基于Selenium的网络爬 虫的设计与实现[J].无线互联科技,2021(17):39-40. [4]李晨昊.基于BeautifulSoup+requests和selenium爬 虫网页自动化处理的实现和性能对比[J].现代信息科技, 2021(16):10-12,18. [5]许景贤,林锦程,程雨萌.Selenium框架的反爬虫程 序设计与实现[J].福建电脑,2021(1):26-29. [6]王朝阳,范伊红,李梦丹,等.Python环境下的Ja‐ vaScript逆向技术分析[J].无线互联科技,2021(17):97-98. [7]张宝刚.基于Python的网络爬虫与反爬虫技术的 研究[J].电子世界,2021(4):86-87. [8]沈熠辉.以Selenium为核心的亚马逊爬虫与可视化 [J].福建电脑,2021(12):43-46. [9]樊涛,赵征,刘敏娟.基于Selenium的网络爬虫分析 与实现[J].电脑编程技巧与维护,2019(9):155-156,170. [10]李晓宇,徐勇,汪倩,等.基于Selenium的淘宝商品 评论爬虫算法[J].信息与电脑(理论版),2020(12):62-64. [11]龙学磊,田萌,徐英,等.网络爬虫在科技文献检索 中的应用[J].现代信息科技,2021(24):150-152. 优 优 优 优 优 图3城市日历史数据 表1Excel表保存所爬取数据 日期 2015-01-01382638130.6338 2015-01-02342434140.6340 2015-01-03382538170.6439 2015-01-04362236220.8637 2015-01-05332133140.7651 AQIPM2.5PM10NOCOSOO_8h 质量 223 等级 优 优 优 优 优 5结语 本研究以某空气质量监测反爬虫分析平台为 例,基于Python环境,利用Selenium、JavaScript逆向 爬取数据技术,与中间人攻击工具Mitmproxy开启 本地代理相结合,解决了网页无法进行调试的问 Copyright©博看网 . All Rights Reserved.标签,通
整个标签内容,调用函数


发布评论