推广 热搜: 可以  企业  page  搜索引擎  行业  百度    使用  选择  个数 

Python爬虫(五)

   日期:2024-12-24     移动:http://ww.kub2b.com/mobile/quote/9744.html

Charles 是一个网络抓包工具
可以用它来做 App 的抓包分析,得到 App 运行过程中发生的所有网络请求和响应内容
相比 Fiddler,Charles跨平台支持更好

原理

 
 

Charles可以帮助我们抓取 HTTP 和 HTTPS 的数据包
抓到请求之后,我们如果能够分析出接口请求的一些规律,就能轻松通过 Python 脚本来进行改写
当请求里面包含一些无规律的参数的时候,可能就束手无策了
所以需要使用叫作 mitmproxy 的工具,它可以对抓包的结果通过脚本进行实时处理和保存

mitmproxy 是一个支持 HTTP 和 HTTPS 的抓包程序
有类似 Fiddler、Charles 的功能,只不过它是一个控制台的形式操作

mitmproxy 有两个关联组件
一个是 mitmdump,它是 mitmproxy的命令行接口
利用它可以对接 Python 脚本,用 Python 实现实时监听后的处理
另一个是 mitmweb,它是一个Web 程序,通过它可以清楚观察 mitmproxy捕获的请求

抓包原理:和 Charles一样mitmproxy运行于自己的PC上,mitmproxy会在PC的8080 端口运行然后开启一个代理服务,这个服务实际上是一个 HTTP/HTTPS 的代理

手机和 PC 在同一个局域网内设置代理为 mitmproxy 的代理地址,这样手机在访问互联网的时候流量数据包就会流经 mitmproxy,mitmproxy再去转发这些数据包到真实的服务器,服务器返回数据包时再由 mitmproxy转发回手机,这样 mitmproxy 就相当于起了中间人的作用,抓取到所有 Request 和 Response

另外这个过程还可以对接 mitmdump,抓取到的 Request和 Response 的具体内容,都可以直接用 Python 来处理,比如得到 Response 之后我们可以直接进行解析,然后存入数据库,这样就完成了数据的解析和存储过程

mitmdump是mitmproxy 的命令行接口,同时还可以对接Python 对请求进行处理,这是相比 Fiddler、Charles 等工具更加方便的地方。有了它我们可以不用手动截获和分析 HTTP 请求和响应只需写好请求和响应的处理逻辑即可,它还可以实现数据的解析、存储等工作,这些过程都可以通过Python 实现

Appium 是一个跨平台移动端自动化测试工具
可以非常便捷地为 iOS 和 Android 平台创建自动化测试用例
它可以模拟 App 内部的各种操作,如点击、滑动、文本输入等

Selenium 是一个网页端的自动化测试工具
Appium 实际上继承了 Selenium
Appium 也是利用 WebDriver来实现 App 的自动化测试的

对于i0S 设备,Appium 使用 UlAutomation 来实现驱动
对于Android ,它使用 UiAutomator和Selendroid 来实现驱动Appium 相当于一个服务器,向 Appium 发送一些操作指令Appium 就会根据不同的指令对移动设备进行驱动,完成不同的动作

Airtest
是一个跨平台的、基于图像识别的 U 自动化测试框架
适用于游戏和 App,支持平台有Windows、Android和i0S,基于 Python 实现

Poco
是一款基于 U1控件识别的自动化测试框架
目前支持 Unity3D/cocos2dx/Android 原生 App/i0S 原生 App/微信小程序
也可以在其他引擎中自行接入 poco-sdk来使用,同样是基于Python 实现的

Airtest概况
AirtestlDE
提供了一个跨平台的 U自动化测试编辑器,内置了 Airtest和 Poco 的相关插件功能能够使用它快速简单地编写Airtest和Poco代码
AirLab
真机自动化云测试平台,目前提供了 TOP100 手机兼容性测试、海外云真机兼容性测试等服务
私有化手机集群技术方案
从硬件到软件,提供了企业内部私有化手机集群的解决方案

Xposed 框架(Xposed framework)
是一套开源的,在 Android 高权限模式下运行的框架服务,可以在不修改 App 源码的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作

Xposed 框架(Xposed framework)
原理是通过替换系统级别的/system/bin/app_process 程序控制 zygote 进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,这个jar 包里面定义了对系统方法、属性的一系列 Hook 操作,同时还提供了几个 HookAPI供我们编写 Xposed 模块来使用

很多 App 在请求 API的时候都有加密参数
前面介绍了一种利用 mitmdump 来实时抓取数据的方法
如果要想拿到 App 发送的请求中包含哪些加密参数
就得剖析本源,深入到 App 内部去找到这些加密参数的构造逻辑
这其中就需要一定的逆向操作
可能需要对 App 进行反编译,然后通过分析源码的逻辑找到对应的加密位置

逆向相关的操作::
· 通过逆向操作获得 apk 反编译后的代码
· 然后追踪这个 token 的生成逻辑是怎样的
· 最后再用代码把这个逻辑实现出来

App 逆向实多数情况下就是反编译得到 App 的源码,然后从源码里面找寻特定的逻辑

逆向工具叫JEB
JEB 是一款专业的安卓应用程序的反编译工具
适用于逆向和审计工程,功能非常强大,可以帮助逆向人员节省很多逆向分析时间
利用这个工具能方便地获取到 apk 的源码信息
JEB 支持 Windows、Linux、Mac 三大平台,其官网地址为 https://www.pnfsoftware.com/

得到了这些反编译的内容,该从哪个地方入手去找入口呢?
通过 API的一些标志字符串来查找入口

爬虫的智能化解析,就是不再需要我们针对某一些页面来专门写提取规则了
利用一些算法来计算出页面特定元素的位置和提取路径
比如一个页面中的一篇文章,我们可以通过算法计算出来
它的标题应该是什么,正文应该是哪部分区域,发布时间等等

智能化解析是非常难的一项任务
比如说你给人看一个网页的一篇文章,人可以迅速找到这篇文章的标题是什么
发布时间是什么,正文是哪一块,或者哪一块是广告位,哪一块是导航栏,但给机器来识别的话它面临的是什么?仅仅是一系列的 HTML代码而已
那究竟机器是怎么做到智能化提取的呢?

· 比如标题。。一般它的字号是比较大的,而且长度不长位置一般都在页面上方,而且大部分情况下它应该和 title标签里的内容是一致的
· 比如正文。它的内容一般是最多的,而且会包含多个段落p或者图片img标签另外它的宽度一般可能会占用到页面的三分之二区域,并且密度(字数除以标签数量)会比较大
· 比如时间。不同语言的页面可能不同,但时间的格式是有限的,如2024/8/30 或者 2024/08/31 等等也有可能是美式的记法,顺序不同,这些也有特定的模式可以识别。
· 比如广告。它的标签一般可能会带有 ads 这样的字样,另外大多数可能会处于文章底部、页面侧栏并可能包含一些特定的外链内容

智能文本提取可以分为三类:

基于网页文档内容的提取方法
将 HTML 文档视为文本进行处理
适用于处理含有大量文本信息且结构简单易于处理的单记录网页,或者具有实时要求的在线分析网页应用
通过理解文本语义、分析上下文、设定提取规则等,实现对大段网页文档的快速处理
较为知名的方法有TSIMMIS、Web-0QL、Serrano、FAR-SW和 FOREST
但这些方法通常需要人工的参与,且存在耗时长、效率低的弊端

基于 DOM 结构信息的提取方法
将 HTML 文档解析为相应的 DOM 树,然后根据 DOM 树的语法结构创建提取规则
W4F和XWRAP 将HTML文档解析成 DOM 树
然后通过组件化引导用户通过人工选择或者标记生成目标包装器代码
Omini、IEPAD 和ITE提取 DOM 树上的关键路径,获取其中存在的重复模式
MDR 和 DEPTA 挖掘了页面中的数据区域,得到数据记录的模式
CECWS 通过聚类算法从数据库中提取出自同一网站的一组页面,并进行DOM 树结构的对比删除其中的静态部分,保留动态内容作为信息提取的结果
此类方法相对于上一类方法具有较高的提取精度,且克服了对大段连续文本的依赖
基于 DOM 结构信息的方法具有较高的时间和空间消耗
大部分原理还是基于 DOM 节点的文本密度、标点符号密度等计算的

基于视觉信息的提取方法
通过浏览器接口或者内核对目标网页预渲染,然后基于网页的视觉规律提取网页数据记录
经典的 VIPS 算法首先从 DOM 树中提取出所有合适的页面区域
然后根据这些页面和分割条重新构建 Web 页面的语义结构
ViNT、ViPER、ViDE 成功利用了网页的视觉特征来实现数据提取
CMDR为通过神经网络学习多记录型页面中的特征,结合基于DOM结构信息的MDR方法
挖掘社区论坛页面的数据区域
VIBS 将图像领域的 CNN 卷积神经网络运用于网页的截图,同时通过类VIPS 算法生成视觉块
最后结合两个阶段的结果识别网页的正文区域
最新的国内提出的 VBIE方法,基于网页视觉的基础上改进,可以实现无监督的网页信息提取

Readability实际上是一个算法,其主要原理是计算了 DOM 的文本密度
根据一些常见的 DOM 属性如 id、class 等计算了一些 DOM 的权重
最后分析得到了对应的 DOM 区块,进而提取出具体的文本内容
现在 Readability被取而代之的是一个 Javascript工具包,即 mercury-parser

 

Newspaper库分为Python2Python3两个版本
Python2下的版本叫作newspaper
Python3下的版本叫作newspaper3k

 
 
 
 
 

Spider 运行流程

本文地址:http://ww.kub2b.com/quote/9744.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号