您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何在Linux服務(wù)器中創(chuàng)建假桌面運(yùn)行模擬瀏覽器有頭模式”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何在Linux服務(wù)器中創(chuàng)建假桌面運(yùn)行模擬瀏覽器有頭模式”吧!
經(jīng)常使用 Selenium 或者 Puppeteer 的同學(xué)都知道,他們啟動(dòng)的 Chrome 瀏覽器分為有頭模式和無頭模式。在自己電腦上操作時(shí),如果是有頭模式,會彈出一個(gè) Chrome瀏覽器窗口,然后你能看到這個(gè)瀏覽器里面在自動(dòng)操作。而無頭模式則不會彈出任何窗口,只有進(jìn)程。
別去送死了。Selenium 與 Puppeteer 能被網(wǎng)站探測的幾十個(gè)特征這篇文章中,我們介紹了一個(gè)探測模擬瀏覽器特征的網(wǎng)站。通過他我們可以發(fā)現(xiàn),在不做任何設(shè)置的情況下,Selenium 或者 Puppeteer 啟動(dòng)的瀏覽器有幾十個(gè)特征能夠被目標(biāo)網(wǎng)站識別為爬蟲。并且,無頭模式的特征比有頭模式的特征多得多。
也就是說,即使你不使用任何隱藏特征的技術(shù),僅僅使用有頭模式,你都會安全很多。如果網(wǎng)站不是非常嚴(yán)格的反爬蟲,很多情況下,使用無頭模式更容易被發(fā)現(xiàn),但使用有頭模式,更難被發(fā)現(xiàn)。
下圖為有頭模式,不使用任何隱藏特征的技術(shù)訪問檢測網(wǎng)站:
下圖為無頭模式,不使用任何隱藏特征的技術(shù)訪問檢測網(wǎng)站:
萬里河山一片紅
所以,一般情況下,你應(yīng)該多使用有頭模式。
但問題在于,當(dāng)我們要在 Linux 服務(wù)器上面使用 Selenium 或者 Puppeteer 運(yùn)行爬蟲的時(shí)候,就會發(fā)現(xiàn)有頭模式始終會報(bào)錯(cuò)。這是因?yàn)椋蓄^模式需要系統(tǒng)提供圖形界面支持,才能繪制瀏覽器窗口,但是 Linux 服務(wù)器一般來說是沒有圖形界面的,所以有頭模式一定會失敗。
在這種情況下,為了能夠使用模擬瀏覽器的有頭模式,我們需要搞一個(gè)假的圖形界面出來,從而欺騙瀏覽器,讓它的有頭模式能夠正常使用。
為了達(dá)到這個(gè)目的,我們可以使用一個(gè)叫做 Xvfb的東西。這個(gè)東西在維基百科上面的介紹[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 在一個(gè)沒有圖像設(shè)備的機(jī)器上實(shí)現(xiàn)了 X11顯示服務(wù)的協(xié)議。它實(shí)現(xiàn)了其他圖形界面都有的各種接口,但并沒有真正的圖形界面。所以當(dāng)一個(gè)程序在 Xvfb 中調(diào)用圖形界面相關(guān)的操作時(shí),這些操作都會在虛擬內(nèi)存里面運(yùn)行,只不過你什么都看不到而已。
使用 Xvfb,我們就可以欺騙 Selenium 或者 Puppeteer,讓它以為自己運(yùn)行在一個(gè)有圖形界面的系統(tǒng)里面,這樣一來就能夠正常使用有頭模式了。
要安裝 Xvfb 非常簡單,在 Ubuntu 中,只需要執(zhí)行下面兩行命令就可以了:
sudo apt-get update sudo apt-get install xvfb
現(xiàn)在,我們來寫一段非常簡單的 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('運(yùn)行完成')
如果直接在服務(wù)器上運(yùn)行,效果如下圖所示:
因?yàn)闆]有圖形界面,所以程序必定報(bào)錯(cuò)。
現(xiàn)在,我們只需要在運(yùn)行這段代碼的命令前面加上xvfb-run,再來看看運(yùn)行效果:
代碼成功運(yùn)行,沒有報(bào)錯(cuò)。現(xiàn)在我們從服務(wù)器上把這個(gè)生成的screenshot.png文件拉下來,打開以后可以看到內(nèi)容如下:
可以看到,雖然窗口比較小,但確實(shí)是有頭模式下面的檢測結(jié)果。當(dāng)然,我們也可以調(diào)整一下窗口大小,增加參數(shù):xvfb-run python3 test.py -s -screen 0 1920x1080x16就能假裝在一個(gè)分辨率為1920x1280的顯示器上運(yùn)行程序了。然后修改 Selenium 的代碼,設(shè)置瀏覽器窗口的大小:
運(yùn)行效果如下圖所示:
本文演示使用的是 Python操作 Selenium,你也可以試一試使用 Puppeteer,只需要把啟動(dòng)命令改為xvfb-run node index.js就可以了。
感謝各位的閱讀,以上就是“如何在Linux服務(wù)器中創(chuàng)建假桌面運(yùn)行模擬瀏覽器有頭模式”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何在Linux服務(wù)器中創(chuàng)建假桌面運(yùn)行模擬瀏覽器有頭模式這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。