Skip to content
Well404 edited this page Sep 8, 2022 · 3 revisions

使用之前

在正式使用BBot之前,我们需要一些准备工作能够确保BBot能够正确运行。在不同的操作系统(甚至是同一系统的不同镜像)上所预装的程序是不尽相同的,因此很有可能在某些较为精简的系统上出现依赖缺失的问题。

您可以先尝试部署 BBot,如若运行正常则可跳过本节内容。但遗憾的是,目前未作任何前期准备能够直接部署 BBot 的系统镜像屈指可数,我们无法做出保障能够在不补充依赖的情况下直接运行成功。因此您大概率需要根据本篇内容补充系统中缺失的依赖。

虚拟终端(Windows不用看)

在 Linux 服务器中,一般我们是通过虚拟终端(Virtual Terminal)接入其中并进行操作的。而同一个终端往往只能同时运行一个程序,且终端一旦被关闭,那么正在运行的程序也会被中止。

我们有两种较为常见的解决方法。一是通过 nohup <command> & 指令来将程序挂载到后台,并且在关闭终端时不会一同关闭,但缺点是无法进行交互,也不能较为轻松的获取输出内容。二是通过 screen 指令来创建一个“视窗”进行控制,其内部是一个独立的虚拟终端,可以实时的进行输入和显示输出,也随时离开视窗(程序不会停止),是较为推荐的方法。

screen

首先通过 screen -R <screen_name> 来创建(或连接至已有的)一个名为 <screen_name> 的视窗,例如 screen -R BBot,即可进入一个新的虚拟终端,但与非 screen 创建的终端不同的是,这个终端是不支持翻页的,如果输出内容超出终端显示范围将会永久消失。

在命令执行完毕后,可以通过 Ctrl+A+D离开此视窗(程序不会停止),或通过 Ctrl+D 关闭此视窗(程序会停止)。

所有运行中的视窗可以通过 screen -ls 命令进行显示。

通过 screen -r <screen_name> 可以重新连接到处于 Detached 状态的视窗,但与 screen -R 不同的是,该命令无法创建新的视窗。

C++运行环境(linux不用看)

在某些版本的Windows系统中,可能存在C++运行库缺失的情况,通常在安装一些需要C++运行环境的依赖的时候就会有所标明,目前笔者的测试中暂未遇到此类情况,但以防万一还是补充一下。

Python官方文档中的说明: https://wiki.python.org/moin/WindowsCompilers

Microsoft C++ 生成工具 中下载生成工具。

按照图示选中 MSVCv142 - VS 2019 C++ x64/x86 build toolsWindows 10 SDK 并安装至你的计算机。

install

安装完毕后,重启计算机即可正常使用了。

字体依赖

在部分操作系统中并未内置中文字体和emoji字体,此时在截取带带有这些字符的页面时有概率会出现对应的字符全部变成 🫰🏻🫰🏻🫰🏻 的情况。

此时,我们可以安装字体后重新启动 BBot,即可使中文正常显示。

获取字体

首先去网络上下载你喜欢的字体包,哪类字体无法显示就去下哪个。或者在已有字体的Windows系统中 C:\Windows\Fonts 文件夹下复制想要的字体。

为了方便起见,字体需要为 TTF 或 OTF 格式,其他格式可能会在安装过程中造成一些障碍

Windows 安装字体

直接右键字体文件,选择安装

双击打开字体文件,选择安装

Linux 安装字体(以Ubuntu为例)

首先更新 apt 并安装字体管理依赖。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ttf-mscorefonts-installer fontconfig

然后在 /usr/share/fonts/ 文件夹下新建一个文件夹,例如 myfonts,并将权限设置为 0777 便于后续添加字体(0700 也可以,但不便于其他用户直接修改)。

sudo mkdir -m 0777 /usr/share/fonts/myfonts

通过sftp工具或其他办法将字体文件复制到新建的文件夹(myfonts)中。

存有字体的文件夹(myfonts)中依次执行下列命令

# cd /usr/share/fonts/myfonts
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv 

然后可以通过 fc-list 来查看字体是否安装成功了,也可通过 fc-list :lang=zh 筛选出特定语种(zh)的字体。

Playwright所需依赖

BBot 所采用的浏览器自动化框架为 Playwright,BBot 的二进制包已经将所需的浏览器核心打包在内,但仍需要您手动安装一些未被打包在内的依赖。

首先,更新 apt,防止无法找到对应的包。

sudo apt-get update
sudo apt-get upgrade

然后,根据你所使用的系统,选择对应的命令进行安装。

ubuntu18.04

sudo apt install xvfb fonts-noto-color-emoji ttf-unifont libfontconfig libfreetype6 xfonts-cyrillic xfonts-scalable fonts-liberation fonts-ipafont-gothic fonts-wqy-zenhei fonts-tlwg-loma-otf ttf-ubuntu-font-family fonts-liberation libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libcairo2 libcups2 libdbus-1-3 libdrm2 libegl1 libgbm1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxrandr2 libxshmfence1 libasound2 libatk1.0-0 libatk-bridge2.0-0 libatspi2.0-0 libbrotli1 libcairo-gobject2 libcairo2 libcups2 libdbus-1-3 libdbus-glib-1-2 libdrm2 libegl1 libenchant1c2a libepoxy0 libevent-2.1-6 libevdev2 libfontconfig1 libfreetype6 libgbm1 libgdk-pixbuf2.0-0 libgtk-3-0 libgtk2.0-0 libglib2.0-0 libgl1 libgles2 libglib2.0-0 libglib2.0-0 libglib2.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-base libgstreamer1.0-0 gstreamer1.0-plugins-bad gstreamer1.0-plugins-base libgstreamer-gl1.0-0 gstreamer1.0-plugins-base libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-base libglib2.0-0 libgtk-3-0 libgtk2.0-0 libharfbuzz-icu0 libharfbuzz0b libhyphen0 libicu60 libicu60 libicu60 libjpeg-turbo8 libnotify4 libnspr4 libnss3 libnss3 libopenjp2-7 libopus0 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpng16-16 libsecret-1-0 libnss3 libvpx5 libwayland-client0 libwayland-egl1 libwayland-server0 libwebp6 libwebpdemux2 libwoff1 libx11-xcb1 libx11-6 libxcb-dri3-0 libxcb-shm0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxkbcommon0 libxml2 libxrandr2 libxrender1 libxslt1.1 libxt6 libxtst6

ubuntu20.04

sudo apt install xvfb fonts-noto-color-emoji ttf-unifont libfontconfig libfreetype6 xfonts-cyrillic xfonts-scalable fonts-liberation fonts-ipafont-gothic fonts-wqy-zenhei fonts-tlwg-loma-otf ttf-ubuntu-font-family fonts-liberation libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libcairo2 libcups2 libdbus-1-3 libdrm2 libegl1 libgbm1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxrandr2 libxshmfence1 libasound2 libatk1.0-0 libatk-bridge2.0-0 libatspi2.0-0 libcairo-gobject2 libcairo2 libcups2 libdbus-1-3 libdbus-glib-1-2 libdrm2 libegl1 libenchant1c2a libevdev2 libepoxy0 libfontconfig1 libfreetype6 libgbm1 libgdk-pixbuf2.0-0 libgtk-3-0 libgtk2.0-0 libglib2.0-0 libgl1 libgles2 libglib2.0-0 libglib2.0-0 libglib2.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-base libgstreamer1.0-0 gstreamer1.0-plugins-bad gstreamer1.0-plugins-base libgstreamer-gl1.0-0 gstreamer1.0-plugins-base libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-base libglib2.0-0 libgtk-3-0 libgtk2.0-0 libharfbuzz-icu0 libharfbuzz0b libhyphen0 libicu66 libicu66 libjpeg-turbo8 libnotify4 libnspr4 libnss3 libnss3 libopengl0 libopenjp2-7 libopus0 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpng16-16 libsecret-1-0 libnss3 libsoup2.4-1 libvpx6 libwayland-client0 libwayland-egl1 libwayland-server0 libwebp6 libwebpdemux2 libwoff1 libx11-xcb1 libx11-6 libxcb-dri3-0 libxcb-shm0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxkbcommon0 libxml2 libxrandr2 libxrender1 libxslt1.1 libxt6 libxtst6 libxshmfence1 libatomic1

ubuntu22.04

sudo apt install xvfb fonts-noto-color-emoji fonts-unifont libfontconfig1 libfreetype6 xfonts-cyrillic xfonts-scalable fonts-liberation fonts-ipafont-gothic fonts-wqy-zenhei fonts-tlwg-loma-otf fonts-freefont-ttf libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libcairo2 libcups2 libdbus-1-3 libdrm2 libgbm1 libglib2.0-0 libnspr4 libnss3 libpango-1.0-0 libwayland-client0 libx11-6 libxcb1 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxkbcommon0 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libatspi2.0-0 libcairo-gobject2 libcairo2 libcups2 libdbus-1-3 libdbus-glib-1-2 libdrm2 libegl1 libepoxy0 libevdev2 libffi7 libfontconfig1 libfreetype6 libgbm1 libgdk-pixbuf-2.0-0 libgtk-3-0 libglib2.0-0 libgles2 libglib2.0-0 libglx0 libglib2.0-0 libglib2.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-0 libgtk-3-0 libgudev-1.0-0 libharfbuzz-icu0 libharfbuzz0b libhyphen0 libjpeg-turbo8 liblcms2-2 libmanette-0.2-0 libnotify4 libnspr4 libnss3 libnss3 libopengl0 libopenjp2-7 libopus0 libpango-1.0-0 libpangocairo-1.0-0 libpng16-16 libproxy1v5 libsecret-1-0 libnss3 libsoup2.4-1 libwayland-client0 libwayland-egl1 libwayland-server0 libwebpdemux2 libwoff1 libx11-xcb1 libx11-6 libxcb-shm0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxkbcommon0 libxml2 libxrandr2 libxrender1 libxslt1.1 libxtst6 libicu70 libicu70 libicu70 libenchant-2-2 libx264-163 libvpx7 libatomic1

debian11

sudo apt install xvfb fonts-noto-color-emoji fonts-unifont libfontconfig1 libfreetype6 xfonts-cyrillic xfonts-scalable fonts-liberation fonts-ipafont-gothic fonts-wqy-zenhei fonts-tlwg-loma-otf fonts-freefont-ttf libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libcairo2 libcups2 libdbus-1-3 libdrm2 libgbm1 libglib2.0-0 libnspr4 libnss3 libpango-1.0-0 libwayland-client0 libx11-6 libxcb1 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxkbcommon0 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libatspi2.0-0 libcairo-gobject2 libcairo2 libcups2 libdbus-1-3 libdbus-glib-1-2 libdrm2 libegl1 libenchant-2-2 libepoxy0 libevdev2 libfontconfig1 libfreetype6 libgbm1 libgdk-pixbuf-2.0-0 libgtk-3-0 libglib2.0-0 libgles2 libglib2.0-0 libglx0 libglib2.0-0 libglib2.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-0 libgtk-3-0 libgudev-1.0-0 libharfbuzz-icu0 libharfbuzz0b libhyphen0 libicu67 libicu67 libjpeg62-turbo liblcms2-2 libmanette-0.2-0 libnotify4 libnspr4 libnss3 libnss3 libopengl0 libopenjp2-7 libopus0 libpango-1.0-0 libpangocairo-1.0-0 libpng16-16 libproxy1v5 libsecret-1-0 libnss3 libsoup2.4-1 libwayland-client0 libwayland-egl1 libwayland-server0 libwebp6 libwebpdemux2 libwoff1 libx11-xcb1 libx11-6 libxcb-shm0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxkbcommon0 libxml2 libxrandr2 libxrender1 libxslt1.1 libxtst6 libatomic1