关于app爬虫的环境准备

摘要

有些数据需要在手机应用中才能查看,没有网页版,所以学习移动端的爬虫是有必要的。

手机系统分为安卓和苹果两大系统,本次讲解主要以安卓手机为例

有安卓手机的可以使用手机,没有的可以使用模拟器,本次以夜神模拟器为例

必备电脑软件Fiddler:一款抓包工具

fiddler设置

在fiddler中需要更改监听位置,打开fiddler点击工具->选项

点击HTTPS,将请求来源改为……from all processes

获取认证

在模拟器的浏览器中输入主机IP:8888

回显示以下内容

点击下载fiddleRoot 证书

进行认证安装

网络设置

打开雷电模拟器,在网络设置中找到wifi设置

长按已经连接的wifi名称,点击修改网络

注意:若是使用安卓手机,需要先获取root权限(手机有变成板砖的风险,建议使用配置为安卓7版本的手机)

代理选择手动

代理服务器主机名填写本机的ip,不知道本机ip的可以cmd输入ipconfig查看自己的ip,代理服务器端口填写为:8888(此为fiddler的端口号)。点击保存。

在对应用程序进行浏览时,需要打开fiddler软件,监听应用程序。

mitmproxy(中间人代理攻击)

此外可以使用mitmproxy中间人代理攻击进行爬取 ,以下是简要介绍:

用于中间人攻击的代理首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会实时的查记录其截获的数据,或篡改数据,引发服务端或客户端的特定行为。

不同于fiddler或wireshark等抓包工具,mitmproxy不仅可以截获请求帮助开发者查看、分析,更可以通过自定义脚本进行二次开发,举例来说,利用fiddler可以过滤出浏览器对某个特定url请求,并查看分析其数据,但实现不了高度定制化的需求,类似与截获对浏览器对该url的请求,将返回内容置空,并将真实的返回内容存到某个数据库,出现异常数会发送邮件通知。而对于mitmproxy这样的需求可以通过载入自定义脚本轻松实现。

安装流程:

在pytharm的终端中输入以下内容:

pip install mitmproxy

可以通过输入以下内容在测试是否安装成功:

mitmweb --version

安装完成后,进入手机设置,将wifi 的代理服务器端口号改为8080(此为mitmproxy的端口号)

之后在终端中测试,查看是否能拦截手机端的网路请求 ,若不能进行拦截,则搜索mitmproxp.exe文件的位置,将其添加到系统环境变量中。

要启动mitmproxy用mitmproxy,mitmdump\mitmweb这三个命令中的任意一个即可,这三个命令一致,且都可以加载自定义脚本,唯一区别就是交互页面不同。

mitmproxy命令启动后,会提供一个命令行界面,用户可以实时看到发送的请求,并通过命令过滤请求,查看请求数据

mitmweb命令启动后,会提供一个web界面,用户可以实时看到发生的请求,并通过GUI交互来过滤请求,查看请求数据

mitmdump命令启动后,没有界面,程序默默运行,所以mitmdump无法提供过滤请求,查看数据功能,只能结合自定义脚本,默默工作。

脚本编写:

脚本编写需要遵循mitmproxy规定的套路

其一:

编写py文件,提供mitmproxy加载,文件中定义了若干函数,这些函数实现了某些mitmproxy提供的事件,mitmproxy会在某些事件发生时调用对应的函数,形如:

import mitmproxy.http
from mitmproxy import ctx

request_num = 0
response_num = 0

#(Called when) 来自客户端的 HTTP 请求被成功完整读取。
def request(flow: mitmproxy.http.HTTPFlow):
    global request_num
    request_num = request_num + 1
    ctx.log.info(f"监测到{request_num}个请求")

#(Called when) 来自客户端的 HTTP 请求被成功完整读取。
def response(flow: mitmproxy.http.HTTPFlow):
    global response_num
    response_num = response_num + 1
    ctx.log.info(f"监测到{response_num}个应答")

# 在cmd任意位置输入以下命令
    
mitmweb -s addons.py

其二 编写一个py文件供mitmproxy加载,文件定义了变量addons。addons是个数组,每个元素是一个类实例,这些类有若干方法,这些方法实现了某些mitmproxy提供的事件,mitmproxy会在某些事件发生时调用对应的方法,这些类,成为一个个addon,比如一个叫Counter的addon:

import mitmproxy.http
from mitmproxy import ctx


class Counter:
    def __init__(self):
        self.num = 0

    def request(self, flow: mitmproxy.http.HTTPFlow):
        self.num = self.num + 1
        ctx.log.info("We've seen %d flows" % self.num)


addons = [
    Counter()
]
这里强烈建议使用第二种套路,直觉上就会感觉第二种套路更为先进,使用会更方便也更容易管理和拓展。况且这也是官方内置的一些 addon 的实现方式。

我们将上面第二种套路的示例代码存为 addons.py,再重新启动 mitmproxy:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Appium是一个开源的自动化测试工具,也可以用于进行移动应用程序的爬虫。使用Appium可以模拟用户在移动设备上的操作,比如点击、滑动等,从而获取移动应用程序中的数据。具体的操作步骤如下: 1. 在Windows虚拟环境下执行`pip install appium-python-client`命令,安装appium-python-client模块。 2. 启动夜神模拟器,并使用adb命令建立adb server和模拟器的连接。 3. 启动appium-desktop,点击start server启动appium服务。 4. 根据需要获取移动设备的型号、app包名称和进程名,可以通过adb shell命令获取。 5. 初始化并获取移动设备的分辨率。 6. 使用appium-python-client模块编写代码,实现控制移动应用程序进行相关操作,比如滑动、获取信息等。 以上是使用Appium进行移动应用程序爬虫的一般步骤,具体的实现还需要根据具体的应用程序和需求进行调整和编码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [《Python爬虫100例》复盘⑦,解决手机APP爬虫环境问题](https://blog.csdn.net/hihell/article/details/121289717)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [APP爬虫--appium提取数据](https://blog.csdn.net/qq_45176548/article/details/113200918)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值