Selenium-Python 在遠(yuǎn)程服務(wù)器運行Chrome(包括headless模式笨篷,以及VNC虛擬顯示器模式)

背景

最近一直在測試一個批量注冊賬號的腳本瞳秽,由于腳本使用了國外代理proxy,速度十分緩慢率翅,想到的解決方式是將腳步運行于outside server上练俐,應(yīng)該能提高代理速度。
通過查詢冕臭,selenium在服務(wù)器端可行的主要方式有兩種腺晾,一種是使用瀏覽器的headless模式,支持的瀏覽器很多辜贵,chrome\firefox等悯蝉;另一種是使用虛擬的顯示模式,在linux上安裝xvfb等虛擬顯示程序?qū)崿F(xiàn)瀏覽器的運行托慨。這里鼻由,由于我想對腳本的運行情況進(jìn)行監(jiān)控,延伸使用了vnc技術(shù),核心vncserver(xvnc)與xvfb類似蕉世,只是可以通過客戶端vnc view查看遠(yuǎn)程服務(wù)器的GUI和瀏覽器的運行情況蔼紧。(備注:xvfb了解到的情況是也可以通過x11的客戶端共享遠(yuǎn)程服務(wù)器內(nèi)存,實現(xiàn)同樣的效果狠轻,有興趣的朋友可以自行查看奸例,我沒有深入了解)。

測試環(huán)境

OS: centos 7
selenium 3.11.0
python 3.5.1
Google Chrome 65.0.3325.181
virtual

這些程序的安裝都是很簡單的就不記錄了哈误。

一哩至、chrome headless mode

chrome在前期的版本中是沒有headless模式的,在近幾次版本的更新中加入了headless mode.
提及的程序安裝略過蜜自,需要注意的是一下幾點:
1. 對于新建的項目建議使用# virtualenv隔離環(huán)境
2.將最新的chromedriver linux 版本放入項目bin目錄
3.chrome設(shè)計的時候是不允許root用戶直接使用的菩貌。為了程序的正常運行,需要添加額外的參數(shù) '--no-sandbox'
通過一個簡單的腳本測試可行性:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('headless')
chrome_options.add_argument('no-sandbox')
#chrome_options.add_argument('--window-size=1920x1080')

driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get('http://www.baidu.com')
test = driver.find_element_by_id('u1')
testa = test.find_elements_by_tag_name('a')[1].text
print(testa)

driver.quit()

測試代碼顯示了想要的結(jié)果重荠。

二箭阶、VNCSERVER 、VNC VIEW

上面的headless模式雖然可以成功執(zhí)行代碼戈鲁,但是無法觀察代碼執(zhí)行情況仇参,需要額外寫很多提示語才能知道代碼運行中的情況。VNC提供了一個方便的方式婆殿,可以在本地客戶端诈乒,查看遠(yuǎn)程服務(wù)器端GUI

步驟如下:
1. 安裝服務(wù)器桌面環(huán)境
sudo yum groupinstall -y "GNOME Desktop"
安裝成功后重啟服務(wù)器: sudo reboot

2.安裝TigerVNC Server
sudo yum install -y tigervnc-server

3.配置vncserver

sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

vncserver@:1.service 代表的是一個vnc服務(wù),如果設(shè)置多個婆芦,可以配置多個文件 vncserver@:2.service vncserver@:3.service 等

然后進(jìn)行配置
sudo vi /etc/systemd/system/vncserver@:1.service

Screen Shot 2018-04-04 at 2.39.21 PM.png

修改<USER>部分怕磨,我目前使用的是root賬號

PIDFILE這里的位置需要刪除/home變?yōu)?br> /root/.vnc/%H%i.pid

保存后執(zhí)行如下代碼:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@:1.service

4.設(shè)置vnc賬號密碼用于vnc客戶端登陸
切換到你要使用的賬號,運行: vncserver
這里會提示你輸入密碼消约,密碼隨意

5.開啟vncserver
sudo systemctl start vncserver@:1.service
還可以查看vncserver狀態(tài)
sudo systemctl status vncserver@:1.service

6.設(shè)置防火墻
sudo systemctl start firewalld
sudo firewall-cmd --permanent --zone=public --add-port=5901-5905/tcp
端口設(shè)置根據(jù)自己的情況設(shè)置肠鲫,如果前面的vncserver@:1.service為1,端口就是5901.

7.客戶端登陸
下載vnc view客戶端
登陸服務(wù)器


Screen Shot 2018-04-04 at 4.09.13 PM.png

密碼登陸后:


Screen Shot 2018-04-04 at 4.10.53 PM.png

目前為止或粮,VNC 設(shè)置完成了

8.運行selenium代碼
與在本機(jī)運行情況相同导饲,在運行前終端輸入 export DISPLAY=:1
這里的數(shù)字也是前面設(shè)置的端口數(shù)字。

好了整個centos 桌面GUI 環(huán)境就完成了氯材。

需要注意的幾點是:
1.服務(wù)器最好選用內(nèi)存大一些的渣锦,不然會出現(xiàn)很多無法解決的錯誤。
2.目前國內(nèi)國外網(wǎng)上關(guān)于VNC設(shè)置的教程都是老版本氢哮,在設(shè)置vncserver@:1.service時按照文檔提示進(jìn)行設(shè)置泡挺,尤其注意如果使用root用戶進(jìn)行設(shè)置,一定要去掉PIDFILE路徑的/home.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末命浴,一起剝皮案震驚了整個濱河市娄猫,隨后出現(xiàn)的幾起案子贱除,更是在濱河造成了極大的恐慌,老刑警劉巖媳溺,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件月幌,死亡現(xiàn)場離奇詭異,居然都是意外死亡悬蔽,警方通過查閱死者的電腦和手機(jī)扯躺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝎困,“玉大人录语,你說我怎么就攤上這事『坛耍” “怎么了澎埠?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長始藕。 經(jīng)常有香客問我蒲稳,道長,這世上最難降的妖魔是什么伍派? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任江耀,我火速辦了婚禮,結(jié)果婚禮上诉植,老公的妹妹穿的比我還像新娘祥国。我一直安慰自己,他們只是感情好晾腔,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布系宫。 她就那樣靜靜地躺著,像睡著了一般建车。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上椒惨,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天缤至,我揣著相機(jī)與錄音,去河邊找鬼康谆。 笑死领斥,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沃暗。 我是一名探鬼主播月洛,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼孽锥!你這毒婦竟也來了嚼黔?” 一聲冷哼從身側(cè)響起细层,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唬涧,沒想到半個月后疫赎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡碎节,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年捧搞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狮荔。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡胎撇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出殖氏,到底是詐尸還是另有隱情晚树,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布受葛,位于F島的核電站题涨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏总滩。R本人自食惡果不足惜纲堵,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闰渔。 院中可真熱鬧席函,春花似錦、人聲如沸冈涧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽督弓。三九已至营曼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間愚隧,已是汗流浹背蒂阱。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留狂塘,地道東北人录煤。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像荞胡,于是被迫代替她去往敵國和親妈踊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容