linux centos 安裝chrome selenium 實現(xiàn)自動簽到

在linux centos7上通過selenium、chromedriver實現(xiàn)網(wǎng)站(京東、西集、考拉)自動簽到

centos7安裝chrome

騰訊云服務(wù)器敏储,操作系統(tǒng)centos7.4,安裝chrome使用npm方式朋鞍。

步驟如下

chrome默認(rèn)安裝目錄/opt/google/chrome
可以用如下命令測試是否安裝成功:google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.baidu.com/
安裝成功會在當(dāng)前目錄生成百度首頁截圖(會報一個錯,但沒什么影響滥酥,是個缺少UI的提示)更舞,將截圖下載到windows機(jī)器,打開看到字體都是亂碼恨狈。這個亂碼對后來的腳本運行造成了很大誤導(dǎo)疏哗。后面會詳說。

遇到的問題:

  • 缺少相關(guān)依賴禾怠,逐個進(jìn)行安裝
  • 現(xiàn)在chrome最低支持centos7。centos6上的一些安裝腳本或方案均已失效贝搁,本想在公司測試機(jī)6.9上安裝吗氏,搜了一些資料最后發(fā)現(xiàn)是徒勞。甚至之前在6上能繞過一些限制安裝chrome的腳本的作者在他網(wǎng)站上聲明雷逆,該腳本已死弦讽,不要再聯(lián)系他了。
    • 7上的一些依賴都是無法在6上安裝的膀哲,yum找不到對應(yīng)的庫
  • centos6可以考慮安裝chromium

安裝chromedriver

需要注意的是chromedriver必須要與chrome版本對應(yīng)往产,否則不能正常工作。我這里安裝的是chrome68某宪,對應(yīng)的是chromedriver版本是2.41
對應(yīng)關(guān)系和下載地址仿村,百度就可以看到。下面地址僅供參考兴喂,隨時失效

  1. 對應(yīng)關(guān)系地址
  2. 下載地址

測試chromedriver:

[root@VM_0_11_centos chrome]# ./chromedriver
Starting ChromeDriver 2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706) on port 9515
Only local connections are allowed.  

如上說明啟動成功蔼囊。這里./chromediver --help可以查看命令使用說明。如果有報錯信息衣迷,可以加上參數(shù)./chromedriver --verbose輸出詳細(xì)日志畏鼓。
我在這里遇到一個問題,查了很久壶谒,運行./chromedriver命令后云矫,一直報錯,報一個[SERVER]中間一長串英文(99)汗菜,記不住了让禀,查了很久無果挑社,最后打開verbose參數(shù),提示了一個IPV6什么的錯誤堆缘,就把系統(tǒng)的ipv6地址設(shè)置打開了滔灶,命令是:sysctl -w net.ipv6.conf.all.disable_ipv6=0,之后就不再報錯了吼肥。但后來通過selenium運行的時候發(fā)現(xiàn)录平,不必理會該報錯。

運行selenium程序

此處值得說明是缀皱,chromeDriver需要設(shè)置一些options斗这,代碼如下:

 System.setProperty("webdriver.chrome.driver", "/opt/google/chrome/chromedriver");
 ChromeOptions options = new ChromeOptions();
 options.addArguments("--headless");
 options.addArguments("--no-sandbox");
 options.addArguments("--disable-gpu");
 options.addArguments("--window-size=1920,1080");
 ChromeDriver driver = new ChromeDriver(options);

遇到的問題

現(xiàn)象:xiji網(wǎng)可以正常登錄,但kaola啤斗、jd就失敗表箭,登錄不成功
結(jié)論:某些網(wǎng)站有安全驗證機(jī)制,比如網(wǎng)易钮莲,如果登錄IP非常用IP免钻,會彈出驗證碼。京東則會有一個中間頁提示安全信息崔拥。

說說錯誤
考拉的問題:

因為xiji的成功极舔,加上截圖里的亂碼,一直以為是字符編碼的問題链瓦,導(dǎo)致用戶名密碼錯誤拆魏,服務(wù)器不認(rèn)。于是又是設(shè)置系統(tǒng)語言慈俯,又是安裝字體渤刃,設(shè)置java文件編碼,設(shè)置都沒有效果贴膘。

京東的問題:

京東登錄失敗的問題在于卖子,用用戶名登陸后跳到了一個中間頁,提示有安全風(fēng)險步鉴,要我去綁定手機(jī)揪胃,但我手機(jī)已經(jīng)綁定了,如果直接用手機(jī)號+密碼登錄就沒問題氛琢。估計也是IP變化造成的問題喊递。

下面我說說怎么定位問題的。

chrome remote debug

這是chrome的一個debug功能阳似,可以用來在別的機(jī)器或chrome里debug無頭chrome胡野。
輸入命令:

STEP1:在遠(yuǎn)程機(jī)器(云服務(wù)器)上執(zhí)行:

google-chrome-stable --no-sandbox --headless --disable-gpu --remote-debugging-port=9222 https://m.kaola.com/login.html 

如此就在9222上監(jiān)聽了chrome的debug端口

STEP2:這里需要注意禁筏,上述操作只是chrome在本地暴露一個地址妆丘,遠(yuǎn)程是無法訪問的焰薄,在windows機(jī)器上打開http://ip:9222是無法訪問的察蹲,此時需要在云服務(wù)器上做一個端口映射,這里使用ssh命令

 ssh -L 0.0.0.0:9223:localhost:9222 localhost -N  

STEP3:
在chrome地址欄里輸入http://ip:9223 能看到當(dāng)前chrome debug信息,輸入http://ip:9223/json 能看到一些相信信息,這里暴露了一個websocket的調(diào)試地址

http://ip:9223/devtools/devtools.html?ws://ip:9223/devtools/page/ADE6C8375C62850FDD7C951260626600

這個地址是給websorcket用的户矢,可能需要一些開發(fā)才能使用,這里沒有深入殉疼。只作了解

STEP4:
在windows機(jī)器上打開chrome梯浪,地址欄輸入

chrome://inspect/#devices
enter image description here

先在第一個紅框處,配置服務(wù)器ip瓢娜,當(dāng)chrome檢測到的時候挂洛,就會在remote target里出現(xiàn)一個Target,點擊第二個紅框眠砾,inspect虏劲,就進(jìn)入debug模式了,就會打開一個窗口褒颈,里面就是在云服務(wù)上運行的chrome界面柒巫,地址是上面配置的https://m.kaola.com/login.html

enter image description here

這種方案的缺點主要有兩個:

  1. 網(wǎng)頁亂碼。但實際上并非亂碼谷丸,代碼完全跑的通吻育,用瀏覽器F12看源碼字體也不是亂碼,為什么網(wǎng)頁渲染亂碼淤井,更深入的原因查不到
  2. 操作延遲高,有的網(wǎng)站還算流暢摊趾,有的網(wǎng)站就很卡币狠,做一個 操作延遲很久,影像正常操作砾层。只能做一些基本驗證漩绵。

通過這種方案,我檢查到了為什么考拉總是登錄失敗的原因肛炮。我發(fā)現(xiàn)止吐,kaola登錄的時候總是提示滑動驗證碼,原來是ip不合法了侨糟,想必是第一次的時候就發(fā)現(xiàn)不是常用ip碍扔,讓輸入滑動驗證碼,之后一直嘗試登錄秕重,ip可能被拉黑了不同。

京東的問題是,點擊登錄,跳到了一個中間頁二拐,提示手機(jī)綁定安全之類的服鹅,后來改為手機(jī)號登錄就沒問題了。

通過remote debug方式百新,找到了登錄失敗的原因企软,下面看看怎么解決ip被封的問題。

使用squid代理

一般來說饭望,服務(wù)器拉黑ip的幾種情況

  • 短時間頻繁訪問
  • 密碼多次輸入錯誤
  • 非常用ip登錄

如何讓ip解封仗哨?大概有幾種:

  1. 輸入正確密碼,等待服務(wù)器解封
  2. 換一個賬號試試
  3. 重新注冊賬號杰妓,并登錄

最糟糕的情況是藻治,整個ip被封,無論使用哪個賬號都需要驗證巷挥。這次還比較幸運桩卵,重新注冊了一個網(wǎng)易賬號,登錄后倍宾,該賬號就不再需要滑動驗證雏节。

那么問題來了,遠(yuǎn)程云服務(wù)器的IP怎么才能解封高职?云服務(wù)器沒有界面钩乍,破解滑動驗證碼,成本太高怔锌;使用remote debug寥粹,亂碼操作難度大,延遲太高埃元,效率低下涝涤。

這里使用squid代理,在云服務(wù)器上安裝squid岛杀,暴露8000端口阔拳,本機(jī)windows 通過java代碼,chromedriver設(shè)置chrome的proxy地址為云服務(wù)器地址类嗤,端口8000糊肠,具體操作如下:

yum install squid
   
1.vi  /etc/squid/squid.conf,  在結(jié)尾處追加:
dns_nameservers 8.8.8.8
http_port 8000
cache_mem 60 MB  
2.注釋掉默認(rèn)的http_access deny all

創(chuàng)建squid交換目錄:
cd /usr/sbin/
./squid -z

啟動squid:
./squid

查看端口狀態(tài):
netstat -ntl

停止squid:
./squid -k shutdown

此時,squid已經(jīng)安裝并啟動完畢遗锣,在windows本機(jī)货裹,java代碼里加入

ChromeOptions options = new ChromeOptions();
options.addArguments("--proxy-server=http://188.131.133.231:8000");
ChromeDriver driver = new ChromeDriver(options);

然后啟動程序,打開chrome瀏覽器黄伊,此時打開百度泪酱,在搜索欄輸入ip138,顯示已經(jīng)是云服務(wù)器的ip了,如此一來墓阀,本機(jī)chrome代理到云服務(wù)器上毡惜,可以手動輸入滑動驗證碼,進(jìn)行解鎖斯撮。

我在這里試驗了幾種方式经伙,老賬號多次滑動驗證通過,依然需要滑動驗證勿锅,可能時間還不到帕膜。
通過新注冊網(wǎng)易賬號,登錄溢十,不需要驗證碼垮刹。通過。

總結(jié)

至此张弛,考拉的驗證和京東的驗證都通過了荒典,幾個主要的難點及知識點

  • chrome在linxu上界面亂碼原因?qū)е聠栴}查找走了很大彎路
  • 通過chrome remote debug定位linux chrome問題
  • 通過squid代理,將云服務(wù)器ip映射到本地吞鸭,本地手動滑動驗證碼解鎖ip
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寺董,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子刻剥,更是在濱河造成了極大的恐慌遮咖,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件造虏,死亡現(xiàn)場離奇詭異御吞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)漓藕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門魄藕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撵术,你說我怎么就攤上這事』扒疲” “怎么了嫩与?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長交排。 經(jīng)常有香客問我划滋,道長,這世上最難降的妖魔是什么埃篓? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任处坪,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘同窘。我一直安慰自己玄帕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布想邦。 她就那樣靜靜地躺著裤纹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丧没。 梳的紋絲不亂的頭發(fā)上鹰椒,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機(jī)與錄音呕童,去河邊找鬼漆际。 笑死,一個胖子當(dāng)著我的面吹牛夺饲,可吹牛的內(nèi)容都是我干的奸汇。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼钞支,長吁一口氣:“原來是場噩夢啊……” “哼茫蛹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起烁挟,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤婴洼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后撼嗓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柬采,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年且警,在試婚紗的時候發(fā)現(xiàn)自己被綠了粉捻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡斑芜,死狀恐怖肩刃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情杏头,我是刑警寧澤盈包,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站醇王,受9級特大地震影響呢燥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寓娩,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一叛氨、第九天 我趴在偏房一處隱蔽的房頂上張望呼渣。 院中可真熱鬧,春花似錦寞埠、人聲如沸屁置。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缰犁。三九已至,卻和暖如春怖糊,著一層夾襖步出監(jiān)牢的瞬間帅容,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工伍伤, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留并徘,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像姐直,于是被迫代替她去往敵國和親声畏。 傳聞我的和親對象是個殘疾皇子插龄,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

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

  • 用戶登錄三次重試 主要實現(xiàn)的是: 設(shè)置初始用戶名和登錄密碼均牢; 進(jìn)入登錄頁面才睹,提醒輸入用戶輸入用戶名和密碼徘跪; 若用戶...
    ae0fdc75017d閱讀 93評論 0 1
  • 聲明:以下文字均轉(zhuǎn)自北京問鼎之音文化發(fā)展有限公司官方網(wǎng)站,轉(zhuǎn)載請注明出處真椿。 我們正處在一個多媒體時代。 而視覺和聽...
    不朽華夏之魂閱讀 122評論 0 0
  • 現(xiàn)在一切或喜或悲的經(jīng)歷解恰,都會在將來的某一刻派上用場 我用這句話治愈了好多次消極的Moment护盈,卻在此刻卻無濟(jì)于事 ...
    Amylinnnnn閱讀 162評論 0 1
  • 自虐~自燃~自律 【2018年度目標(biāo)及檢視完成情況】 羅列年度目標(biāo)及完成進(jìn)度 【月度成果&溫馨時刻】 一腐宋、健康:跑...
    李玉平覺醒閱讀 253評論 0 0
  • 西瓜會五分鐘實用營銷課股權(quán)眾籌方案 [TOC] 本次融資100萬元,出讓股權(quán)10%胸竞,1萬起投。創(chuàng)始人:怪木西西 電...
    怪木勇勇閱讀 837評論 0 0