chrome 无头浏览器的使用

时间:2024-03-07 19:22:06

在linux服务器上安装chrome :

ubuntu:

  下载页面https://www.chrome64bit.com/index.php/google-chrome-64-bit-for-linux

   wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb                        下载

   sudo apt-get install libxss1 libappindicator1 libindicator7                                                                   安装依赖

   sudo dpkg -i google-chrome*.deb                                                                                                          这条语句可能报错,下条命令将修复它

   sudo apt-get install -f 

     google-chrome                                                                                                                                       查看版本号

 centos:

   wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm                             下载

    yum localinstall  google-chrome-stable_current_x86_64.rpm                                                                      在当前目录下使用本地安装,yum会自动分析依赖,完成安装

 

headless chrome的基本操作https://developers.google.com/web/updates/2017/04/headless-chrome

  启用无头chrome访问网页并打印页面 --dump-dom用于打印页面的document.body.innerHTML到标准输出:

         chrome --headless --disable-gpu --dump-dom https://www.baidu.com/

  截取网页截图, --screenshot 将会截取网页截图并保存为当前目录的screenshot.png文件:

    chrome --headless --disable-gpu --screenshot --window-size=1280,1696 https://www.baidu.com

  使用代理 --proxy-server=http://ip:port 访问页面,并保存截图

    chrome --headless --disable-gpu --screenshot --proxy-server=socks5://127.0.0.1:1080 https://www.google.com

 

python通过selenium使用chrome headless :

      下载chromedriver, 页面地址 http://npm.taobao.org/mirrors/chromedriver/71.0.3578.80/ 

    由于安装的chrome是 71.0.3578.98版本的,选了个最接近的chromedriver。

    wget http://npm.taobao.org/mirrors/chromedriver/71.0.3578.80/chromedriver_linux64.zip

    在window上解压后将chromedriver文件上传到/usr/bin/目录下

  pip install selenium

  

代码示例:

from selenium import webdriver 

PROXY=\'http://ip:port\'                                                                #或 PROXY=’socks5://ip:port\'

 

my_options=webdriver.ChromeOptions()
my_options.add_argument(\'--headless\')                                        #添加无头参数
my_options.add_argument(\'--disable-gpu\')            #添加无头参数
my_options.add_argument(\'--no-sandbox\')                                    #添加无头参数
#my_options.add_argument(\'lang=zh_CN.UTF-8\')
my_options.add_argument(\'--allow-running-insecure-content\')     #设置proxy时添加的额外参数,允许不安全的证书
my_options.add_argument(\'--ignore-certificate-errors\')     #设置proxy时添加的额外参数,允许不安全的证书
my_options.add_argument("user-agent=\'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36\'")                                                                            #设置用户代理
caps = DesiredCapabilities.CHROME.copy()
caps[\'proxy\']={\'httpProxy\':PROXY,                                                #添加代理IP  proxy
\'ftpProxy\':PROXY,
\'sslProxy\':PROXY,
\'noProxy\':None,
\'proxyType\':\'MANUAL\',
\'class\':\'org.openqa.selenium.Proxy\',
\'autodetect\':False}
caps[\'acceptSslCerts\'] = True                                                      #设置允许不安全的证书
caps[\'acceptInsecureCerts\'] = True

 


bs=webdriver.Chrome(chrome_options=my_options,executable_path=\'/usr/bin/webdriver\',desired_capabilities=caps)

 

bs.get(\'https://www.baidu.com\')

 

chrome_options : ChromeOptions()对象

executable_path : chromedriver的绝对路径

desired_capabilities :一般为对应浏览器的DesiredCapabilities的copy(),避免更改默认设置

 

本地shadow(**隔离**)socks安装     pip install shadow(**隔离**)socks

 配置shadow(**隔离**)socks连接参数 ,创建文件shadow(**隔离**)socks.json

{
"server":"153.234.1.5",
"server_port":1108,
"local_address": "0.0.0.0",
"local_port":1018
"password":"sdsewedxxf#",
"timeout":300,
"method":"chacha20",
"fast_open": false
}

启动shadow(**隔离**)socks客户端 sslocal -c shadow(**隔离**)socks.json -d start 

-d 表示后台启动, -c表示使用文件shadow(**隔离**)socks.json中的配置