主頁(yè) > 知識(shí)庫(kù) > 利用Python+Selenium破解春秋航空網(wǎng)滑塊驗(yàn)證碼的實(shí)戰(zhàn)過(guò)程

利用Python+Selenium破解春秋航空網(wǎng)滑塊驗(yàn)證碼的實(shí)戰(zhàn)過(guò)程

熱門標(biāo)簽:湛江智能外呼系統(tǒng)廠家 宿遷星美防封電銷卡 外呼并發(fā)線路 西藏房產(chǎn)智能外呼系統(tǒng)要多少錢 長(zhǎng)沙高頻外呼系統(tǒng)原理是什么 ai電話機(jī)器人哪里好 百度地圖標(biāo)注沒(méi)有了 ai電銷機(jī)器人源碼 地圖標(biāo)注審核表

前言

記錄一次利用Python+Selenium破解滑塊驗(yàn)證碼的實(shí)戰(zhàn)過(guò)程。
讓我們愉快地開(kāi)始吧~

開(kāi)發(fā)工具

Python版本: 3.6.4

相關(guān)模塊:

pillow模塊;

selenium模塊;

numpy模塊;

以及一些Python自帶的模塊。

其他:

chromedriver

環(huán)境搭建

安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。

實(shí)戰(zhàn)記錄

本文將記錄一次春秋航空的會(huì)員注冊(cè)頁(yè)面所使用的滑塊驗(yàn)證碼破譯過(guò)程,地址為:

https://account.ch.com/NonRegistrations-Regist

一. 驗(yàn)證碼簡(jiǎn)介

驗(yàn)證碼,即CAPTCHA,全自動(dòng)區(qū)分計(jì)算機(jī)和人類的公開(kāi)圖靈測(cè)試,換而言之,驗(yàn)證碼是一種用于區(qū)分人類與計(jì)算機(jī)的測(cè)試,只有通過(guò)了CAPTCHA,當(dāng)前用戶才被認(rèn)為是人類。

二.破解滑塊驗(yàn)證碼

滑塊驗(yàn)證碼,即用戶使用鼠標(biāo)將滑塊從某個(gè)位置拖動(dòng)到另一個(gè)位置,服務(wù)器通過(guò)用戶拖動(dòng)滑塊的軌跡來(lái)判斷當(dāng)前用戶是否為人類。本文將嘗試破解的是一種拼圖式的滑塊驗(yàn)證碼:

首先,我手動(dòng)完成了一次滑塊驗(yàn)證碼的驗(yàn)證,想看看需要向服務(wù)器端發(fā)送什么請(qǐng)求才算是通過(guò)了驗(yàn)證,隨便點(diǎn)開(kāi)了一個(gè),發(fā)現(xiàn)請(qǐng)求需要的參數(shù)是這樣的:

搞清楚每個(gè)參數(shù)當(dāng)然是可以的,簡(jiǎn)單想了一下,感覺(jué)應(yīng)該是這樣的:

首先,利用圖像處理技術(shù)計(jì)算滑塊到缺口的距離。然后,利用機(jī)器以與人類行為相似的方式將滑塊拖到缺口位置,完成驗(yàn)證。

2.1 計(jì)算滑塊到缺口的距離

首先,我們利用Selenium進(jìn)入滑塊驗(yàn)證碼界面:

也就是這個(gè)界面:

那么滑塊到缺口的距離該如何計(jì)算呢?

之前看到很多人是這么算的:

出現(xiàn)滑塊驗(yàn)證碼界面時(shí)對(duì)屏幕進(jìn)行截圖(此時(shí)背景圖是完整的),然后模擬點(diǎn)擊滑動(dòng)圓球,使滑塊和缺口出現(xiàn)(此時(shí)背景圖是有缺口的),此時(shí)再次截圖,通過(guò)對(duì)比兩次截圖即可輕松地找到缺口位置。

但是,此方案的前提是在點(diǎn)擊滑動(dòng)圓球之后才出現(xiàn)滑塊和缺口,點(diǎn)擊之前是完整的背景圖。這個(gè)方案在不久前還是可行的,但是魔高一尺道高一丈,數(shù)天前滑塊驗(yàn)證碼版本升級(jí)了?。?!滑塊驗(yàn)證碼直接顯示滑塊和缺口了?。?!也就是不給你看原圖了。

既然準(zhǔn)備用機(jī)器學(xué)習(xí),算法先不考慮,總得先有訓(xùn)練數(shù)據(jù)吧,于是我手動(dòng)刷新了幾次,想研究一下驗(yàn)證碼圖片該如何獲取,實(shí)在不行就手動(dòng)保存?zhèn)€幾百?gòu)???梢凰⑿拢l(fā)現(xiàn)了一件了不起的事情,這網(wǎng)站滑塊驗(yàn)證碼的背景圖只有四張!

根本不需要爬驗(yàn)證碼,手工標(biāo)注,然后訓(xùn)練了?;蛟S有人會(huì)問(wèn),為什么呢?

因?yàn)榫退膹埍尘皥D啊?。?!你完全可以這樣:
對(duì)當(dāng)前的滑塊驗(yàn)證碼界面進(jìn)行截圖,與對(duì)應(yīng)的完整背景圖進(jìn)行對(duì)比,找到缺口位置,即可計(jì)算出滑塊到缺口的距離了(滑塊初始位置的橫坐標(biāo)是固定的)。

上述方案有如下兩個(gè)問(wèn)題:

(1)如何獲取完整的背景圖?

答案:當(dāng)你完成滑塊驗(yàn)證碼的驗(yàn)證時(shí),還是會(huì)出現(xiàn)對(duì)應(yīng)的完整背景圖的,通過(guò)截屏軟件截下圖就好了。

結(jié)果如下:

(2)怎么找到當(dāng)前滑塊驗(yàn)證碼對(duì)應(yīng)的完整背景圖?

答案:因?yàn)橹挥兴膹垐D,沒(méi)必要用一些高大上的圖像匹配算法,看了下四張圖左上角頂點(diǎn)處的像素值,其中R值分別為:255,217,227,100,顯然,通過(guò)對(duì)比背景圖左上角頂點(diǎn)處的像素值即可找到當(dāng)前滑塊驗(yàn)證碼對(duì)應(yīng)的完整背景圖了,代碼實(shí)現(xiàn)如下:

注意,因?yàn)榻貓D是這樣子的:

所以驗(yàn)證碼背景圖左上角頂點(diǎn)處的坐標(biāo)會(huì)隨著電腦和截屏方式的改變而改變(具體而言,Selenium和我電腦上的截屏軟件截出來(lái)的圖,驗(yàn)證碼背景圖的位置坐標(biāo)是不一樣的,需要通過(guò)畫(huà)圖軟件確定具體位置)。

所以如果你無(wú)法用我的代碼完成滑塊驗(yàn)證碼破解的話,請(qǐng)自行修改(787, 282)和(787, 293)為適合你自己電腦實(shí)際情況的坐標(biāo)值。

接下來(lái),我們就可以計(jì)算滑塊到缺口的距離了!

先截取當(dāng)前滑塊驗(yàn)證碼界面,代碼實(shí)現(xiàn)如下:

這里我們把滑塊先移動(dòng)到最右端再截圖,否則滑塊將影響當(dāng)前驗(yàn)證碼界面與對(duì)應(yīng)的完整背景圖之間的像素對(duì)比(即第一次找到的像素差異較大點(diǎn)在滑塊上而不是在期望的缺口上)。

然后通過(guò)與對(duì)應(yīng)的完整背景圖進(jìn)行像素值對(duì)比,找到缺口位置,即可計(jì)算出滑塊到缺口的距離了(因?yàn)榛瑝K初始位置的橫坐標(biāo)是固定的):

2.2 將滑塊拖到缺口位置

接下來(lái),我們需要利用機(jī)器以與人類行為相似的方式將滑塊拖到缺口位置,完成驗(yàn)證。

一般而言,人手工拖動(dòng)滑塊的軌跡是這樣的:

即:先快速向右拖動(dòng),快到缺口時(shí),再減速慢調(diào)。那么這樣的軌跡該如何生成呢?

我想了兩種方案:

方案一是根據(jù)物理學(xué)中的加速度減速度來(lái)模擬拖動(dòng)滑塊的軌跡,代碼實(shí)現(xiàn)如下:

方案二是直接構(gòu)造一些函數(shù)來(lái)模擬拖動(dòng)滑塊的軌跡,函數(shù)代碼實(shí)現(xiàn)如下:

最后,使用Selenium按照設(shè)定的軌跡將滑塊移動(dòng)到缺口處即可:

文章到這里就結(jié)束了,感謝你的觀看,Python24個(gè)小游戲系列,下篇文章分享Python+Selenium破譯B站滑塊驗(yàn)證碼

到此這篇關(guān)于利用Python+Selenium破解春秋航空網(wǎng)滑塊驗(yàn)證碼的實(shí)戰(zhàn)過(guò)程的文章就介紹到這了,更多相關(guān)Python Selenium滑塊驗(yàn)證碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 詳解Python 使用 selenium 進(jìn)行自動(dòng)化測(cè)試或者協(xié)助日常工作
  • Python利用Selenium實(shí)現(xiàn)網(wǎng)站自動(dòng)簽到功能
  • Selenium+Python自動(dòng)化腳本環(huán)境搭建的全過(guò)程
  • python Selenium等待元素出現(xiàn)的具體方法
  • Python使用Selenium自動(dòng)進(jìn)行百度搜索的實(shí)現(xiàn)
  • Python中Selenium對(duì)Cookie的操作方法
  • python+opencv+selenium自動(dòng)化登錄郵箱并解決滑動(dòng)驗(yàn)證的問(wèn)題
  • 用Python selenium實(shí)現(xiàn)淘寶搶單機(jī)器人
  • 教你用Python+selenium搭建自動(dòng)化測(cè)試環(huán)境
  • Python selenium的這三種等待方式一定要會(huì)!
  • Python爬蟲(chóng)實(shí)戰(zhàn)之用selenium爬取某旅游網(wǎng)站
  • 教你如何使用Python selenium
  • python Web應(yīng)用程序測(cè)試selenium庫(kù)使用用法詳解

標(biāo)簽:盤錦 寧夏 大同 林芝 普洱 漯河 南平 海南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《利用Python+Selenium破解春秋航空網(wǎng)滑塊驗(yàn)證碼的實(shí)戰(zhàn)過(guò)程》,本文關(guān)鍵詞  利用,Python+Selenium,破解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《利用Python+Selenium破解春秋航空網(wǎng)滑塊驗(yàn)證碼的實(shí)戰(zhàn)過(guò)程》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于利用Python+Selenium破解春秋航空網(wǎng)滑塊驗(yàn)證碼的實(shí)戰(zhàn)過(guò)程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章