http://118.25.172.253/2019/01/05/使用cdp4j進行淘寶自動化登錄/#morehtml
cdp4j is a web-automation library for Java. It can be used for automating the use of web pages and for testing web pages. It use Google Chrome DevTools Protocol to automate Chrome/Chromium based browsers.java
簡單來講cdp4j就是一款在java端經過代碼直接驅動谷歌瀏覽器的工具,咱們能夠用它來實現一些自動化測試或爬蟲。web
這裏咱們用它來實現淘寶的自動化登錄。瀏覽器
先說明一下,cdp4j操控瀏覽器,瀏覽器是沒法檢測出是否是自動化工具的。 而selenium操控瀏覽器,是會被識別出來的。cookie
因此咱們若是用selenium操做瀏覽器進行淘寶登錄,是沒法登錄的。除非使用代理軟件修改淘寶js文件,固然這是後話。session
不清楚cdp4j爲啥不會被檢測出來,可是cdp4j功能仍是比較少的,遠小於selenium。工具
因此cdp4j模擬登錄的失敗率較高,每每程序須要執行屢次纔可登錄成功,如上圖:測試
但即便這樣,這也是能夠接受的。編碼
整個淘寶登錄過程差很少分爲下面5個階段。url
接下來,咱們對於這五個階段來進行編碼。
使用cdp4j須要電腦安裝了谷歌瀏覽器,而後在項目中添加cdp4j的依賴便可使用。
<dependency>
<groupId>io.webfolder</groupId>
<artifactId>cdp4j</artifactId>
<version>3.0.0</version>
</dependency>
複製代碼
Launcher launcher = new Launcher();
SessionFactory factory = launcher.launch();
Session session = factory.create();
String url = "https://login.taobao.com/member/login.jhtml?style=mini_top";
session.navigate(url).waitDocumentReady();
複製代碼
session.click("#TPL_username_1").sendKeys(username);
複製代碼
session.click("#TPL_password_1").sendKeys(password);
複製代碼
注意:cdp4j不支持操控鼠標進行滑動。因此咱們這裏使用java的robot類來操做鼠標進行滑動。
Robot robot = new Robot();
//設置操做延時 避免操做太快
robot.setAutoDelay(800);
//鼠標移動到某個點
robot.mouseMove(900, 266);
//使用左鍵按壓住
robot.mousePress(InputEvent.BUTTON1_MASK);
//移動到某個點
robot.mouseMove(1060, 266);
//釋放按壓
robot.mouseRelease(InputEvent.BUTTON1_MASK);
複製代碼
代碼很通俗易懂,難點在於那兩個點的座標。這座標是你電腦屏幕裏某個點的x,y座標。
怎麼找到?
能夠經過軟件獲取。可是軟件獲取的也不太精確,因此還須要本身判斷。。
session.click("#J_SubmitStatic");
複製代碼
基本上經過上述流程就能夠實現淘寶的登錄。
這裏簡單描述一下這種方法實現登錄的優缺點:
優勢:
缺點: