中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 服務器 > 
  • 如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式

如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式

發布時間:2021-07-19 10:53:00 來源:億速云 閱讀:320 作者:chen 欄目:服務器

這篇文章主要講解了“如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式”吧!

經常使用 Selenium 或者 Puppeteer 的同學都知道,他們啟動的 Chrome  瀏覽器分為有頭模式和無頭模式。在自己電腦上操作時,如果是有頭模式,會彈出一個 Chrome瀏覽器窗口,然后你能看到這個瀏覽器里面在自動操作。而無頭模式則不會彈出任何窗口,只有進程。

別去送死了。Selenium 與 Puppeteer  能被網站探測的幾十個特征這篇文章中,我們介紹了一個探測模擬瀏覽器特征的網站。通過他我們可以發現,在不做任何設置的情況下,Selenium 或者  Puppeteer 啟動的瀏覽器有幾十個特征能夠被目標網站識別為爬蟲。并且,無頭模式的特征比有頭模式的特征多得多。

也就是說,即使你不使用任何隱藏特征的技術,僅僅使用有頭模式,你都會安全很多。如果網站不是非常嚴格的反爬蟲,很多情況下,使用無頭模式更容易被發現,但使用有頭模式,更難被發現。

下圖為有頭模式,不使用任何隱藏特征的技術訪問檢測網站:

如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式

下圖為無頭模式,不使用任何隱藏特征的技術訪問檢測網站:

如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式

萬里河山一片紅

所以,一般情況下,你應該多使用有頭模式。

但問題在于,當我們要在 Linux 服務器上面使用 Selenium 或者 Puppeteer  運行爬蟲的時候,就會發現有頭模式始終會報錯。這是因為,有頭模式需要系統提供圖形界面支持,才能繪制瀏覽器窗口,但是 Linux  服務器一般來說是沒有圖形界面的,所以有頭模式一定會失敗。

在這種情況下,為了能夠使用模擬瀏覽器的有頭模式,我們需要搞一個假的圖形界面出來,從而欺騙瀏覽器,讓它的有頭模式能夠正常使用。

為了達到這個目的,我們可以使用一個叫做 Xvfb的東西。這個東西在維基百科上面的介紹[1]如下:

Xvfb or X virtual framebuffer is a display server implementing the X11  display server protocol. In contrast to other display servers, Xvfb performs all  graphical operations in virtual memory without showing any screen output.

Xvfb 在一個沒有圖像設備的機器上實現了 X11顯示服務的協議。它實現了其他圖形界面都有的各種接口,但并沒有真正的圖形界面。所以當一個程序在 Xvfb  中調用圖形界面相關的操作時,這些操作都會在虛擬內存里面運行,只不過你什么都看不到而已。

使用 Xvfb,我們就可以欺騙 Selenium 或者  Puppeteer,讓它以為自己運行在一個有圖形界面的系統里面,這樣一來就能夠正常使用有頭模式了。

要安裝 Xvfb 非常簡單,在 Ubuntu 中,只需要執行下面兩行命令就可以了:

sudo apt-get update sudo apt-get install xvfb

現在,我們來寫一段非常簡單的 Selenium 操作 Chrome 的代碼:

import time from selenium.webdriver import Chrome driver = Chrome('./chromedriver') driver.get('https://bot.sannysoft.com/') time.sleep(5) driver.save_screenshot('screenshot.png') driver.close() print('運行完成')

如果直接在服務器上運行,效果如下圖所示:

如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式

因為沒有圖形界面,所以程序必定報錯。

現在,我們只需要在運行這段代碼的命令前面加上xvfb-run,再來看看運行效果:

如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式

代碼成功運行,沒有報錯。現在我們從服務器上把這個生成的screenshot.png文件拉下來,打開以后可以看到內容如下:

如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式

可以看到,雖然窗口比較小,但確實是有頭模式下面的檢測結果。當然,我們也可以調整一下窗口大小,增加參數:xvfb-run python3 test.py  -s -screen 0 1920x1080x16就能假裝在一個分辨率為1920x1280的顯示器上運行程序了。然后修改 Selenium  的代碼,設置瀏覽器窗口的大小:

如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式

運行效果如下圖所示:

如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式

本文演示使用的是 Python操作 Selenium,你也可以試一試使用 Puppeteer,只需要把啟動命令改為xvfb-run node  index.js就可以了。

感謝各位的閱讀,以上就是“如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式”的內容了,經過本文的學習后,相信大家對如何在Linux服務器中創建假桌面運行模擬瀏覽器有頭模式這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金堂县| 莱芜市| 洪湖市| 乐至县| 瑞丽市| 疏附县| 康定县| 耿马| 泉州市| 两当县| 香河县| 军事| 西藏| 大连市| 韶关市| 台南县| 遵义市| 秦皇岛市| 武隆县| 双峰县| 高州市| 德保县| 新沂市| 临漳县| 镇沅| 南岸区| 西华县| 商河县| 平和县| 石嘴山市| 左贡县| 永修县| 金昌市| 安徽省| 柳河县| 黔西| 闽侯县| 五华县| 大田县| 凌云县| 紫金县|