美文网首页
轻量级的 Linux 桌面系统 Xfce - 浏览器爬虫运行环境

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

作者: eeert2 | 来源:发表于2019-08-03 18:24 被阅读0次

    在 网络爬虫 的技术中,使用 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 登陆的,如下

    腾讯云登陆界面
    如果你是使用的腾讯云、阿里云这类的云主机,可以找一找官方提供的 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/vncserver@.service /etc/systemd/system/vncserver@:1.service
    

    修改刚刚的配置文件

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

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

    ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
    PIDFile=/home/<USER>/.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 [:<number>] [-name <desktop-name>] [-depth <depth>]
                     [-geometry <width>x<height>]
                     [-pixelformat rgbNNN|bgrNNN]
                     [-fp <font-path>]
                     [-cc <visual>]
                     [-fg]
                     [-autokill]
                     [-noxstartup]
                     [-xstartup <file>]
                     <Xvnc-options>...
    
           vncserver -kill <X-display>
    
           vncserver -list
    
    [root@localhost ~]# 
    

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

    相关文章

      网友评论

          本文标题:轻量级的 Linux 桌面系统 Xfce - 浏览器爬虫运行环境

          本文链接:https://www.haomeiwen.com/subject/ipqsdctx.html