Golang + selenium 设置无头浏览器模式

前段时间写了个自动化脚本来爬点数据,但是有一个页面的cookies是无法通过发送登录请求来获得的,于是只好使用selenium来加载出页面再获取那个页面的cookies,为了不想每次都打开浏览器页面,因此需要设置无头浏览器,网上查了很久资料特此记录一下解决方法。

func GetAdminCookies(URL string) string {
	//1.开启selenium服务
	//设置selium服务的选项,设置为空。根据需要设置。
	ops := []selenium.ServiceOption{}
	service, err := selenium.NewChromeDriverService("F:\\chromedriver.exe", 9515, ops...)
	if err != nil {
		fmt.Printf("Error starting the ChromeDriver server: %v", err)
	}
	//延迟关闭服务
	defer service.Stop()

	//2.调用浏览器
	//设置浏览器兼容性,我们设置浏览器名称为chrome
	caps := selenium.Capabilities{
		"browserName": "chrome",
	}
	//禁止图片加载,加快渲染速度
	imagCaps := map[string]interface{}{
		"profile.managed_default_content_settings.images": 2,
	}
	//设置实验谷歌浏览器驱动的参数
	chromeCaps := chrome.Capabilities{
		Prefs: imagCaps,
		Args: []string{
			"--headless", //设置Chrome无头模式
		},
	}
	//添加浏览器设置参数
	caps.AddChrome(chromeCaps)
	//调用浏览器urlPrefix
	var wd selenium.WebDriver
	wd, err = selenium.NewRemote(caps, "http://127.0.0.1:9515/wd/hub")
	if err != nil {
		panic(err)
	}
	//延迟退出chrome
	defer wd.Quit()
	err = wd.Get(URL)
	//延迟两秒,等待cookies完全加载出来
	time2.Sleep(2 * time2.Second)
	cookies, err := wd.GetCookies()
	if err != nil {
		fmt.Println(err.Error())
	}
	//fmt.Println(cookies)
	Cookies := ""
	for _, item := range cookies {
		fmt.Println(item.Name, item.Value)
		Cookies = Cookies + fmt.Sprintf(`%s=%s;`, item.Name, item.Value)
	}
	return Cookies
}

其中想要设置无头浏览器,最关键的只是几行代码而已:

 

下面是ChromeOptions类可用的和最常用的参数列表:

start-maximized: 最大化模式打开

Chrome incognito: 无痕浏览打开浏览器

headless: 无头模式(后台运行)

disable-extensions: 禁用Chrome浏览器上现有的扩展

disable-popup-blocking: 禁用弹窗

make-default-browser: 设置Chrome为默认浏览器

version: 打印chrome浏览器版本

disable-infobars: 防止Chrome显示“Chrome正在被自动化软件控制”的通知

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值