陸陸續續一直有做過淘寶方面的爬蟲,登錄頁的滑塊是個大麻煩.
網上簡單找了下大概有三種法子:
1.淘寶綁定微博,直接使用微博賬號登錄
2.直接掃碼登錄
3.輸入賬號密碼+滑塊驗證
這裏我就總結下滑塊吧
18年4月份年做過一次,那時候是用的破解版的jxbrowser+java robot模擬各種鼠標點擊,賬號密碼都是後臺隨機截斷成n份,分n次,每次隨機m毫秒,設置進剪切板再模擬ctrl v粘貼到賬號密碼input,這相當於模擬手工操作了;效果出奇的好,居然驗證碼都不出來,可以直接登錄;
上圖是個催單外掛,那時候我老婆是個天貓客服,手裏四個天貓店鋪要接待.靠業績提成,一筆訂單在哪個客服手裏成交的,那這筆訂單金額就算誰的業績.結算工資就按業績來提成,不同業績額的提成檔次也不通.就是說業績越高提成的百分比也會越高.但是有好多顧客是自己靜默下單,也就是說她不諮詢客服直接自己看中哪款商品就自己下單支付了,這樣的訂單金額系統是不會歸到任何客服業績裏面的,就相當於是個無效業績.我做的這個插件類似千牛的催單功能,但是我老婆的公司把千牛的催單功能關了;所以我寫了這個外掛,我老婆在家上晚班的時候就開啓給她用.
具體就是登錄四個天貓店鋪後臺賬號,四個線程不斷輪詢後臺提交訂單未付款的單據,我的輪詢時間很短3秒左右,天貓好像也沒有對我的賬號做出密集異常訪問的監控;一旦有客戶提交了訂單但是還沒有付款,被我的外掛輪詢到了,我做了個類似qq右下角彈框提示的功能並給每個店鋪配上了音頻,有新訂單就會彈框+播放音頻,這時我老婆就可以快速定位到該訂單的客戶,發送一條地址覈對的消息,如果用戶付款,那麼這筆業績就成功歸到了我老婆的業績裏面
講了這麼個小插曲,哈哈
這幾天朋友公司需要做一個天貓自動發貨的插件,本來想不用自動化的東西,想直接拿cookie在後臺嘗試提交數據的,嘗試許久無果,淘寶在提交數據上還是做了比較嚴格的驗證
嘗試無果後再嘗試以前的方法使用jxbrowser,也不行了出了滑塊驗證,在jxbrowser裏面就算人工手動輸入賬號密碼滑動滑塊也不行,直接異常,這樣應該就是jxbrowser被識別了吧;
再換方法,用selenium + chromedriver,一開始也不行跟jxbrowser一樣,識別異常;
不甘心找資料,有個解決方案是說開啓chromedrive的開發者模式,我用的java
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
加上這個之後,我手動輸入賬號密碼滑動滑塊可以登錄成功
然後我嘗試換成自動化輸入賬號密碼,action模擬人工拖動(自己寫了個簡單的方法)滑塊,最後也還是不行,人工拖動滑塊可以驗證通過,使用機器模擬死活都不通過.
繼續找資料,找到寫國外資料
大概意思操作就是咱現在使用的chromedriver,裏面有個變量$cdc_asdjflasutopfhvcZLmcfl_會被檢測到,從而判斷你使用了selenium,我們可以使用16進制的編輯器來編輯chromedriver,將裏面的$cdc替換成其他的同長度的字符來代替,例如$abc $efg...
我這裏沒有自己去改,我直接使用的一個別人改好的來用的.把我下載官方的chromedriver替換掉,重啓程序,神乎其技,跑通了...
OK,就分享到這裏,接下來我要研究下嘗試selenium多線程來提一下效率
歡迎同樣對這些玩意感興趣的朋友來討論!!!