1.4 常用软件的安装
在本节中,我们将学习如何安装书中用到的软件。
1.4.1 nginx
nginx是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务,其优点是内存占用少、并发能力强、稳定性高。nginx是跨平台的,它可以在大多数类UNIX系统上运行,同时也支持Windows系统。
相关链接
❑ nginx官方网站:http://nginx.org/。
❑ nginx安装介绍:http://nginx.org/en/docs/install.html。
Ubuntu系统的软件仓库中已经包含了nginx的安装包,所以我们可以直接用如下命令安装它:
sudo apt-get install nginx
如果安装过程中未报错,则代表nginx安装成功。
nginx的启动命令为:
$ sudo systemctl start nginx.service
命令执行后,打开浏览器并访问http://localhost即可看到如图1-23所示的nginx欢迎页面。
图1-23 nginx欢迎页面
图1-23代表nginx安装成功并正常运行。我们还可以使用如下命令将它设置为开机启动:
$ sudo systemctl enable nginx.service
执行该命令后,如果控制台显示如下信息:
Synchronizing state of nginx.service with SysV service script with /lib/systemd/ systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable nginx
就代表nginx开机启动设置成功。
1.4.2 Charles
Charles是一个HTTP代理与监视软件,方便开发人员查看手机和Internet之间的所有HTTP和HTTPS网络记录,包括请求、响应和含有Cookie及缓存信息的HTTP头。需要注意的是,Charles是一个收费软件,它提供了30天的免费试用时间。实际上,即使过了试用期,也可以继续使用,但每次使用的持续时长不能超过30分钟。因此,有时候会出现软件自动关闭的情况。
提示抓包工作将在Windows系统中完成,所以Charles的安装和运行都在Windows系统中。
相关链接
❑ Charles 官方网站:https://www.charlesproxy.com/。
❑ Charles 下载网址:https://www.charlesproxy.com/download/。
我们可以在Charles官网下载最新的版本,其下载页面如图1-24所示。
图1-24 Charles下载页面
在图1-24中选择操作系统对应的安装包,如Windows 64 bit,然后按照默认选择安装即可。
1.4.3 PC端 SSL 证书
Charles软件安装在Windows系统中,所以SSL证书的安装工作也在Windows系统中进行。打开Charles软件,点击菜单栏中的Help选项,并在弹出的列表中选择SSL Proxying→Install Charles Root Certificate,如图1-25所示,此时会弹出如图1-26所示的Windows证书安装引导界面。
图1-25 Help菜单及其选项
图1-26 Windows证书安装引导界面
点击“安装证书”按钮,在“证书导入向导”界面的“存储位置”框中选择“本地计算机”,如图1-27所示。
图1-27 “证书导入向导”界面
接着在“证书存储”界面中选择“将所有的证书都放入下列存储”,如图1-28所示。
图1-28 “证书存储”界面
点击“浏览”按钮,在弹出的证书存储列表中选择“受信任的根证书颁发机构”,如图1-29所示。
图1-29 证书存储列表
点击“确定”后,按照向导指引完成其他的确认选项,操作完毕后会弹出导入结果。至此,Windows操作系统中的Charles SSL证书安装完毕。
除在计算机中安装SSL证书之外,我们还需要在手机端安装证书。下面介绍iOS系统和Andriod系统中的证书安装步骤,读者可根据所用的操作系统进行操作。
1.4.4 iOS 系统的证书设置
在安装证书之前,请确认以下事项。
❑ 手机与计算机处于同一网络。
❑ 按照上一节的指引安装SSL证书。
❑ 为手机设置网络代理,代理IP为计算机IP,端口号为8888。
打开浏览器并访问http://chls.pro/ssl,该页面是Charles SSL证书的下载页。访问该页面后,会自动下载SSL证书。证书下载完成后,点击证书文件即可进入安装环节。
安装工作完成后,需要将证书添加到操作系统的信任列表中。iOS官网给出了具体的操作方法(详见https://support.apple.com/en-nz/HT204477)。
当安装通过电子邮件发送给您或从网站下载的配置文件时,必须手动打开SSL信任。请转至“设置”→“常规”→“关于”→“证书信任设置”,在“为根证书启用完全信任”下,启用证书的信任。
苹果官网的英文版证书启用界面如图1-30所示,我们只需要启用名为Charles Proxy CA的证书的信任即可。
图1-30 iOS证书启用界面
1.4.5 Andriod 模拟器的安装与证书设置
Android模拟器是一个能够在计算机上运行Android系统的应用软件。常见的Android模拟器有网易MuMu模拟器和夜神模拟器,这两款模拟器中的Android操作系统版本号均低于7,完全符合我们的需求。由于它们只能在Windows操作系统或macOS操作系统上运行,所以本书将以Windows操作系统作为演示平台。
提示选择使用Android模拟器而不是Andriod手机的原因是:新版Andriod系统的安全防护策略级别较高,而我们需要在低版本的系统中对软件应用进行抓包。具体原因将在第8章中详细介绍。
前往网易MuMu模拟器官方网站(详见http://mumu.163.com/)下载该模拟器的安装文件,然后双击该文件开始安装,安装界面如图1-31所示。
图1-31 网易MuMu模拟器安装界面
安装时既可以根据个人需求选择“自定义安装”,也可以按照推荐选项选择“快速安装”。安装完成后选择“启动MuMu模拟器”,启动后的界面如图1-32所示。
图1-32 网易MuMu模拟器界面
接下来,我们需要在模拟器启动的Android系统中安装Charles SSL证书。在桌面的“系统应用”中找到并打开“设置”,然后在“设置”界面中选择WLAN,之后会进入如图1-33所示的网络设置界面。
图1-33 网络设置界面
该界面中只有1个网络,用鼠标长按可选择该网络(因为单击无法触发网络设置面板,所以需要长按),并在弹出的网络设置面板中选择“修改网络”,如图1-34所示。
图1-34 网络设置面板
在设置代理前,我们需要查看本机的IP地址,然后将该IP地址填入网络代理配置面板的“代理服务器主机名”中,并在下方的“代理服务器端口”处填写“8888”。本书案例所用计算机的IP地址为192.168.100.18,对应的网络代理配置面板如图1-35所示。
图1-35 网络代理配置面板
保存网络代理配置后,我们就可以在模拟器中下载对应的SSL证书了。回到模拟器主界面,打开浏览器并访问http://chls.pro/ssl,该页面是Charles SSL证书的下载页。如图1-36所示,浏览器访问该页面后,会自动下载SSL证书。
图1-36 浏览器下载SSL证书
MuMu模拟器内置的浏览器在下载文件时,界面左上角会出现下载图标,点击它就可以看到下载的文件。图1-36中的getssl-1.crt就是我们刚才访问SSL证书下载页面时下载的证书。点击该证书文件,然后按照系统提示继续安装即可。
1.4.6 Postman
Postman是一个完整的API开发环境,因简单易用而深受广大开发者的欢迎,我们可以使用它模拟浏览器向服务器端发起网络请求。Postman提供了非常简单的参数配置界面,这在很大程度上缩减了我们在请求模拟和参数构造上所花费的时间,从而能够更好地把重心放在业务逻辑上。
相关链接
❑ Postman 官网:https://www.getpostman.com/。
❑ Postman 下载地址:https://www.getpostman.com/downloads。
Postman官网会根据我们所用的操作系统给出对应版本的下载链接,如图1-37所示,这里选择Windows x64即可。
图1-37 Postman官网的下载界面
下载完成后将压缩包解压,进入Postman目录,找到名为Postman的可执行文件并双击打开,如图1-38所示,界面左侧是请求记录列表,右侧是操作区域。
图1-38 Postman软件界面
我们可以通过一个例子来学习如何使用Postman。假如现在需要向www.example.com网站发起GET请求,并且将本次请求所用请求头中的User-Agent头域设置为Python,Referer头域设置为http://www.huawei.com。那么只需要在右侧上半部分的URL框中输入网址www.example.com,然后在右侧中部选择Headers选项卡,接着在文本框中设置User-Agent和Referer的头域名称以及对应的值,如图1-39所示。
图1-39 Headers选项卡
最后点击旁边的Send按钮即可。除了以上所填写的请求头信息之外,还可以添加其他请求头信息。在请求发送后,右侧下半部分会显示本次请求得到的响应。响应内容包括状态码、请求耗时、响应正文和响应头信息等。本次请求得到的响应正文如图1-40所示。
图1-40 响应正文
1.4.7 Google Chrome
Google Chrome(简称Chrome)是一款由Google公司开发的网页浏览器,其内置的开发者工具是一套Web开发和调试工具,能够对网站进行迭代、调试和分析。我们可以通过Chrome开发者工具观察真实上网环境的网络请求和资源加载信息,甚至可以对页面中的JavaScript进行调试。
Chrome官网详见https://www.google.cn/intl/zh-CN/chrome/,如图1-41所示,点击“下载Chrome”按钮,并在弹出的下载页面选择“64位.deb”安装包。
图1-41 Chrome官网
安装包下载完成后,Ubuntu软件会自动弹出安装提示,此时只需要点击“安装”按钮即可。安装完成后,Chrome的快捷方式会自动添加到应用列表中。
Chrome开发者工具又称调试工具,在Chrome浏览器中可以通过快捷键F12唤起,如图1-42所示。
图1-42 开发者工具界面
开发者工具界面是面板风格布局,面板及对应功能如下。
❑ 元素面板Elements:检查和调整页面,编辑样式和DOM。
❑ 控制台面板Console:记录调试信息或者使用它作为shell在页面上与JavaScript交互。
❑ 源代码面板Sources:断点调试、实时编辑。
❑ 网络面板Network:记录请求信息及资源加载情况。
❑ 性能面板Performance:记录和查看网站生命周期内发生的各种事件。
❑ 内存面板Memory:跟踪内存信息。
❑ 应用面板Application:检查加载的所有资源,包括本地和会话存储、Cookie、应用程序缓存、图像、字体和样式表。
❑ 安全面板Security:调试混合内容问题和证书问题等。
❑ 审计面板Audits:分析网页内容加载过程,检测网页性能。
最常用到的是网络面板、元素面板和源代码面板。我们可以通过一个例子来了解开发者工具和面板的用法。在已唤起开发者工具的情况下,用鼠标点击Network,然后在浏览器地址栏中输入http://www.example.com并敲击回车键。此时观察网络面板的变化,可以看到网络面板中多了两条记录,如图1-43所示。
图1-43 网络面板中的网络请求记录
从记录中能够看到本次请求的地址、响应状态码和响应内容类型等。如果想要查看更详细的信息,则需要点击具体记录的Name列。点击后,网络面板会自动分为左右两栏,如图1-44所示,左侧是请求记录列表,右侧是单条请求记录的请求信息与响应信息。
图1-44 网络面板中的请求与响应信息
右侧面板中的Headers中记录着请求总览信息、请求头信息和响应头信息,Response中记录着本次请求获得的响应正文。
1.4.8 JADX
如果想查看Android应用的代码,就需要将该应用的APK安装包反编译成可读的代码。JADX是一款开源的APK反编译工具,我们可以用它将APK反编译成代码,其GitHub仓库地址为https://github.com/skylot/jadx。
根据JADX项目README.md文件中介绍的方法,安装和启动JADX。JADX依赖JDK 8,所以在编译安装它之前,需要先安装JDK 8。JDK是Java语言的开发工具包,JDK 8指的是该工具包的1.8.0版本。OpenJDK是JDK的开源版本,它的功能和作用与JDK相同,但安装过程非常简单。我们按照OpenJDK官网(详见http://openjdk.java.net/install/)推荐的安装方式即可。对应的安装命令为:
$ sudo apt-get install openjdk-8-jre
执行安装命令后,Ubuntu系统就会在软件仓库中安装指定的软件,这时有可能出现需要确认的选项,输入y即可。安装好JDK 8后,我们就可以编译并安装JADX了。首先使用git clone命令将JADX源码克隆到计算机中:
$ git clone https://github.com/skylot/jadx.git
接着进入JADX目录并运行构建命令:
$ cd jadx $ ./gradlew dist
项目构建完成后,就可以使用如下命令启动JADX的图形界面了:
$ cd build/jadx/ $ bin/jadx-gui lib/jadx-core-*.jar
JADX图形界面如图1-45所示。
图1-45 JADX图形界面
在图1-45中,左侧是项目目录,右侧为文件内容显示区域。在JADX菜单栏中有文件、视图、导航、工具和帮助等选项。至此,JADX软件安装完毕。