记忆碎片之python爬虫APP数据爬取(一)

# app数据
# 简单
# 比web端更容易,反爬虫不太强,大部分是http/https协议,大多返回json
# 困难
# 01 可能需要适当的反编译,分析出加密算法并抓取到信息
# 02 可能加固,需要脱壳,然后反编译,分析出加密算法并抓取到信息
# 03 需要破解通过各式各样的签名,整数,设备绑定等方法,找到隐藏加密算法

# 技术要求
# python爬虫开发经验 app逆向 java开发基础 app脱壳 android开发基础 破解加密算法
# 使用自动化工具,可省略大部分要求


# 抓包工具
# fiddler(可以抓包和调试) mitmproxy(可以抓包,可以和Python脚本交互,解析app) sst是app应用

# 自动化 appium

# 多应用 docker

# 豆果美食案例 多线程
# 抖音评论 自动化工具
# 多任务 抖音 快手 今日头条并行抓取

# Android模拟器安装

# 下载地址 https://www.yeshen.com/

# 开启CPU虚拟化vt,在BIOS里面设置

"""
查看电脑和手机的链接情况
    PS D:\yeshen\Nox\bin> .\adb.exe devices -l  注意是-L小写
    List of devices attached
    127.0.0.1:62001        device product:sagit model:MI_9 device:shamu
"""
# 使用adb安装apk
# .\adb.exe install 包名.apk

# Genymotion是一个国外的安卓模拟器,调试复杂

# fiddler是一个web调试代理平台,可以监控和修改web数据流
# 功能很强大 展示表示层的数据类型,支持web和移动端数据流
# 优点:
#   可以查看所有浏览器、客户端应用或服务之间的web数据流
#   手动或自动修改任意的请求和响应
#   可以解密HTTPS数据流以便查看和修改
# 缺点:
#   只支持http https ftp websocket数据流等相关的协议
#   不支持检测或修改smtp pop3等
#   无法处理请求和响应超过2GB的数据

# fiddler抓取web端Chrome浏览器数据
#   配置fiddler:Tools菜单--Options菜单--HTTPS选项卡(Decrypt HTTPS staffic解密HTTPS)--各种确定安装证书
#                ...from browsers only只检测浏览器(...from remote clients only检测移动端app)-- Connections选项卡
#                端口为8889-- 勾选Allow remote compiters to connect允许远程链接,不勾选无法检测APP数据--最后保存重启
#   配置浏览器: 在谷歌安装扩展SwitchyOmega 选项--新建情景模式--命名fillder-- HTTP代理协议--代理服务器127.0.0.1--代理
#                端口8889--左侧按钮应用选项--在浏览器点击该图标切换到fillder代理
# 在浏览器访问网站,在fillder里面查看 -- Inspectors--Raw 发现下面有乱码--在工具栏点击Decode按钮,此时重新刷新网站,无乱码

# mitmproxy抓包工具的安装
# mitmproxy就是MITM的proxy
# MITM就是中间人攻击 Man-in-the-middle attack
# 它和正常的代理一样转发请求,保障服务端与客户端的通信
# 拦截请求,修改请求,拦截返回,修改返回
# 可以载入自定义Python脚本

# 安装环境:基于Python Windows需要c++14.0以上 Linux则直接基于Python
# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple mitmproxy
# >mitmproxy --version
#         抓包使用                                                             Python交互    Linux
# Error: mitmproxy's console interface is not supported on Windows. You can run mitmdump or mitmweb instead.
# (venv) D:\gcw\learn_crawler>mitmdump --version
# Mitmproxy: 5.0.1
# Python:    3.7.4
# OpenSSL:   OpenSSL 1.1.0j  20 Nov 2018
# Platform:  Windows-10-10.0.17763-SP0

# Ubuntu终端安装 sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple mitmproxy --ignore-installed
# 终端输入mitmproxy 默认监听的是8080端口
# 在本地配置代理 访问mitm.it安装证书,不需要输入密码,放入收信人的根证书目录

# windows 使用mitmproxy 文件保存到了test.txt里面了
# (venv) D:\gcw\learn_crawler>mitmdump -w test.txt
# Proxy server listening at http://*:8080
# 修改本地浏览器的switchyomega代理地址
# 访问mitm.it安装证书
# mitmproxy -p 8889切换监听端口
# mitmproxy -p 8889 -w text1.txt
# 键盘上的Z键,清楚所有抓包流数据
# set view-filter=!(-c 200) 过滤返回响应不为200的数据流

# mitmweb 打开一个网页,在其他标签请求的时候数据流会显示到该网页,类似fiddler
"""
关于mitmproxy在虚拟机Ubuntu18里面安装好之后,在本地浏览器却无法使用该代理的问题
解决办法:
    第一步:在虚拟机Ubuntu18里面安装ssh服务,可以自行百度
    第二部:这个时候,使用xshell还是无法连接虚拟机,参考https://www.cnblogs.com/felixwang2/p/9441925.html
    第三步:使用xshell连接成功,注意用户名是虚拟机Ubuntu的登陆用户名和密码也是登陆密码
"""
# Packet Capture抓包APP
"""
用于手机端抓包,是一款免root的APP,运行在安卓平台,用于捕获HTTP、HTTPS网络流量嗅探的应用程序
特点:捕获网络数据包,并记录他们,使用中间人技术对SSL解密,无需root权限,这个软件
    使用了安卓提供的VpnService api,实现了中间人攻击
与fiddler相比功能很少
安装的时候也需要安装证书
抓取数据包查看起来也不方便
"""
"""
appium移动端自动化测试工具
是一个自动化测试开源工具,支持iOS和安卓平台的原生应用,web应用和混合应用
允许不同平台使用同一套API来写自动化测试脚本,增加了代码复用性

selenium是web端,appium落泪是封装了标准的selenium客户端类库
appium为用户提供了方便的接口来执行各种设备动作

特点:多平台
    使用client/server的设计模式
    扩展了webdriver的协议
    多语言
工作原理: 多语言客户端-服务端-移动设备
安装:https://github.com/appium/appium-desktop/releases/tag/v1.15.1
下载Appium-windows-1.15.1.exe Windows版本的,这个是appium服务端
appium客户端使用pip下载

另一种不推荐的方法是使用node.js的方式,安装可能遇见各种错误,需要先安装node.js并加入path环境变量
在cmd中node -v 和npm -v分别查看是否安装成功
安装npm install -g appium 安装appium,需要安装许多组件,会各种报错
例如:找不到python环境,因为它需要python2.7的环境
      没有c++ 14.0版本
      还有其他错误
解决办法是:打开win10开发者模式
            装.net3.5
            安装windows-10-sdk工具
            安装windowsApplicationDriver
            管理员权限powershell 执行npm install --global --production windows-build-tools
            如果上面没有报错 npm i appium -g 回车开始安装
安装成功之后启动appium
    在启动界面配置host和port
    在高级选项卡可以配置日志的存放位置或者启动端口号
    如果设置了高级配置,可与存储到presets,增加配置复用性
启动之后进入界面会显示版本号和监听端口:
    右侧上角放大镜的功能是:可以向定位网页元素一样定位APP元素,方便编写自动化测试工具,点击之后会
    跳出对话框,用于设置APP的各种参数,点击对话框右下角start...可以显示app元素,方便编辑xpath
"""
"""
docker使用
更高效的利用系统资源
更快速的启动时间
一致的运行环境
持续交付和部署
更轻松的迁移
"""
"""
安装docker toolbox
点击docker quickstart terminal 进行docker初始化
会跳出一个鲸鱼
docker version查看版本
命令:
    docker run hello-world 如过本地没有会到官方镜像库查询并下载
    docker run -it ubuntu bash (-it进入交互系统,就是bash界面shell命令)
    docker ps -a 查看所有容器的信息
    docker images 查看本地有多少镜像
    docker rmi 镜像名(hello-world) 删除镜像,如果删除不了,使用docker rm 提示序列(容器ID)
"""
# fiddler工具
"""
命令行下断点:
    bpu 域名  (实现请求前的断点拦截)bpu https://www.baidu.com
    bpu 回车 取消拦截
    bpafter 域名(拦截响应包)
    bpa 回车(取消响应包的拦截)
    设置网页元素的重定向,当服务器上的某个文件需要替换时,可以重定向到本地文件,没问题时再替换线上文件
"""
"""
模拟器安装证书:
    设置网络桥接模式,就是为了获取当前网络里面的IP地址,否则获取到的是net之后的地址,它是通过
    地址转化所得到的地址,
"""

你可能感兴趣的:(爬虫,python,linux,docker,mitmproxy,app爬虫)