0%

安装配置

JEB 是由 PNF 软件(PNF Software)机构开发的一款专业的安卓应用程序的反编译工具,适用于逆向和审计工程,功能非常强大。相比 jadx 来说,JEB 不仅仅支持安卓 apk 的反编译,安卓应用的动态调试,还支持 ARM、MIPS、AVR、Intel-x86、WebAssembly、Ethereum(以太坊)等程序的反编译、反汇编、动态调试等功能,另外还能对一些 PDF 文件进行解析和处理,是一个极其强大的综合性逆向和审计工具。

由于本章的主要内容和安卓逆向相关,所以我们主要关注其和安卓相关的功能。对于安卓应用来说,JEB 主要提供如下功能:

  • 可以对安卓应用程序和 Dalvik(Android 虚拟机,类似 Java 中的 JVM)字节码执行精确和快速的反编译操作。
  • 内置的分析模块可以对高度混淆的代码可以提供虚拟层次化重构,对混淆代码的分析很有帮助。
  • 可以对接 JEB API 来执行一些逆向任务,支持 Java 和 Python 来编写自动化逆向脚本。

JEB 支持 Windows、Linux、Mac 三大平台,其官网地址为 https://www.pnfsoftware.com,目前主要分为三个版本:JEB CE(社区版)、JEB Android(安卓版)、JEB Pro(专业版)。JEB CE 提供了一些基础的功能,如支持 dex 文件的反编译,支持 Intel-x86 的反编译和反汇编,但不支持 Dalvik 字节码的反编译等功能。JEB Android 则更专注于安卓,支持 dex 文件的反编译,也支持 Dalvik 字节码的反编译和反汇编,JEB Pro 则是“完全体”,支持官网所介绍的所有的功能。具体的功能对比可以参考官网的介绍:https://www.pnfsoftware.com/jeb。三个版本中,JEB CE 是免费的,JEB Android 和 JEB Pro 都是收费的,需要购买许可证才可以使用。

安装

如果从官方网站直接下载的话,一些 Android 功能是没法用的,这里建议下载社区大佬们提供的破解版,请移步:https://bbs.pediy.com/thread-268316.htm。

另外这里我也准备了一个安装包,链接: https://pan.baidu.com/s/1DXTqwWMrLJ-YhPb0zgZKyQ 提取码: 4m49

下载完成,解压后会得到如下的文件目录:

这里有三个运行脚本,分别适配 Windows、Linux、Mac,分别运行 jeb_wincon.bat、jeb_linux.sh、jeb_macos.sh 即可。

如 Mac 下就可以运行:

1
sh jeb_macos.sh

运行之后会出现如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Memory Usage: 981.5M allocated (144.9M used, 836.6M free) - max: 14.2G
JEB 4.3.0.202107131915 (jeb-ce) is starting...
Current directory: /usr/local/etc/jeb
Base directory: /usr/local/etc/jeb
Program directory: /usr/local/etc/jeb/bin
System: Mac OS X 11.5.2 (x86_64) en_CN
Java: Oracle Corporation 1.8.0_282
External plugin loaded: com.pnf.plugin.androidjnihelper.DynamicJNIDetectionPlugin
External plugin loaded: com.pnf.androsig.gen.AndroidSigGenPlugin
External plugin loaded: com.pnf.androsig.apply.andsig.AndroidSigApplyPlugin
External plugin loaded: com.pnf.plugin.oat.OATPlugin
External plugin loaded: com.pnf.plugin.pdf.PdfPlugin
External plugin loaded: com.pnf.diemvm.DiemIdentifier
External plugin loaded: com.pnf.diemvm.DiemDisassemblerPlugin
External plugin loaded: com.pnf.diemvm.DiemDecompilerPlugin
Checking for update...

接着就会弹出 JEB 的窗口,如图所示:

然后就可以使用了。

安装配置

jadx 是一款使用广泛的反编译工具,可以一键把 apk 文件还原成 Java 代码,使用起来简单,功能 强大,还具有一些附加功能可以辅助代码追查。

相关链接

安装方法

Windows

直接到 GitHub 下载对应的 Release 包即可:https://github.com/skylot/jadx/releases。

下载之后直接解压即可。

解压之后会得到一个 bin 目录,进入 bin 目录直接运行 jdax 和 jadx-gui 即可,Windows 可以直接双击 jadx.bat 或 jadx-gui.bat 即可运行。

Mac

对于 Mac 来说,可以直接使用 Homebrew 安装:

1
brew install jadx

Linux

1
sudo pacman -S jadx

更多安装说明可以参考:https://github.com/skylot/jadx。

验证安装

只要 jadx 和 jadx-gui 能正常启动,就证明安装成功了。

安装配置

本节我们了解下 parsel 的安装方式。

相关链接

安装方法

pip 安装

推荐使用 pip3 安装,命令如下:

1
pip3 install parsel

命令执行完毕之后即可完成安装。

验证安装

安装完成之后,可以在 Python 命令行下测试。

1
2
$ python3
>>> import parsel

如果没有错误报出,则证明库已经安装好了。

安装配置

adbutils 是 Python 中 adb 命令行的封装包。

相关链接

安装方法

pip 安装

推荐使用 pip3 安装,命令如下:

1
pip3 install adbutils

命令执行完毕之后即可完成安装。

验证安装

安装完成之后,可以在 Python 命令行下测试,另外确保你的手机已经和电脑通过 USB 或无线的方式连接好了,运行如下代码:

1
2
3
4
import adbutils

adb = adbutils.AdbClient(host="127.0.0.1", port=5037)
print(adb.devices())

如果没有错误报出,而且输出了 Device 相关信息,则证明库已经安装好了。

安装配置

下面是一些群控系统服务网站(不定期更新):

掘金网安卓群控系统:https://www.54nb.com/androids/

侠客科技:https://www.xiake.vip/

智互云客:http://www.zh-auto.org/

智云控:http://www.zhiyunkong.com/

鹰眼:http://ent.mobileanjian.com/

阿云梯:https://www.ayunti.cn/

河马云:http://www.longene.com.cn/

四方来客:http://www.zhiboyk.com/

安装配置

Airtest Project 是由网易游戏推出的一款自动化测试框架,项目构成如下:

  • Airtest:一个跨平台的、基于图像识别的 UI 自动化测试框架,适用于游戏和 App,支持的平台有 Windows、Android 和 iOS,基于 Python 实现。
  • Poco:一款基于 UI 控件识别的自动化测试框架,目前支持 Unity3D、cocos2dx、Android 原生 App、iOS 原生 App 和微信小程序,也可以在其他引擎中自行接入 poco-sdk 来使用,基于 Python 实现。
  • AirtestIDE:提供了一个跨平台的 UI 自动化测试编辑器,内置了 Airtest 和 Poco 的相关插件功能,使用它能够快速简单地编写AirtestPoco代码。
  • AirLab:真机自动化云测试平台,目前提供了 Top 100 手机兼容性测试、海外云真机兼容性测试等服务。
  • 私有化手机集群技术方案:从硬件到软件,提供了企业内部私有化手机集群的解决方案。

总之,Airtest 建立了一个比较完善的自动化测试解决方案,利用 Airtest 我们能实现类似 Appium 一样可见即可爬的爬取,相对 Appium 个人认为更加简单易用。

相关资源

安装

要安装 Airtest,我们可能需要安装多个组件,比如 AirtestIDE、Poco、Airtest 库等。

对于 Airtest IDE 来说,请参考 https://airtest.doc.io.netease.com/IDEdocs/getting_started/AirtestIDE_install/ 里面的说明进行安装。

安装完 Airtest IDE 之后,它还会安装一个 Python 环境,同时该 Python 环境还附带安装了 Airtest Python 库和 Poco Python 库,不过这个 Python 环境被打包在 AirtestIDE 里面,和系统里面装的 Python 并不是同一个,所以,推荐直接使用 pip3 将 Airtest Python 库和 Poco Python 库安装到系统的 Python 环境下。

Airtest Python 库的安装命令如下:

1
pip3 install airtest

Poco Python 库的安装命令如下:

1
pip3 install pocoui

安装完成之后,可以在 AirtestIDE 中把默认 Python 环境更换成系统的 Python 环境,而不再是 AirtestIDE 附带的 Python 环境,打开 AirtestIDE 菜单的选项 - 设置,可以看到如下配置:

可以看到这里有一个选项叫做 “自定义 Python.exe 路径”,将其修改为系统的 Python 路径即可,具体的设置方法可以进一步参考:https://airtest.doc.io.netease.com/IDEdocs/settings/1_ide_settings/#python。

安装好了 Airtest IDE、Airtest 和 Poco 的 Python 库之后,最后我们还需要准备一台 Android 真机或者模拟器,如果是真机还需要通过 USB 和 PC 相连,确保 adb 能够正常连接到手机,具体的设置方法可以参考:https://airtest.doc.io.netease.com/tutorial/1_quick_start_guide/#_4。

安装配置

简单的说 Node.js 就是运行在服务端的 JavaScript。

Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。

Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎,V8 引擎执行 Javascript 的速度非常快,性能非常好。

如果你是一个前端程序员,你不懂得像 PHP、Python 或 Ruby 等动态编程语言,然后你想创建自己的服务,那么 Node.js 是一个非常好的选择。

Node.js 是运行在服务端的 JavaScript,如果你熟悉 Javascript,那么你将会很容易的学会 Node.js。

相关链接

安装方法

由于 Node.js 频繁更新,请直接移步 Node.js 中文网介绍查看安装说明即可:http://nodejs.cn/learn/how-to-install-nodejs。

另外,个人也非常推荐使用 nvm 来安装 Node.js,有了 nvm,我们可以方便地管理多个 Node.js 版本,其实有点类似于 Python 虚拟环境的感觉,具体的安装说明可以参考:https://github.com/nvm-sh/nvm。

安装配置

本文介绍代理软件的配置,由于内容可能相对敏感,所以这里仅提供外链。

个人比较推荐的是:konan 点 ml,里面有很多套餐,同时教你怎么在各个平台(Windows、Mac、Linux、Android、iOS)上配置和运行对应的代理软件。

运行代理软件后会在本机创建 HTTP 或 SOCKS 代理服务,所以代理地址一 般是 127.0.0.1:<port> 这样的格式,不同代理软件使用的端口可能不同。

我的本机上安装着一个代理软件,它会在 7890 端口上创建 HTTP 代理服务,在 7891 端口上创建 SOCKS 代理服务,因此 HTTP 代理地址为 127.0.0.1:7890,SOCKS 代理地址为 127.0.0.1:7891,只要 设置了这个代理,就可以成功将本机 IP 切换到代理软件连接的服务器的 IP。

安装配置

Pillow 是 Python 的一个支持图像处理的库,本节我们了解下 Pillow 的安装方式。

相关链接

安装方法

pip 安装

推荐使用 pip3 安装,命令如下:

1
pip3 install Pillow

命令执行完毕之后即可完成安装。

具体的 Python 版本支持可以参考 https://pillow.readthedocs.io/en/latest/installation.html 的说明,如图所示:

验证安装

安装完成之后,可以在 Python 命令行下测试。

1
2
$ python3
>>> import pillow

如果没有错误报出,则证明库已经安装好了。

安装配置

本节我们了解下 opencv-python 的安装方式。

相关链接

安装方法

pip 安装

推荐使用 pip3 安装,命令如下:

1
pip3 install opencv-python

命令执行完毕之后即可完成安装。

另外,如果想要额外安装一些 contrib 模块的话,可以选择全量安装:

1
pip3 install opencv-contrib-python

更多安装说明可以参考:https://github.com/opencv/opencv-python。

验证安装

安装完成之后,可以在 Python 命令行下测试。

1
2
$ python3
>>> import cv2

如果没有错误报出,则证明库已经安装好了。

安装配置

PyTorch 是当今非常火爆的深度学习框架。

相关链接

安装方法

PyTorch 适配的平台有很多,官方也提供了安装教程,可以参考 https://pytorch.org/get-started/locally/,

打开之后可以看到有好多选项配置,让我们选择我们当前的环境是怎样的,如图所示:

比如这里我们可以选择版本、操作系统、包工具、开发语言、GPU 环境等等,选择之后,最后就会显示一条命令,比如这里的命令就是:

1
pip3 install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html

这样的话我们只需要运行这条命令,那就可以在 Linux 上使用 pip 安装适配 CUDA 11.1 的 PyTorch 库了。

更详细的安装配置可以参考:https://pytorch.org/get-started/locally/。

安装配置

Playwright 是微软开源的自动化测试工具,也可以用作网络爬虫。

相关链接

安装方法

pip 安装

推荐使用 pip3 安装,命令如下:

1
2
3
pip3 install --upgrade pip
pip3 install playwright
playwright install

命令执行完毕之后即可完成安装,其中最后一条命令,Playwright 会完成一些初始化的工作,比如下载必要的浏览器和配置对应驱动、环境变量等。

conda 安装

也可以使用 conda 安装,安装命令如下:

1
2
3
4
conda config --add channels conda-forge
conda config --add channels microsoft
conda install playwright
playwright install

效果是一样的。

验证安装

安装完成之后,可以在 Python 命令行下测试。

1
2
$ python3
>>> import playwright

如果没有错误报出,则证明库已经安装好了。

安装配置

MongoDB 是由 C++ 语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似 Json 对象,它的字段值可以包含其他文档,数组及文档数组,非常灵活。

MongoDB 支持多种平台,包括 Windows、Linux、Mac OS、Solaris 等,在其官方网站均可找到对应的安装包,https://www.mongodb.com/download-center

本节我们来看下它的安装过程。

相关链接

安装方法

Windows 下的安装

直接在官网下载安装包即可,链接为:https://www.mongodb.com/try/download/community,页面如图所示:

直接点击 Download 下载 msi 安装包即可。

下载完成之后双击开始安装,如图所示:

后面的安装模式选择 Complete 即可,如图所示:

点击之后可以看到一些 MongoDB 安装配置,如 data 文件夹、log 文件夹都在哪里,还有是否把 MongoDB 安装成系统服务,如图所示:

一直点击下一步安装即可。

安装完毕之后 MongoDB 也会被注册成一个 Windows 服务,而且已经启动,如图所示:

这里我们可以控制服务的开关,即 MongoDB 服务的开关。

这样 Windows 下 MongoDB 配置就完成了。

Linux 下的安装

完整的安装教程请参考:https://docs.mongodb.com/manual/administration/install-on-linux/,如下内容仅作参考。

在这里以 MongoDB 5.0 为例说明 MongoDB 的安装过程。

Ubuntu

首先导入 MongoDB 的 GPG Key:

1
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -

随后创建 apt-get 源列表,各个系统版本对应的命令如下:

  • Ubuntu 20.04
1
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
  • Ubuntu 18.04
1
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

随后更新 apt-get 源:

1
sudo apt-get update

之后安装 MongoDB 即可:

1
sudo apt-get install -y mongodb-org

安装完成之后运行 MongoDB,命令如下:

1
sudo systemctl start mongod

运行命令之后 MongoDB 就在 27017 端口上运行了,数据文件会保存在 /data/db 路径下。

一般我们在 Linux 上配置 MongoDB 都是为了远程连接使用的,所以在这里还需要配置一下 MongoDB 的远程连接和用户名密码:

接着我们进入到 MongoDB 命令行:

1
mongo --port 27017

现在我们就已经进入到 MongoDB 的命令行交互模式下了,在此模式下运行如下命令:

1
2
3
4
5
6
7
8
9
10
11
12
> use admin
switched to db admin
> db.createUser({user: 'admin', pwd: 'admin123', roles: [{role: 'root', db: 'admin'}]})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}

这样我们就创建了一个用户名为 admin,密码为 admin123 的用户,赋予最高权限。

随后需要修改 MongoDB 的配置文件,

执行如下命令:

1
sudo vi /etc/mongod.conf

修改 net 部分为:

1
2
3
net:
port: 27017
bindIp: 0.0.0.0

这样配置后 MongoDB 可被远程访问。

另外还需要添加如下权限认证配置,直接添加如下内容到配置文件:

1
2
security:
authorization: enabled

配置完成之后我们需要重新启动 MongoDB 服务,命令如下:

1
sudo service mongod restart

这样远程连接和权限认证就配置完成了。

CentOS、RedHat

首先添加 MongoDB 源:

1
sudo vi /etc/yum.repos.d/mongodb-org.repo

修改为如下内容保存:

1
2
3
4
5
6
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc

然后执行 yum 命令安装:

1
sudo yum install mongodb-org

启动 MongoDB 服务:

1
sudo systemctl start mongod

停止和重新加载 MongoDB 服务:

1
2
sudo systemctl stop mongod
sudo systemctl reload mongod

有关远程连接和认证配置可以参考上文,方式是相同的。

更多 Linux 发行版的 MongoDB 安装方式可以参考官方文档:https://docs.mongodb.com/manual/administration/install-on-linux/。

Mac 下的安装

完整安装说明请参考:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/,如下内容仅作参考。

首先确保一些依赖库已经正确安装了,运行如下命令:

1
xcode-select --install

推荐使用 Homebrew 安装,执行 brew 命令即可:

1
2
brew tap mongodb/brew
brew install mongodb-community@5.0

然后创建一个新文件夹 /data/db,用于存放 MongoDB 数据。

启动 MongoDB 服务:

1
brew services start mongodb-community@5.0

这样就启动了 MongoDB 服务。

停止、重启 MongoDB 服务的命令:

1
2
brew services stop mongodb-community@5.0
brew services restart mongodb-community@5.0

可视化工具

在这里推荐一个可视化工具 RoboMongo/Robo 3T,使用简单,功能强大,官方网站:https://robomongo.org/,三大平台都有支持,下载链接:https://robomongo.org/download

另外还有一个简单易用的可视化工具,Studio 3T,同样具有方便的图形化管理,官方网站:https://studio3t.com,同样支持三大平台,下载链接:https://studio3t.com/download/

安装配置

Splash 是一个 JavaScript 渲染的工具,本节来介绍一下它的安装方式。

准备工作

Splash 建议的安装方式是通过 Docker,安装是通过 Docker 安装,在这之前请确保已经正确安装好了 Docker,可以参考:https://setup.scrape.center/docker。

安装

有了 Docker,只需要一键启动 Splash 即可,命令如下:

1
docker run -p 8050:8050 scrapinghub/splash

安装完成之后会有类似的输出结果:

这样就证明 Splash 已经在 8050 端口上运行了。

这时我们打开:http://localhost:8050 即可看到 Splash 的主页,如图所示:

当然 Splash 也可以直接安装在远程服务器上,我们在服务器上运行以守护态运行 Splash 即可,命令如下:

1
docker run -d -p 8050:8050 scrapinghub/splash

在这里多了一个 -d 参数,它代表将 Docker 容器以守护态运行,这样在中断远程服务器连接后不会终止 Splash 服务的运行。

完毕!

安装配置

MySQL 是一个轻量级的关系型数据库,以表的形式来存储数据,本节我们来了解下它的安装方式。

相关链接

Windows 下的安装

对于 Windows 来说,最安全稳妥的方式就是直接到官网下载安装包进行安装。可以访问官方网站下载,https://dev.mysql.com/downloads/mysql/,如图所示:

点击最大的 MySQL Installer 即可,然后选择第二个选项 - mysql-installer-community-8.0.26.0.msi 下载即可,如图所示:

此时会要求登录 MySQL 的账号,这里可以登录或者选择直接下载,如图所示:

下载之后会得到一个 msi 后缀的安装文件,直接双击运行安装,直接选择默认选项点击下一步安装即可,如图所示:

这里直接选择默认选项即可,然后点下一步。

下一页需要确认下需要安装的内容,如图所示:

保持默认配置即可,然后点击 Execute 即可。

安装完成之后 MySQL Installer 会引导我们进行一些配置,如图所示:

此页面需要配置一些网络环境和端口,保持默认即可,点击下一步。

下一步是使用怎样的密码加密方式,如图所示:

这里也是使用默认配置即可,可以点击下一步。

下一步就是配置用户名和密码,这里我们可以配置 Root 账户的密码,也可以自定义用户来配置,如图所示:

输入密码之后,点击下一步即可。

接下来就是服务的配置,这里默认配置是把 MySQL 服务配置成 Windows 服务中,而且在每次系统启动的时候都自动启动 MySQL 服务,如图所示:

如果我们想要每次开机的时候都自动启用 MySQL 服务,那我们可以勾选上 Start the MySQL Server at System Startup,否则勾选,配置好了之后点击下一步即可。

最后一步就是应用刚才的服务,使得服务生效,如图所示:

这里我们直接点击 Execute 即可。

安装之后我们会发现刚才还附带安装了一个 MySQL Workbench,就是 MySQL 可视化管理的客户端,如图所示:

这里可以发现已经添加了一个本地的 MySQL 服务的连接,双击即可连接。

连接之后我们还可以选中某个数据库的某个表,选择查看数据的选项 Select Rows,查看表中中的前 100 条数据,这样数据就被查询出来了,如图所示:

安装完成之后我们可以在电脑-管理-服务页面开启和关闭 MySQL 服务,如图所示:

如果启动了 MySQL 服务,那么我们就可以使用它来进行数据存储了。

Linux 下的安装

下面仍然分不同平台进行介绍。

Ubuntu、Debian、Deepin

直接使用 apt-get 命令即可下载安装:

1
2
sudo apt-get update
sudo apt-get install -y mysql-server mysql-client

在安装过程中会提示输入用户名密码,输入之后等待片刻即可完成安装。

启动、关闭、重启 MySQL 服务命令:

1
2
3
sudo service mysql start
sudo service mysql stop
sudo service mysql restart

CentOS、RedHat

完整的安装说明可以参考:https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-centos-7

以 MySQL 5.7 的 Yum 源为例,如果需要更高版本可以另寻,安装命令如下:

1
2
3
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install -y mysql mysql-server

运行如上命令即可完成安装,初始密码为空。接下来需要启动 MySQL 服务。

启动 MySQL 服务命令:

1
sudo systemctl start mysqld

停止、重启命令:

1
2
sudo systemctl stop mysqld
sudo systemctl restart mysqld

以上我们就完成了 Linux 下 MySQL 的安装,安装完成之后可以修改密码,可以执行如下命令:

1
mysql -uroot -p

输入密码后进入 MySQL 命令行模式。

1
2
3
use mysql;
UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
FLUSH PRIVILEGES;

命令中 newpass 即为修改的新的 MySQL 密码,请自行替换。

由于 Linux 一般会作为服务器使用,为了使得 MySQL 可以被远程访问,我们需要修改 MySQL 的配置文件,配置文件路径一般为 /etc/mysql/my.cnf。

如使用 vi 进行修改的命令如下:

1
vi /etc/mysql/my.cnf

取消此行的注释:

1
bind-address = 127.0.0.1

此行限制了 MySQL 只能本地访问而不能远程访问,取消注释即可解除此限制。

修改完成之后重启 MySQL 服务,这样 MySQL 就可以被远程访问了。

到此为止,Linux 下安装 MySQL 的过程结束。

Mac 下的安装

推荐使用 Homebrew 安装,执行 brew 命令即可。

1
brew install mysql

启动、停止、重启 MySQL 服务的命令:

1
2
3
sudo mysql.server start
sudo mysql.server stop
sudo mysql.server restart

Mac 一般不会作为服务器使用,如果要想取消本地 host 绑定,同样修改 my.cnf 文件,然后重启服务即可。

安装配置

Appium 是移动端的自动化测试工具,类似于前面所说的 Selenium,利用它我们可以驱动 Android、iOS 等设备完成自动化测试,比如模拟点击、滑动、输入等操作,其官方网站为:http://appium.io/,本节来了解一下 Appium 的安装方式。

相关链接

安装 Appium

首先我们需要安装 Appium,Appium 负责驱动移动端来完成一系列操作,对 iOS 设备来说,它使用苹果的 UIAutomation 来实现驱动,对于 Android 来说,它使用 UiAutomator 和 Selendroid 来实现驱动。

同时 Appium 也相当于一个服务器,我们可以向 Appium 发送一些操作指令,Appium 就会根据不同的指令对移动设备进行驱动,完成不同的动作。

安装 Appium 有两种方式,一种是直接下载安装包 Appium Desktop 来安装,另外一种是通过 Node.js 来安装,下面我们各自介绍一下两种安装方式。

Appium Desktop

Appium Desktop 支持全平台的安装,我们直接从 GitHub 的 Releases 里面安装即可,链接为:https://github.com/appium/appium-desktop/releases,目前的最新版本是 1.22,最新版本以网站为准,下载页面如图所示:

Windows 平台可以下载 exe 安装包如 Appium-Server-GUI-windows-1.22.0.exe,Mac 平台可以下载 dmg 安装包如 Appium-Server-GUI-mac-1.22.0.dmg,Linux 平台可以选择下载源码,但是更推荐用下文的 Node.js 安装方式。

安装完成之后运行之后页面如图所示:

如果出现此页面则证明安装成功。

Node.js

首先需要安装 Node.js,具体的安装方式可以参见:http://www.runoob.com/nodejs/nodejs-install-setup.html,安装完成之后就可以使用 npm 命令了。

接下来使用 npm 命令全局安装 Appium 即可,命令如下:

1
npm install -g appium

等待命令执行执行完成即可,这样就成功安装了 Appium。

Android 开发环境配置

如果我们要使用 Android 设备做 App 抓取的话,还需要下载和配置 Android SDK,在这里推荐直接安装 Android Studio,其下载地址为:https://developer.android.com/studio/index.html?hl=zh-cn,下载之后直接安装即可。

完成之后我们还需要下载 Android SDK,直接打开首选项里面的 Android SDK 设置页面,勾选要安装的 SDK 版本,点击确定即可开始下载和安装勾选的 SDK 版本,如图所示:

另外还需要配置一下环境变量,添加 ANDROID_HOME 为 Android SDK 所在路径,然后再添加 SDK 文件夹下的 tools 和 platform-tools 文件夹到 PATH 中。

更详细的配置可以参考 Android Studio 的官方文档:https://developer.android.com/studio/intro/index.html

iOS 开发环境配置

首先需要声明的是,Appium 是一个做自动化测试的工具,用它来测试我们自己开发的 App 是完全没问题的,它携带的是开发者证书(Development Certificate)。但如果我们想拿 iOS 设备来做数据爬取的话又是另外一回事了,一般我们做数据爬取都是使用现有的 APP,在 iOS 上一般都是通过 App Store 下载的,它携带的是分发证书(Distribution Certificate),而携带这种证书的应用都是禁止被测试的,所以只有获取 ipa 安装包再重新签名之后才可以被 Appium 测试,具体的方法不再展开阐述,如感兴趣可以搜索相关资料。

因此在这里推荐直接使用 Android 来进行测试,如果你可以完成上述操作重签名操作,那么可以参考如下内容配置 iOS 开发环境。

Appium 驱动 iOS 设备必须要在 Mac 下进行,Windows 和 Linux 是平台是无法完成的,下面只介绍一下 Mac 平台的相关配置。

Mac 平台需要的配置如下:

  • Mac OS X 10.12 及更高版本
  • XCode 8 及更高版本

配置满足要求之后执行如下命令即可配置开发依赖的一些库和工具:

1
xcode-select --install

这样 iOS 部分开发环境就配置完成了,我们就可以用 iOS 模拟器来进行测试和数据抓取了。

如果想要用真机进行测试和数据抓取,还需要额外配置一下其他的环境,可以参考:https://github.com/appium/appium/blob/master/docs/en/appium-setup/real-devices-ios.md

结语

以上是 Appium 开发环境的搭建,在后文我们会用它来抓取微信朋友圈的内容。

安装配置

Docker 是一种容器技术,它可以将应用和环境等进行打包,形成一个独立的,类似于 iOS 的 APP 形式的「应用」,这个应用可以直接被分发到任意一个支持 Docker 的环境中,通过简单的命令即可启动运行。Docker 是一种最流行的容器化实现方案。和虚拟化技术类似,它极大的方便了应用服务的部署;又与虚拟化技术不同,它以一种更轻量的方式实现了应用服务的打包。使用 Docker 可以让每个应用彼此相互隔离,在同一台机器上同时运行多个应用,不过他们彼此之间共享同一个操作系统。Docker 的优势在于,它可以在更细的粒度上进行资源的管理,也比虚拟化技术更加节约资源。

本段参考:DaoCloud 官方文档

对于爬虫来说,如果我们需要大规模部署爬虫系统的话,用 Docker 会大大提高效率,工欲善其事,必先利其器。

本节来介绍一下三大平台下 Docker 的安装方式。

相关链接

Windows 下的安装

如果你的系统是 Windows10 64 位,那么推荐使用 Docker for Windows,直接从 Docker 官方网站下载最新的 Docker for Windows 安装包即可:https://docs.docker.com/docker-for-windows/install/

如果不是 Windows10 64 位系统,则可以下载 Docker Toolbox:https://docs.docker.com/toolbox/toolbox_install_windows/

安装包下载之后直接双击安装即可,安装详细过程可以参考文档说明,安装完成之后,进入命令行。

运行 Docker 命令测试:

1
docker

运行结果如图所示:

如果出现类似上述输出就证明 Docker 安装成功了。

Linux 下的安装

详细的分步骤的安装说明可以参见官方文档:https://docs.docker.com/engine/installation/linux/ubuntu/

在官方文档中详细说明了不同 Linux 系统的安装方法,安装流程根据文档一步步执行即可安装成功。

但是为了使得安装更加方便,Docker 官方还提供了一键安装脚本,使用它会使得安装更加便捷,不用再去一步步执行命令安装了,在此介绍一下一键脚本安装方式。

首先是 Docker 官方提供的安装脚本,相比其他脚本,官方提供的一定更靠谱,安装命令如下:

1
curl -sSL https://get.docker.com/ | sh

只要执行如上一条命令,等待一会儿 Docker 便会安装完成,非常方便。

但是官方脚本安装有一个缺点,那就是慢,也可能下载超时,所以为了加快下载速度,我们可以使用国内的镜像来安装,所以在这里还有阿里云和 DaoCloud 的安装脚本。

阿里云安装脚本:

1
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

DaoCloud 安装脚本:

1
curl -sSL https://get.daocloud.io/docker | sh

两个脚本可以任选其一,速度都非常不错。

等待脚本执行完毕之后,就可以使用 Docker 相关命令了,如运行测试 Hello World 镜像:

1
docker run hello-world

运行结果:

1
2
3
4
5
6
7
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.

如果出现上文类似提示内容则证明 Docker 可以正常使用了。

Mac 下的安装

Mac 平台同样有两种选择,Docker for Mac 和 Docker Toolbox。

Docker for Mac 要求系统为 OS X EI Captain 10.11 或更新,至少 4GB 内存,如果你的系统满足此要求,则强烈建议安装 Docker for Mac。

可以使用 HomeBrew 安装,安装命令如下:

1
brew cask install docker

另外也可以手动下载安装包安装,安装包下载地址为:https://download.docker.com/mac/stable/Docker.dmg

下载完成之后直接双击安装包,然后将程序拖动到应用程序中即可。

点击程序图标运行 Docker,会发现在菜单栏中出现了 Docker 的图标,如图中的第三个小鲸鱼图标:

点击图标展开菜单之后,再点击 Start 按钮即可启动 Docker,启动成功便会提示 Docker is running,如图所示:

随后我们就可以在命令行下使用 Docker 命令了。

可以使用如下命令测试运行:

1
sudo docker run hello-world

运行结果如图所示:

如果出现类似输出则证明 Docker 已经成功安装。

如果系统不满足要求,可以下载 Docker Toolbox,其安装说明为:https://docs.docker.com/toolbox/overview/

关于 Docker for Mac 和 Docker Toolbox 的区别,可以参见:https://docs.docker.com/docker-for-mac/docker-toolbox/

镜像加速

安装好 Docker 之后,在运行测试命令时,我们会发现它首先会下载一个 Hello World 的镜像,然后将其运行,但是下载速度有时候会非常慢,这是因为它默认还是从国外的 Docker Hub 下载的,所以为了提高镜像的下载速度,我们还可以使用国内镜像来加速下载,所以这就有了 Docker 加速器一说。

推荐的 Docker 加速器有 DaoCloud 和阿里云。

DaoCloud:https://www.daocloud.io/mirror

阿里云:https://cr.console.aliyun.com/#/accelerator

不同平台的镜像加速方法配置可以参考 DaoCloud 的官方文档:http://guide.daocloud.io/dcs/daocloud-9153151.html

配置完成之后,可以发现镜像的下载速度会快非常多。

以上便是 Docker 的安装方式说明。

安装配置

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

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

本节我们来了解一下 mitmproxy、mitmdump、mitmweb 的安装方式。

相关链接

pip 安装

最简单的安装方式还是使用 pip,直接执行如下命令即可安装:

1
pip3 install mitmproxy

这是最简单和通用的安装方式,执行完毕之后即可完成 mitmproxy 的安装,另外还安装了 mitmdump、mitmweb 两个组件,如果不想用此种方式安装也可以选择下文列出的专门针对各个平台的安装方式或者 Docker 安装方式。

Windows 下的安装

可以到 https://mitmproxy.org/ 获取安装包,如图所示:

下载之后直接双击安装包即可安装。

注意在 Windows 上不支持 mitmproxy 的控制台接口,但是可以使用 mitmdump 和 mitmweb。

Linux 下的安装

Linux 可以下载编译好的二进制包,此发行包一般是最新版本,它包含了最新版本的 mitmproxy 和内置的 Python3 环境还有最新的 OpenSSL 环境。

如果你的环境里没有 Python3 和 OpenSSL 环境,建议使用此种方式安装,如图所示,下载安装包即可:

下载之后需要解压然后将其配置到环境变量。

1
2
tar -zxvf mitmproxy-*-linux.tar.gz
sudo mv mitmproxy mitmdump mitmweb /usr/bin

这样就可以将三个可执行文件移动到了 /usr/bin 目录,而一般 /usr/bin 目录都已经配置在了环境变量下,所以接下来我们就可以直接调用这三个工具了。

Mac 下的安装

Mac 的安装非常简单,使用 HomeBrew 即可,命令如下:

1
brew install mitmproxy

执行命令后即可完成 mitmproxy 的安装。

Docker 安装

mitmproxy 也支持 Docker,其 Docker Hub 的地址为:https://hub.docker.com/r/mitmproxy/mitmproxy/

Docker 下 mitmproxy 的安装命令为:

1
docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy mitmdump

这样就在 8080 端口上启动了 mitmproxy 和 mitmdump。

如果想要获取 CA 证书,可以选择挂载磁盘选项,命令如下:

1
docker run --rm -it -v ~/.mitmproxy:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy mitmdump

这样可以在 ~/.mitmproxy 目录找到 CA 证书。

另外还可以在 8081 端口上启动 mitmweb,命令如下:

1
docker run --rm -it -p 8080:8080 -p 127.0.0.1:8081:8081 mitmproxy/mitmproxy mitmweb

更多启动方式可以参考 Docker Hub 的安装说明。

证书配置

对于 mitmproxy 来说,如果想要截获 HTTPS 请求,我们就需要设置证书,mitmproxy 在安装后会提供一套 CA 证书,只要客户端信任了 mitmproxy 提供的证书,我们就可以通过 mitmproxy 获取 HTTPS 请求的具体内容,否则 mitmproxy 是无法解析 HTTPS 请求的。

首先运行一下命令产生 CA 证书,启动 mitmdump 即可:

1
mitmdump

这样即可启动 mitmdump,接下来我们就可以在用户目录下的 .mitmproxy 目录里面找到 CA 证书,如图所示:

证书一共五个,下面是对这五个证书的说明:

名称 描述
mitmproxy-ca.pem PEM 格式的证书私钥
mitmproxy-ca-cert.pem PEM 格式证书,适用于大多数非 Windows 平台
mitmproxy-ca-cert.p12 PKCS12 格式的证书,适用于 Windows 平台
mitmproxy-ca-cert.cer 与 mitmproxy-ca-cert.pem 相同,只是改变了后缀,适用于部分 Android 平台
mitmproxy-dhparam.pem PEM 格式的秘钥文件,用于增强 SSL 安全性

下面我们介绍一下 Windows、Mac、iOS、Android 平台下的证书配置过程。

Windows

双击 mitmproxy-ca.p12,就会出现导入证书的引导页,如图所示:

直接点击下一步即可,接下来会出现密码设置提示,如图所示:

不需要设置密码,直接点击下一步即可。

接下来需要选择证书的存储区域,如图所示:

点击第二个选项“将所有证书放入下列存储”,然后点击浏览,再选择证书存储位置为“受信任的根证书颁发机构”,确定,点击下一步。

最后如果有安全警告均点击“是”即可,如图所示:

这样就配置完成 Windows 下信任 CA 证书了。

Mac

Mac 下双击 mitmproxy-ca-cert.pem 即可弹出钥匙串管理页面,然后找到 mitmproxy 证书,点击打开其设置选项,选择始终信任即可,如图所示:

这样就配置完成 Mac 下信任 CA 证书了。

iOS

将 mitmproxy-ca-cert.pem 文件发送到 iPhone 上,推荐使用邮件的方式发送,iPhone 上可以直接点击附件并识别安装,如图所示:

点击之后会跳到安装描述文件的页面,点击右上角的安装按钮即可安装,此处会有警告提示,如图所示:

继续点击右上角的安装即可,安装成功之后会有已安装的提示,如图所示:

如果你的 iOS 版本是 10.3 以下的话,此处信任 CA 证书的流程就已经完成了。

如果你的 iOS 版本是 10.3 及以上,还需要在设置->通用->关于本机->证书信任设置将证书添加完全信任,如图所示:

在这里将 mitmproxy 的完全信任开关打开即可。

这样 iOS 上配置信任 CA 证书的流程就结束了。

Android

Android 手机同样需要将证书 mitmproxy-ca-cert.pem 文件发送到手机上,例如直接拷贝文件。

接下来点击证书便会出现一个提示窗口,如图所示:

这时输入证书的名称,然后点击确定即可完成安装。

结语

本节我们了解了 mitmproxy、mitmdump、mitmweb 的安装方式。

安装配置

安装好了 Scrapyd 之后,我们可以直接请求它提供的 API 即可获取当前主机的 Scrapy 任务运行状况。

如某台主机的 IP 为 192.168.1.1,则可以直接运行如下命令获取当前主机的所有 Scrapy 项目:

1
curl http://localhost:6800/listprojects.json

运行结果:

1
{"status": "ok", "projects": ["myproject", "otherproject"]}

返回结果是 JSON 字符串,通过解析这个字符串我们便可以得到当前主机所有项目。

但是用这种方式来获取任务状态还是有点繁琐,所以 ScrapydAPI 就为它做了一层封装,下面我们来看下它的安装方式。

相关链接

pip 安装

推荐使用 Pip 安装,命令如下:

1
pip install python-scrapyd-api

验证安装

安装完成之后便可以使用 Python 来获取主机状态了,所以如上的操作便可以用 Python 代码实现:

1
2
3
from scrapyd_api import ScrapydAPI
scrapyd = ScrapydAPI('http://localhost:6800')
print(scrapyd.list_projects())

运行结果:

1
["myproject", "otherproject"]

这样我们便可以用 Python 直接来获取各个主机上 Scrapy 任务的运行状态了。

安装配置

Gerapy 是一个 Scrapy 分布式管理模块,本节来介绍一下 Gerapy 的安装方式。

相关链接

pip 安装

推荐使用 pip 安装,命令如下:

1
pip3 install gerapy

测试安装

安装完成之后,可以在 Python 命令行下测试。

1
2
$ python3
>>> import gerapy

如果没有错误报出,则证明库已经安装好了。