www.tjgcgs88.cn-狠狠久久亚洲欧美专区不卡,久久精品国产99久久无毒不卡,噼里啪啦国语版在线观看,zσzσzσ女人极品另类

  • <strike id="qgi8o"><td id="qgi8o"></td></strike>
  • <ul id="qgi8o"><acronym id="qgi8o"></acronym></ul>
  • <li id="qgi8o"></li>
    <ul id="qgi8o"></ul>
    <strike id="qgi8o"><rt id="qgi8o"></rt></strike>
    <ul id="qgi8o"><center id="qgi8o"></center></ul>
  • <kbd id="qgi8o"></kbd>

    使用Python+Selenium破解滑塊驗(yàn)證碼

    記錄一次利用Python+Selenium破解滑塊驗(yàn)證碼的實(shí)戰(zhàn)過程。

    讓我們愉快地開始吧~

    開發(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)證碼破解過程,地址為:

    account.ch.com/NonRegis...

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

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

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

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

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

    搞清楚每個(gè)參數(shù)當(dāng)然是可以的,但大夏天的實(shí)在沒有這個(gè)耐心,而且萬一過幾天驗(yàn)證碼的版本又升級(jí)了呢?豈不是透心涼。罷了罷了,安心當(dāng)個(gè)咸魚吧,反正是自己玩,沒有環(huán)境等因素限制,用Selenium算了吧。那么問題來了,如何用Selenium破解滑塊驗(yàn)證碼呢?簡(jiǎn)單想了一下,感覺應(yīng)該是這樣的:

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

    OK,有了大致思路,就可以開始干活了!

    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í)再次截圖,通過對(duì)比兩次截圖即可輕松地找到缺口位置。

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

    這該如何是好呢?邊緣檢測(cè)?機(jī)器學(xué)習(xí)?

    試了兩分鐘Canny算子,感覺效果很差,果斷放棄了邊緣檢測(cè),準(zhǔn)備投入機(jī)器學(xué)習(xí)的懷抱。

    既然準(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)練了。或許有人會(huì)問,為什么呢?

    因?yàn)榫退膹埍尘皥D啊!!!你完全可以這樣:

    對(duì)當(dāng)前的滑塊驗(yàn)證碼界面進(jìn)行截圖,與對(duì)應(yīng)的完整背景圖進(jìn)行對(duì)比,找到缺口位置,即可計(jì)算出滑塊到缺口的距離了(滑塊初始位置的橫坐標(biāo)是固定的)。

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

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

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

    結(jié)果如下:

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

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

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

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

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

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

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

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

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

    2.2 將滑塊拖到缺口位置:

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

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

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

    我想了兩種方案:

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

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

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

    That'all~

    效果展示:

    更多:

    代碼截止2018-07-29測(cè)試無誤。

    等到天氣舒服一點(diǎn)我再優(yōu)化一下破解方案吧,這個(gè)破解方案看起來挺low的,哈哈哈哈哈

    轉(zhuǎn)載 原文鏈接: 使用Python+Selenium破解滑塊驗(yàn)證碼

    使用Python+Selenium破解滑塊驗(yàn)證碼
    這里我們把滑塊先移動(dòng)到最右端再截圖,否則滑塊將影響當(dāng)前驗(yàn)證碼界面與對(duì)應(yīng)的完整背景圖之間的像素對(duì)比(即第一次找到的像素差異較大點(diǎn)在滑塊上而不是在期望的缺口上)。然后通過與對(duì)應(yīng)的完整背景圖進(jìn)行像素值對(duì)比,找到缺口位置,即可計(jì)算出滑塊到缺口的距離了(因?yàn)榛瑝K初始位置的橫坐標(biāo)是固定的):2.2 ...

    為什么用python滑動(dòng)驗(yàn)證碼從左邊滑動(dòng)到右邊驗(yàn)證不通過?
    在使用Python代碼實(shí)現(xiàn)模擬時(shí),要注意準(zhǔn)確模仿這一過程。可以先通過cv2庫(kù)定位滑塊的初始位置和目標(biāo)位置,然后設(shè)計(jì)一個(gè)滑動(dòng)函數(shù),通過逐步調(diào)整滑動(dòng)距離和速度來模擬滑動(dòng)動(dòng)作。在實(shí)現(xiàn)時(shí),需要根據(jù)驗(yàn)證機(jī)制的反饋調(diào)整滑動(dòng)參數(shù),以適應(yīng)不同的驗(yàn)證要求。具體實(shí)現(xiàn)步驟如下:使用selenium加載網(wǎng)頁(yè)并定位滑塊元素。 通過...

    Python奇淫技巧之自動(dòng)登錄嗶哩嗶哩
    步驟一:點(diǎn)擊登錄頁(yè)面。最挑戰(zhàn)的一步是精準(zhǔn)對(duì)準(zhǔn)缺口拖動(dòng)滑塊。要解決這個(gè)問題,我們需要獲取缺口位置。步驟二:缺口位置的獲取。缺口在canvas畫布中,而非圖片。理解并識(shí)別背景圖和滑塊是關(guān)鍵。使用js代碼選擇帶有缺口的標(biāo)簽,通過toDataURL("image\/png")方法,將canvas內(nèi)的圖片轉(zhuǎn)為base64位圖片。步驟三:難...

    selenium爬蟲被檢測(cè)到該如何破?
    首先,下載并使用pip安裝mitmproxy。接著,按照基本使用方法啟動(dòng)mitmproxy。在Windows系統(tǒng)上操作,然后在Linux系統(tǒng)中,依據(jù)具體步驟完成。打開Chrome的開發(fā)者工具,定位到目標(biāo)網(wǎng)站中控制webdriver響應(yīng)的js文件,標(biāo)記為重要步驟。接下來,編寫干擾腳本(DriverPass.py),針對(duì)上述js文件進(jìn)行操作,以達(dá)到屏蔽效果。退出...

    Python面試數(shù)據(jù)分析,爬蟲和深度學(xué)習(xí)一般都問什么問題,筆試題目考哪些...
    復(fù)雜驗(yàn)證碼:用selenium模擬登陸、處理滑塊驗(yàn)證碼等(滑塊驗(yàn)證碼有方法,之前破解過滑塊驗(yàn)證碼,有空我會(huì)出個(gè)基本使用教程,進(jìn)行滑塊驗(yàn)證碼破解,但不一定通用,因?yàn)槊總€(gè)網(wǎng)站反爬措施設(shè)置都不一樣)4.處理過的最難的驗(yàn)證碼?答:12306點(diǎn)擊圖片驗(yàn)證碼。原理:圖片發(fā)送給打碼平臺(tái),平臺(tái)返回圖片位置數(shù)值,通過...

    python課程學(xué)什么
    1.requests庫(kù):發(fā)送網(wǎng)頁(yè)請(qǐng)求,返回?cái)?shù)據(jù)。2.xpath:用于網(wǎng)頁(yè)元素的提取(當(dāng)然還有bs4、pyquery等,選擇順手的)。3.selenium:用于真實(shí)瀏覽器訪問網(wǎng)頁(yè),根據(jù)具體情況使用。4.scrapy:用于大規(guī)模快速網(wǎng)頁(yè)數(shù)據(jù)爬取。5.驗(yàn)證碼破解:驗(yàn)證碼破解建議大家可以多搞點(diǎn)難破解的,比如滑塊驗(yàn)證碼、淘寶驗(yàn)證碼、12306驗(yàn)證...

    相關(guān)評(píng)說:

  • 丁錢19768039726: 怎么利用python和selenium,firefox 搭建自動(dòng)化測(cè)試環(huán)境 -
    水磨溝區(qū)螺釘: ______ 構(gòu)建Python+Selenium2自動(dòng)化測(cè)試環(huán)境完成之后,就需要測(cè)試支持python的selenium的版本是否都支持在不同瀏覽器上運(yùn)行,當(dāng)前分別在三個(gè)最通用的瀏覽器上通過腳本來測(cè)試.
  • 丁錢19768039726: 剛學(xué)selenium有點(diǎn)迷茫:python+selenium環(huán)境搭建好以后和selenium IDE+RC的組合有區(qū)別么 -
    水磨溝區(qū)螺釘: ______ selenium ide是用來錄制的!大概可以這樣認(rèn)為selenium ide 錄制完的腳本,通過RC啟動(dòng)不同瀏覽器運(yùn)行測(cè)試!python+selenium,是需要自己搭框架的,搭完框架后需要自己去寫腳本,需要對(duì)selenium進(jìn)行二次封裝,這樣寫腳本會(huì)更加靈活,更有效率,可讀性強(qiáng),重復(fù)運(yùn)行穩(wěn)定性高,而且也易于維護(hù)!所以說,兩個(gè)是完全不同層次的!但也是一步步過來的,使用seleniumIDE后你很快就會(huì)發(fā)現(xiàn)它的弊端和局限!到時(shí),你自然會(huì)慢慢自己寫!!!
  • 丁錢19768039726: python selenium unittest 在第一個(gè)用例打開的頁(yè)面上執(zhí)行第二用例 -
    水磨溝區(qū)螺釘: ______ 那就直接在第一個(gè)用例結(jié)束后再繼續(xù)寫第二個(gè)用例的操作就可以了啊,但這樣的話,第一個(gè)用例失敗就可能會(huì)影響到第二個(gè)的正常運(yùn)行,所以還是最好保持每個(gè)case之間的獨(dú)立性
  • 丁錢19768039726: python+selenium如何定位頁(yè)面的元素,有幾種定位元素的方法 -
    水磨溝區(qū)螺釘: ______ xpath定位,你用chrome瀏覽器,在頁(yè)面上右鍵-》審查元素,然后會(huì)彈出開發(fā)者工具,里面會(huì)顯示你選中部分的頁(yè)面源碼并高亮你選擇的地方,在源碼里右鍵,選擇copy xpath 用這個(gè)定位
  • 丁錢19768039726: 怎樣開始寫第一個(gè)基于python的selenium腳本 -
    水磨溝區(qū)螺釘: ______ 經(jīng)常發(fā)現(xiàn)很多同學(xué)裝好了python+selenium webdriver開發(fā)環(huán)境后不知道怎么去查看api文檔,在這里乙醇簡(jiǎn)單介紹一下具體方法,其實(shí)非常簡(jiǎn)單. 首先打開命令行,在doc窗口輸入: python -m pydoc -p 4567 簡(jiǎn)單解釋一下: python -m pydoc表示打開pydo
  • 丁錢19768039726: Python + Selenium 怎么用 Firefox 加載 URL -
    水磨溝區(qū)螺釘: ______ #!/usr/bin/python3.4# -*- coding: utf-8 -*- from selenium import webdriver import time# http://www.cnblogs.com/fnng/p/3238685.html# 打開火狐瀏覽器 browser = webdriver.Firefox()# 輸入網(wǎng)址 browser.get("http://www.baidu.com")# 根據(jù)各自網(wǎng)...
  • 丁錢19768039726: 如何使用 Python 編寫自動(dòng)登錄的腳本 -
    水磨溝區(qū)螺釘: ______ 是要接口登錄還是UI自動(dòng)化登錄. UI自動(dòng)化登錄比較容易實(shí)現(xiàn),用python+selenium就可以. 如果是接口登錄,驗(yàn)證較多,比較不容易.可以用ui自動(dòng)登錄后,獲取到cookie,此后,請(qǐng)求其他接口時(shí),可以用這個(gè)cookie
  • 丁錢19768039726: 怎么用python做自動(dòng)化測(cè)試 -
    水磨溝區(qū)螺釘: ______ 1新建一臺(tái)Jenkins服務(wù)器,安裝并配置好Jenkins2配置一個(gè)自動(dòng)化測(cè)試腳本的代碼庫(kù),可以使用Git或者SVN等版本控制工具.然后在Jenkins服務(wù)器上配置一個(gè)Job,負(fù)責(zé)自動(dòng)的同步最新代碼到Jenkins服務(wù)器上.3配置要跑自動(dòng)化測(cè)試的虛擬機(jī)...
  • 丁錢19768039726: 請(qǐng)問用python+selenium該如何定位圖片中的<img>標(biāo)簽?并進(jìn)行點(diǎn)擊? -
    水磨溝區(qū)螺釘: ______ 學(xué)習(xí)下xpath或者css的定位
  • 丁錢19768039726: python 下用selenium打開phantomjs出錯(cuò),請(qǐng)問如何處理 -
    水磨溝區(qū)螺釘: ______ python的js解析,發(fā)現(xiàn)使用Selenium+PhantomJS的方案還是比較適合我的,以下是環(huán)境配置教程. Selenium及PhantomJS介紹: Selenium是一個(gè)用于Web應(yīng)用程序測(cè)試的工具,Selenium測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣...
  • 国产精品专区3| 一本大道无码日韩精品视频va| 无遮挡国产高潮视频免费观看| 国产成人精品A视频| 久久午夜无码鲁丝片97精品精华液| 国精产品ZZLG77777| 亚洲国产一区二区三区直接播放心得| 无码国产伦一区二区三区视频| 小小影视大全在线观看电视剧免费| 草民电影院|