国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?

這篇具有很好參考價(jià)值的文章主要介紹了什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

在Web開發(fā)中,有時(shí)需要對網(wǎng)頁進(jìn)行截圖,以便進(jìn)行頁面預(yù)覽、測試等操作。

而使用無頭瀏覽器來實(shí)現(xiàn)截圖功能,可以避免手動操作的繁瑣和不穩(wěn)定性。

這篇文章將介紹:使用Golang進(jìn)行無頭瀏覽器的截圖,輕松實(shí)現(xiàn)頁面預(yù)覽、測試和模擬用戶操作。

什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?

有趣

這篇文章發(fā)完,有朋友在朋友圈留言說:沒想到還有這種騷操作~

還有朋友問我能不能自動實(shí)現(xiàn)移動滑塊識別驗(yàn)證,他是想干嘛,有這個(gè)想法就挺危險(xiǎn)~

大佬們知道能否實(shí)現(xiàn)嗎???

什么是無頭瀏覽器

無頭瀏覽器(Headless Browser)是一種沒有圖形用戶界面的瀏覽器,它可以在后臺運(yùn)行,并通過編程接口來控制和操作瀏覽器。

無頭瀏覽器通常用于自動化測試、網(wǎng)頁截圖、爬蟲等場景,可以幫助我們更方便地進(jìn)行網(wǎng)頁操作和數(shù)據(jù)采集。

常見的無頭瀏覽器包括Chrome Headless、PhantomJS、Puppeteer等。

在Golang中,可以使用chromedprod等庫來實(shí)現(xiàn)無頭瀏覽器截圖的功能。

更多場景

使用Golang實(shí)現(xiàn)無頭瀏覽器截圖可以在很多場景下發(fā)揮作用,以下是一些常見的場景:

  1. 網(wǎng)頁截圖:使用無頭瀏覽器可以方便地對網(wǎng)頁進(jìn)行截圖,可以用于生成網(wǎng)頁快照、監(jiān)控網(wǎng)頁變化等。

  2. 自動化測試:使用無頭瀏覽器可以模擬用戶操作,可以用于自動化測試、自動化部署等。

  3. 網(wǎng)頁爬蟲:使用無頭瀏覽器可以模擬瀏覽器行為,可以用于網(wǎng)頁爬蟲、數(shù)據(jù)采集等。

  4. 數(shù)據(jù)分析:使用無頭瀏覽器可以獲取網(wǎng)頁數(shù)據(jù),可以用于數(shù)據(jù)分析、機(jī)器學(xué)習(xí)等。

什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?

使用chromedp

chromedp是一個(gè)基于Chrome或Chromium瀏覽器的DevTools協(xié)議的庫,可以方便地控制瀏覽器進(jìn)行截圖、模擬用戶操作等功能。

以下是使用chromedp庫實(shí)現(xiàn)無頭瀏覽器截圖的示例代碼:

package main

import (
   "context"
   "io/ioutil"
   "log"
   "time"

   "github.com/chromedp/cdproto/page"
   "github.com/chromedp/chromedp"
)

func main() {
   // 創(chuàng)建一個(gè)上下文
   ctx, cancel := chromedp.NewContext(context.Background())
   defer cancel()

   // 設(shè)置瀏覽器選項(xiàng)
   opts := append(chromedp.DefaultExecAllocatorOptions[:],
      chromedp.Flag("headless", true),
      chromedp.Flag("disable-gpu", true),
      chromedp.Flag("no-sandbox", true),
      chromedp.Flag("disable-dev-shm-usage", true),
      chromedp.Flag("remote-debugging-port", "9222"),
   )
   allocCtx, cancel := chromedp.NewExecAllocator(ctx, opts...)
   defer cancel()

   // 創(chuàng)建一個(gè)瀏覽器實(shí)例
   ctx, cancel = chromedp.NewContext(allocCtx)
   defer cancel()

   // 導(dǎo)航到指定的URL
   var buf []byte
   err := chromedp.Run(ctx, chromedp.Navigate("https://www.baidu.com"), chromedp.Sleep(2*time.Second), chromedp.ActionFunc(func(ctx context.Context) error {
      // 獲取頁面截圖
      var err error
      buf, err = page.CaptureScreenshot().WithQuality(90).WithClip(&page.Viewport{X: 0, Y: 0, Width: 1920, Height: 1080, Scale: 1}).Do(ctx)
      if err != nil {
         return err
      }
      return nil
   }))
   if err != nil {
      log.Fatal(err)
   }
   // 將截圖保存到文件
   err = ioutil.WriteFile("screenshot.png", buf, 0644)
   if err != nil {
      log.Fatal(err)
   }
}

這段代碼使用chromedp庫創(chuàng)建了一個(gè)無頭瀏覽器實(shí)例,并導(dǎo)航到百度首頁。

然后使用page.CaptureScreenshot()函數(shù)獲取頁面截圖,并將截圖保存到screenshot.png文件中。

什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?

運(yùn)行演示

把我上面的代碼復(fù)制到main.go文件中,安裝依賴直接運(yùn)行即可:

go mod tidy

go run main.go

執(zhí)行效果如下:

什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?

需要注意的是,使用chromedp庫需要先安裝Chrome或Chromium瀏覽器,并將其添加到系統(tǒng)的環(huán)境變量中。

使用rod庫

rod是另一個(gè)基于Chrome或Chromium瀏覽器的DevTools協(xié)議的庫,可以方便地控制瀏覽器進(jìn)行截圖、模擬用戶操作等功能。

以下是使用rod庫實(shí)現(xiàn)無頭瀏覽器截圖的示例代碼:

package main

import (
	"github.com/go-rod/rod"
	"github.com/go-rod/rod/lib/proto"
	"github.com/go-rod/rod/lib/utils"
	"github.com/ysmood/gson"
)

func main() {
	page := rod.New().MustConnect().MustPage("https://baidu.com").MustWaitLoad()

	//簡單模式,默認(rèn)截圖設(shè)置
	page.MustScreenshot("my.png")

	//自定義截圖設(shè)置
	img, _ := page.Screenshot(true, &proto.PageCaptureScreenshot{
		Format:  proto.PageCaptureScreenshotFormatJpeg,
		Quality: gson.Int(90),
		Clip: &proto.PageViewport{
			X:      0,
			Y:      0,
			Width:  300,
			Height: 200,
			Scale:  1,
		},
		FromSurface: true,
	})
	_ = utils.OutputFile("my.jpg", img)
}

這段代碼使用rod庫創(chuàng)建了一個(gè)無頭瀏覽器實(shí)例,并導(dǎo)航到百度首頁。

然后使用page.MustScreenshot()函數(shù)獲取頁面截圖,并將截圖保存到my.png文件中。

什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?

同樣演示了使用page.Screenshot自定義截圖,并將自定義截圖保存到了my.jpg文件中。

什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?

需要注意的是,使用rod庫需要先安裝Chrome或Chromium瀏覽器,并將其添加到系統(tǒng)的環(huán)境變量中。

運(yùn)行方式

rod庫示例代碼的運(yùn)行方式和chromedp基本一致,略有區(qū)別的是我們需要根據(jù)提示,運(yùn)行多次go run main.go安裝需要的插件:

什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?

碰到上面提示不用慌,再執(zhí)行一次go run main.go即可
什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?

執(zhí)行效果如下:
什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?

注意

再強(qiáng)調(diào)一遍,不管是使用chromedp庫還是rod庫,都需要先安裝Chrome或Chromium瀏覽器,并將其添加到系統(tǒng)的環(huán)境變量中。

我文章中的演示是基于Mac OS。

總結(jié)

本文介紹了如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖的功能。

通過使用chromedprod庫,可以方便地控制瀏覽器進(jìn)行截圖、模擬用戶操作等功能。

使用Golang實(shí)現(xiàn)無頭瀏覽器截圖的優(yōu)勢包括:

高效性:Golang是一種高效的編程語言,可以快速地處理大量數(shù)據(jù)和請求。

可擴(kuò)展性:Golang具有良好的可擴(kuò)展性,可以方便地?cái)U(kuò)展和修改代碼。

跨平臺性:Golang可以在多個(gè)平臺上運(yùn)行,可以方便地進(jìn)行跨平臺開發(fā)和部署。

安全性:Golang具有良好的安全性,可以有效地防止代碼注入和攻擊。

綜上所述,使用Golang實(shí)現(xiàn)無頭瀏覽器截圖可以在很多場景下發(fā)揮作用,具有高效性、可擴(kuò)展性、跨平臺性和安全性等優(yōu)勢。

什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?

一起學(xué)習(xí)

歡迎添加我的微信,一起學(xué)習(xí)進(jìn)步:wangzhongyang1993

我的所有文章都會首發(fā)在我的 學(xué)習(xí)小圈子 ,歡迎加入我們,一起學(xué)習(xí)進(jìn)步,一起升職加薪。文章來源地址http://www.zghlxwxcb.cn/news/detail-454738.html

到了這里,關(guān)于什么是無頭瀏覽器?如何使用Golang實(shí)現(xiàn)無頭瀏覽器截圖?的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • linux centos安裝google chrome瀏覽器使用headless無頭模式 制作docker鏡像

    chromedriver 驅(qū)動下載地址: https://npm.taobao.org/mirrors/chromedriver/ linux centos安裝google chrome瀏覽器使用headless無頭模式 用java開發(fā)爬蟲,或者需要java操作控制瀏覽器來渲染頁面,抓取頁面元素,都需要在linux安裝google chrome瀏覽器,然后就可以通過chrome driver來連接操作chrome瀏覽器了,

    2024年02月09日
    瀏覽(106)
  • 【Chrome】使用k8s、docker部署無頭瀏覽器Headless,Java調(diào)用示例

    【Chrome】使用k8s、docker部署無頭瀏覽器Headless,Java調(diào)用示例

    無頭瀏覽器是一種沒有圖形用戶界面的瀏覽器。無頭瀏覽器不通過其圖形用戶界面( GUI )控制瀏覽器的操作,而是使用命令行。 Chrome Headless 用于抓取(谷歌)、測試(開發(fā)者)和黑客(黑客)。 搜索引擎,使用它來呈現(xiàn)頁面、生成動態(tài)內(nèi)容和索引來自單頁 Web 應(yīng)用程序的數(shù)據(jù)。 SEO 工

    2024年02月08日
    瀏覽(20)
  • selenium無頭瀏覽器

    無頭瀏覽器,也是通過selenium操作瀏覽器,但是瀏覽器不彈出來的意思 需要用到這個(gè):

    2024年02月11日
    瀏覽(83)
  • Selenium:設(shè)置無頭瀏覽器

    在使用selenium執(zhí)行測試用例時(shí),每條用例執(zhí)行過程中都會打開一個(gè)瀏覽器,如果用例數(shù)量過多時(shí),每次運(yùn)行均需要調(diào)用一次瀏覽器,增加了服務(wù)器壓力,而無頭模式就可以解決這種問題,他可以讓運(yùn)行速度更快,占用的資源也更少,讓瀏覽器偷偷的在后臺工作。 無頭模式,是

    2024年02月16日
    瀏覽(94)
  • 無頭瀏覽器puppeteer自動調(diào)用Dapp交易

    自動化調(diào)用dapp的方法一種是直接調(diào)用合約的方法進(jìn)行交易,另一種是用無頭瀏覽器通過操作dapp頁面進(jìn)行自動化交易。用到了puppeteer和@chainsafe/dappeteer兩個(gè)庫; puppeteer:無頭瀏覽器 @chainsafe/dappeteer: 是封裝好的在無頭瀏覽器操作MataMask插件的庫 以下是示例代碼

    2024年02月17日
    瀏覽(28)
  • Python + Playwright 無頭瀏覽器Chrome找不到元素

    用Python + Playwright調(diào)試時(shí),發(fā)現(xiàn)不用無頭瀏覽器(即 headless=False )代碼能夠運(yùn)行成功,但是一用無頭瀏覽器時(shí)(即 headless=True )就會報(bào)錯(cuò),提示找不到元素。換成Firefox瀏覽器又不會有這個(gè)問題,有可能是因?yàn)榫W(wǎng)站有一個(gè)前段反爬蟲手段。(同理,如果大家使用 playwright codege

    2024年02月16日
    瀏覽(20)
  • Python Headless Chrome(無頭谷歌瀏覽器)

    Python Headless Chrome(無頭谷歌瀏覽器)

    在我們使用Selenium驅(qū)動ChromeDriver時(shí),可以彈出谷歌瀏覽器,模擬人為操作谷歌瀏覽器,這就是自動化測試。雖然很厲害,但是也有一個(gè)很現(xiàn)實(shí)的問題,因?yàn)槭且鎸?shí)加載完整網(wǎng)頁,導(dǎo)致效率低。在自動化測試時(shí),我們其實(shí)只需要知道是測試完成還是未完成,至于能否看到完整

    2024年02月05日
    瀏覽(20)
  • 什么是瀏覽器緩存(browser caching)?如何使用HTTP頭來控制緩存?

    什么是瀏覽器緩存(browser caching)?如何使用HTTP頭來控制緩存?

    前端入門之旅:探索Web開發(fā)的奇妙世界 歡迎來到前端入門之旅!感興趣的可以訂閱本專欄哦!這個(gè)專欄是為那些對Web開發(fā)感興趣、剛剛踏入前端領(lǐng)域的朋友們量身打造的。無論你是完全的新手還是有一些基礎(chǔ)的開發(fā)者,這里都將為你提供一個(gè)系統(tǒng)而又親切的學(xué)習(xí)平臺。在這個(gè)

    2024年02月09日
    瀏覽(33)
  • Selenium Edge的無頭瀏覽器模式以及反WebDriver檢測

    Selenium Edge的無頭瀏覽器模式以及反WebDriver檢測

    ? ? ? ? 由于本人只使用Edge瀏覽器,所以在得知Selenium對PantomJS的支持取消后,在網(wǎng)上找了各種關(guān)于Edge瀏覽器的資料。配置Selenium Edge有多種方法,但這里只介紹一種方法。 MSEdgeDriver下載地址 ?此處需要注意將瀏覽器更新到最新版本,以及選擇正確的下載通道 解壓下載的壓縮

    2023年04月09日
    瀏覽(90)
  • Selenium 無頭瀏覽器被知乎限制訪問的解決方案

    Selenium 無頭瀏覽器被知乎限制訪問的解決方案

    我嘗試使用如下代碼爬取知乎的有關(guān)內(nèi)容,出現(xiàn)知乎安全驗(yàn)證界面: 添加啟動參數(shù) 在網(wǎng)上的許多文章中,反復(fù)提到了如下三行代碼,然而我將他們加入代碼后沒有什么效果: JavaScript特殊全局變量 有一些文章提到,通過 WebDriver 啟動的網(wǎng)頁會存在一些特殊的 JS 變量,這些變

    2024年02月14日
    瀏覽(90)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包