• chrome 无头浏览器的使用


    在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中的配置

  • 相关阅读:
    spring hibernate 调用存储过程
    Mybatis mapper配置
    流量红包算法
    带搜索的下拉框Chosen
    生成二维码
    Linux netlink机制
    OpenFlow Switch学习笔记(七)——Matching Fields
    Hierarchical Token Bucket
    OpenvSwitch架构
    Examining Open vSwitch Traffic Patterns
  • 原文地址:https://www.cnblogs.com/Ting-light/p/10273339.html
Copyright © 2020-2023  润新知