頭圖

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

青南

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

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

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

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

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

萬里河山一片紅

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

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

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

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

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('運行完成')

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

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

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

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

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

運行效果如下圖所示:

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

有了本文以后,再結合我之前的兩篇文章:

相信你的模擬瀏覽器能夠繞過更多的網站。

閱讀 3.1k

微軟最有價值專家(MVP)。已出版圖書《Python?爬蟲開發,從入門到實戰》、《左手?MongoDB,右手?Redis——從入門到商業實戰》。獨立開發維護開源項目?GNE(獲得近2000?Star)。

504 聲望
932 粉絲
0 條評論

微軟最有價值專家(MVP)。已出版圖書《Python?爬蟲開發,從入門到實戰》、《左手?MongoDB,右手?Redis——從入門到商業實戰》。獨立開發維護開源項目?GNE(獲得近2000?Star)。

504 聲望
932 粉絲
宣傳欄
一本到在线是免费观看_亚洲2020天天堂在线观看_国产欧美亚洲精品第一页_最好看的2018中文字幕 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>