轻量级的 Linux 桌面系统 Xfce - 浏览器爬虫运行环境 - VNC连接

在 网络爬虫 的技术中,使用 seleniumpyppeteerpuppeteer等已经是很常见的了。但有一个问题厂家对无头浏览器的检测严重。

很多时候对无头浏览器进行伪装并不是那么容易,有很多的反爬手段进行检测。这里有一些 无头浏览器 伪装与检测的手段,下面这篇文章可以给我们一些参考。

如何用JavaScript检测出当前浏览器是否是无头浏览器(headless browser)

如果迟迟不能通过无头浏览器环境的环境检测,可以尝试直接在浏览器的界面模式下运行。

我目前就是遇到无头浏览器无法正常运行的情况,但是我的云服务器资源很宝贵,只有 1 核 1 G

说实话,在这么少的资源安装上桌面系统还能不能正常开机我也不确定,所以要找一个轻量级的桌面系统,经过查询,Xfce 桌面系统是比较轻量级的,符合我的要求。

与其他一些桌面系统(如KDE和GNOME)相比,Xfce占用的内存和CPU使用量非常小。在我的系统中,组成Xfce桌面的程序为如此强大的桌面占用了很小的内存。非常低的CPU使用率也是Xfce桌面的一个标志。由于内存占用这么少,Xfce也非常节省CPU周期,这一点我并不感到特别惊讶。

一、centos7 安装桌面系统 xfce

Linux系统在服务器上一般都直接最小化安装,是不安装图形界面的,这里我们在最小化安装的基础上安装桌面环境。

  1. 安装epel源,升级软件、包、系统
sudo yum install epel-release
sudo yum update
  1. 安装图形界面(GUI)
sudo yum groupinstall "X window system"
  1. 安装Xfce桌面环境
sudo yum groupinstall Xfce
  • 注意:Centos7 中没有安装中文字体,安装好Xfce,直接进入会出现乱码。所以先安装中文字体,防止进入Xfce出现中文乱码
  1. 安装中文字体
  • 文泉驿字体
yum list | grep wqy
sudo yum install wqy*
  • cjkuni字体
yum list | grep cjkuni 
sudo yum install cjkuni*

最好两种字体都安装

  1. 修改默认启动方式为图形化界面
sudo systemctl set-default graphical.target

备注:修改默认启动方式为命令模式 systemctl set-default multi-user.target

到现在为止,我们的桌面环境已经安装好了,然后我们换一种登陆模式。

二、远程登陆 centos7 桌面系统

在平时我们登陆 linux 主机,一般都是采用ssh模式,使用ssh 可以直接在终端上进行复制粘贴,响应迅速,优点很多。但是ssh是纯文本的,无法显示界面,如果我们要为登陆 Linux 的界面模式,最好是使用 VNC 登陆。

目前我使用的腾讯云是自带 VNC 登陆的,如下

轻量级的 Linux 桌面系统 Xfce - 浏览器爬虫运行环境 - VNC连接_第1张图片
腾讯云登陆界面

如果你是使用的腾讯云、阿里云这类的云主机,可以找一找官方提供的 VNC登陆通道。

如果你当前的 Linux 没有VNC登陆通道,则需要自己安装VNC服务,如下:

1) 检查自己是否已经安装了VNC服务

rpm -qa|grep tigervnc

已经安装的会显示 tigervnc 相关内容,如下

[root@VM_0_3_centos ~]# rpm -qa|grep tigervnc
tigervnc-server-minimal-1.8.0-13.el7.x86_64
tigervnc-license-1.8.0-13.el7.noarch
[root@VM_0_3_centos ~]#

没有安装的则什么都不会显示

[root@localhost ~]# rpm -qa|grep tigervnc
[root@localhost ~]# 

2) yum命令安装

yum -y install tigervnc-server

它会自动给你下载依赖包,如果你的yum命令不能使用,建议用如下命令:

echo nameserver 8.8.8.8 >> /etc/resolv.conf

然后在用yum命令即可。

3) 启动vnc服务

  • 命令行启动

使用vncserver命令启动VNC服务,命令格式为"vncserver :桌面号",其中"桌面号"用"数字"的方式表示,每个用户连个需要占用1个桌面

启动编号为1的桌面命令如下:

vncserver :1

(注意vncserver与:之间有空格)

以上命令执行的过程中,因为是第一次执行,需要输入密码,这个密码被加密保存在用户主目录下的.vnc子目录(/root/.vnc/passwd)中;同时在用户主目录下的.vnc子目录中为用户自动建立xstartup配置文件(/root/.vnc/xstartup),在每次启动VNC服务时,都会读取该文件中的配置信息。另外需注意的是这里设置的密码就是后面我们用vncserver客户端工具连接时要输入的密码

[root@centos-7 ~]# vncserver :1
A VNC server is already running as :1

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used

New 'centos-7.shared:2 (root)' desktop is centos-7.shared:2

Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/centos-7.shared:2.log

[root@centos-7 ~]#

/root/.vnc/目录下还有一个“主机名:1.pid”文件,这个文件记录着启动VNC后对应后面操作系统的进程号,用于停止VNC服务时准确定位进程号。

这样vnc服务端就启动成功了(桌面1),这里是用root用户执行的vncserver :1命令,则启动后用vncserver客户端连接进入到该服务器的用户就是root用户。

这样通过命令启动的 VNC服务是临时的,每次重启都需要重新输入,那么可以写进配置文件

  • 配置文件启动
    在这里我们配置两个 VNC 启动桌面,桌面 1 具有 root 用户权限,桌面 2 是普通用户权限
  • root 用户
    复制一份配置文件出来
cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service

修改刚刚的配置文件

vim /etc/systemd/system/vncserver@:1.service

修改 43、44 两行
配置 USERroot
配置/home//为当前用户的 HOME地址,也就是 /root/

ExecStart=/usr/sbin/runuser -l  -c "/usr/bin/vncserver %i"
PIDFile=/home//.vnc/%H%i.pid

修改后

ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid

设置 vnc 登陆密码:(注意,这里我们需要切换到 root 用户下执行vncpasswd, 同理,如果我们再添加一个普通用户权限的桌面,则需要切换到普通用户下执行)

vncpasswd

4 )VPS常用操作命令:
vncserver :1 启动桌面 1
vncserver -list 列出当前开启的 vnc 服务,以及端口,例如:

[root@localhost ~]# vncserver -list

TigerVNC server sessions:

X DISPLAY # PROCESS ID
:1      16605

vncserver -kill 1 关闭桌面 1
netstat -tulpn | grep vnc 查看VNC相关端口

oot@localhost ~]# netstat -tulpn | grep vnc
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      16605/Xvnc          
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      16605/Xvnc          
tcp6       0      0 :::5901                 :::*                    LISTEN      16605/Xvnc          
tcp6       0      0 :::6001                 :::*                    LISTEN      16605/Xvnc 

如果你的 linux 版本 不同,那么可以使用
vncserver man 来查看相关操作命令。

[root@localhost ~]# vncserver man

usage: vncserver [:] [-name ] [-depth ]
                 [-geometry x]
                 [-pixelformat rgbNNN|bgrNNN]
                 [-fp ]
                 [-cc ]
                 [-fg]
                 [-autokill]
                 [-noxstartup]
                 [-xstartup ]
                 ...

       vncserver -kill 

       vncserver -list

[root@localhost ~]# 

其中第一行 usage: vncserver [:] [-name ] [-depth ] 就是设置开启 vncserver 服务,这里我们将 number 设置为 1,其它的采用默认。

你可能感兴趣的:(轻量级的 Linux 桌面系统 Xfce - 浏览器爬虫运行环境 - VNC连接)