Python 3反爬虫原理与绕过实战
上QQ阅读APP看书,第一时间看更新

1.2 练习平台Steamboat

为了让读者能够按照书本所述内容进行练习,本书提供了一个练习平台(平台名为Steamboat),并将其打包成Docker镜像。该镜像包含了书中20多个示例,读者可以使用线上练习平台(详见www.porters.vip),也可以通过本节指引在个人计算机或云服务器上搭建练习平台。

本节中,我们就来学习Docker和Steamboat的安装及使用。

1.2.1 安装 Docker

Docker是一个用Go语言编写的开源的应用容器引擎,具有轻量、便捷、低开销等优点。开发者可以将应用和对应的运行环境包装到一个可移植的容器中,并发布到任何装有Docker的机器上。本书配套的练习平台Steamboat和书中所用的异步渲染服务Splash都是Docker镜像,所以我们有必要了解Docker的相关知识和基本操作。

相关链接

❑ Docker官方网站:https://www.docker.com/

❑ Docker安装介绍:https://docs.docker.com/install/

Docker引擎分为如下两种。

❑ Docker Enterprise:简称Docker EE,专为企业开发和大型IT团队而设计。

❑ Docker Community Edition:简称Docker CE,适合Docker新手和小型团队,共有3个版本。

■ Stable版,即稳定版

■ Test版,即测试版

■ Nightly版,即最新版

本书所选的Docker引擎和版本为Docker CE Stable。安装Docker CE之前,需要设置Docker存储库,对应的命令如下:

$ sudo apt-get update

在安装过程中,需要允许apt通过HTTPS协议使用存储库,对应的设置命令如下:

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

接着添加Docker官方的GPG密钥,对应命令如下:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

确认密钥添加成功的命令如下:

$ sudo apt-key fingerprint 0EBFCD88

命令执行后,终端给出以下提示:

pub    rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A   E2D8 8D81 803C 0EBF CD88
uid              [ unknown] Docker Release (CE deb) <docker@docker.com>
sub    rsa4096 2017-02-22 [S]

这说明密钥添加成功。然后添加Stable版本的存储库,对应命令如下:

$ sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

接着更新apt索引,对应命令如下:

$ sudo apt-get update

待索引更新完毕后,就可以安装Docker CE了,命令如下:

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

该命令执行后,会安装最新版的Docker CE。

安装验证

Docker CE安装完成后,并不会给出类似“安装成功”的提示。为了确认安装成功并确保Docker CE正常运行,我们可以通过运行hello-world镜像进行验证,对应命令如下:

$ sudo docker run hello-world

命令执行后,终端给出以下提示:

Hello from Docker!
This message shows that your installation appears to be working correctly.

提示中出现的Hello from Docker字样就说明Docker CE正常运行。

1.2.2 安装 Steamboat

Steamboat由以下3个Docker镜像组成。

❑ steamboat-part1,版本号为sp1,包含练习平台导航页和大部分示例。

❑ steamboat-part2,版本号为sp2,包含示例12。

❑ steamboat-part3,版本号为sp3,包含示例3。

Steamboat镜像存储在阿里云容器镜像仓库中,其下载命令为:

$sudo docker pull
registry.cn-hangzhou.aliyuncs.com/steamboat/steamboat:[镜像版本号]

其中命令中的[镜像版本号]即上方给出的sp1/sp2/sp3。镜像下载命令如下:

$ sudo docker pull
registry.cn-hangzhou.aliyuncs.com/steamboat/steamboat:sp1
$ sudo docker pull
registry.cn-hangzhou.aliyuncs.com/steamboat/steamboat:sp2
$ sudo docker pull
registry.cn-hangzhou.aliyuncs.com/steamboat/steamboat:sp3

我们可以通过如下命令检查镜像是否下载成功:

$ sudo docker images

此时控制台会输出如图1-15所示的信息。

图1-15 控制台输出

列表显示sp1、sp2和sp3这3个镜像,说明镜像下载成功。列表中的IMAGE ID为镜像ID,当我们需要启动镜像时,就会用到它。

每个镜像开放了不同的端口,对应的端口列表如下。

sp1:80、8090、8205、8207。

sp2:8202。

sp3:8206。

运行镜像时,需要为端口设置映射。例如运行sp2时,需要将宿主机的端口映射到8202,对应命令如下:

$ sudo docker run -d -p 8202:8202 0487eb7998d9

启动多个镜像时,就要运行多条命令,而且还需要设置端口映射,颇为麻烦。我们可以编写一个shell脚本runp.sh完成这些工作,其内容如下(要注意的是,每行命令最后面的字符串是IMAGE ID。ID的值有可能发生变化,这里需要填写实际的ID值,值可以通过docker images命令查看):

# sp1
sudo docker run -d -p 80:80 -p8090:8090 -p 8205:8205 -p 8207:8207 9b5cc6bd42d0
# sp2
sudo docker run -d -p 8202:8202 0487eb7998d9
# sp3
sudo docker run -d -p 8206:8206 5c75ec9ef2b6

当我们需要启动Steamboat时,只需在终端执行sh runp.sh命令,便可以在浏览器中输入http://localhost访问练习平台页面了。

1.2.3 Steamboat 使用说明

Steamboat首页包括示例导航和快速索引两个部分。读者可以根据快速索引找到本书对应章节的示例,如图1-16所示。

图1-16 快速索引

点击对应的下拉菜单,即可找到该节中对应的示例。如图1-17所示,该导航根据示例编号按升序排序。

图1-17 示例导航

点击示例标签卡中的按钮后,浏览器就会在新窗口中打开对应的示例页面。