新四季網

滑動驗證碼怎麼解決,請滑動驗證碼完成安全驗證

2023-04-02 05:52:35

  很多朋友反饋,在web自動化的過程中,經常被登錄的驗證碼卡住,不知道驗證碼怎麼過。今天,我想和你談談驗證碼。一般情況下可以找開發商幫忙解決,關閉驗證碼,或者給個通用驗證碼!那麼如果開發沒有幫助,我們有什麼辦法處理這些驗證碼呢?當然,答案是肯定的。常見的驗證碼一般分為兩類,一類是圖形驗證碼,一類是滑動驗證碼!

  關於圖形識別的驗證碼,之前已經開發了相關的識別解決方案,今天就不多介紹了。有興趣的朋友可以私聊獲取配套視頻資料。今天主要講一下如何識別和破解滑動驗證碼。

  滑動驗證和破解的思路一般是以下兩個步驟:

   1.獲取滑塊的滑動距離。

   2.模擬拖動滑塊,通過驗證。

  聽起來很簡單,但是要得到滑塊的滑動距離,大部分朋友都沒有概念,不知道怎麼得到。其實並不難得到。關於這個滑動驗證碼,滑塊和缺口的背景是分開的圖像。我們可以下載這兩幅圖像,藉助圖像識別技術,識別出背景圖像中缺口的位置,然後減去滑塊的當前位置,得到要滑動的距離。這時候很多朋友會覺得我認不出圖像技術。沒有也沒關係。稍後我們會給你一個打包的滑塊識別模塊。只要傳入滑塊和凹口背景圖片的元素節點,就可以計算出滑塊的凹口位置。

  沒有太多可以解釋的情況。我們先來看一個案例(QQ空間登錄)。這裡我用過一個滑動距離識別模塊,slideVerfication,自己打包的。有需要的朋友可以私聊獲取。qq空間登錄案例的實現步驟如下:

   1.創建一個驅動程序對象並訪問qq登錄頁面。

   2.輸入帳戶密碼。

   3.單擊登錄。

   4.模擬滑動驗證

  實現代碼 =====================作者:檸檬類-木森時間:2020/4/0 20:12 e-郵箱:3247119728 @ qq.com公司3360湖南零度檸檬信息技術有限公司Ltd.====================== 從Selenium導入WebDriver從Citation導入slideverificationcode # 1、創建驅動程序對象,訪問qq登錄頁面browser=web driver . chromebrowser . get( https://qzone . QQ.com/)# 2、輸入帳號密碼# 2.0點擊切換到iframe browser . switch _ to . frame( log in _ frame )# 2.1點擊帳號密碼登錄browser.find _ element _ by _ id 點擊# 2.2定位帳號輸入框,輸入帳號browser.find _ element _ by _ id (U )。Send _ keys (123292678) # 2.3輸入位置密碼browser.find _ element _ by _ id (P )。Send _ keys (Python01) # 3,點擊瀏覽器。find _ element _ by _ id(登錄_按鈕)。單擊時間。睡眠(三)# 4, 模擬滑動驗證# 4.1切換到TCAPTCHA=browser . find _ element _ by _ id( TCAPTCHA _ iframe )browser . Switch _ to . frame(TCAPTCHA)# 4.2獲取滑動相關元素#選擇節點slide _ element=browser . find _ element _ by _ id( TCAPTCHA _ drag _ thumb )#節點slide block _ ele=browser . find _ element _ by _ id( slide block )# 獲取缺口背景圖片節點slide BG=browser . find _ element _ by _ id( slide BG )# 4.3計算滑動距離sc=slide verification code(save _ image=true)Distance=sc . get _ element _ slide _ Distance(slide block _ ele,slide bg) #滑動距離的誤差修正,滑動距離*圖片在網頁上顯示的縮放比例-滑塊的初始位置相對距離=distance * (280/680)-22print(修正的滑動距離),distance)# 4.4,滑動sc。 slide _ verification (browser,slide _ element,Distance=100)運行效果:這樣就解決了滑動驗證碼的識別問題。然後,我們來說說封裝的slideVerfication模塊的識別原理。其實這個模塊的圖像識別也是藉助第三方圖像處理模塊進行的。python中有很多現成的處理圖片的庫,這裡我用opencv-python進行識別。上面在slideVerfication模塊中使用的兩種方法的一些參考代碼如下:

   def get _ element _ slide _ distanc

  e(self, slider_ele, background_ele, correct=0): """ 根據傳入滑塊,和背景的節點,計算滑塊的距離 該方法只能計算 滑塊和背景圖都是一張完整圖片的場景, 如果背景圖是通過多張小圖拼接起來的背景圖, 該方法不適用,請使用get_image_slide_distance這個方法 :param slider_ele: 滑塊圖片的節點 :type slider_ele: WebElement :param background_ele: 背景圖的節點 :type background_ele:WebElement :param correct:滑塊缺口截圖的修正值,默認為0,調試截圖是否正確的情況下才會用 :type: int :return: 背景圖缺口位置的X軸坐標位置(缺口圖片左邊界位置) """ # 獲取驗證碼的圖片 slider_url = slider_ele.get_attribute("src") background_url = background_ele.get_attribute("src") # 下載驗證碼背景圖,滑動圖片 slider = "slider.jpg" background = "background.jpg" self.onload_save_img(slider_url, slider) self.onload_save_img(background_url, background) # 讀取進行色度圖片,轉換為numpy中的數組類型數據, slider_pic = cv2.imread(slider, 0) background_pic = cv2.imread(background, 0) # 獲取缺口圖數組的形狀 -->缺口圖的寬和高 width, height = slider_pic.shape[::-1] # 將處理之後的圖片另存 slider01 = "slider01.jpg" background_01 = "background01.jpg" cv2.imwrite(background_01, background_pic) cv2.imwrite(slider01, slider_pic) # 讀取另存的滑塊圖 slider_pic = cv2.imread(slider01) # 進行色彩轉換 slider_pic = cv2.cvtColor(slider_pic, cv2.COLOR_BGR2GRAY) # 獲取色差的絕對值 slider_pic = abs(255 - slider_pic) # 保存圖片 cv2.imwrite(slider01, slider_pic) # 讀取滑塊 slider_pic = cv2.imread(slider01) # 讀取背景圖 background_pic = cv2.imread(background_01) # 比較兩張圖的重疊區域 result = cv2.matchTemplate(slider_pic, background_pic, cv2.TM_CCOEFF_NORMED) # 獲取圖片的缺口位置 top, left = np.unravel_index(result.argmax, result.shape) # 背景圖中的圖片缺口坐標位置 print("當前滑塊的缺口位置:", (left, top, left + width, top + height)) return leftdef slide_verification(self, driver, slide_element, distance): """ 滑動滑塊進行驗證 :param driver: driver對象 :type driver:webdriver.Chrome :param slide_element: 滑塊的元組 :type slider_ele: WebElement :param distance: 滑動的距離 :type: int :return: """ # 獲取滑動前頁面的url地址 start_url = driver.current_url print("需要滑動的距離為:", distance) # 根據滑動距離生成滑動軌跡 locus = self.get_slide_locus(distance) print("生成的滑動軌跡為:{},軌跡的距離之和為{}".format(locus, distance)) # 按下滑鼠左鍵 ActionChains(driver).click_and_hold(slide_element).perform time.sleep(0.5) # 遍歷軌跡進行滑動 for loc in locus: time.sleep(0.01) ActionChains(driver).move_by_offset(loc, random.randint(-5, 5)).perform ActionChains(driver).context_click(slide_element) # 釋放滑鼠 ActionChains(driver).release(on_element=slide_element).perform

  ​ 關於滑動驗證碼識別就給大家分享到這裡了,上述解決方案也有對應的講解視頻

同类文章
 古代女子偷情會受什麼處罰?她們用生命在偷歡

古代女子偷情會受什麼處罰?她們用生命在偷歡

空虛了,寂寞了,感情上找不到依靠,那就幫身體找個依靠吧。在現代,偷情是道德問題,而在古代,偷情有時候就是促犯法律的問題,看到這裡,大家一定很好奇古代女子人情會受到怎麼處罰吧,下面就隨著51區未解之謎網小編一起來看看吧。古代女子偷情一般會受到七種處罰1、騎木驢一種針對女性犯人的酷刑。所謂木驢,其實就是
 美國為什麼那麼多地震?揭秘美國地震多的原因

美國為什麼那麼多地震?揭秘美國地震多的原因

地震這一自然危害,來時悄無聲息,走時遍地狼藉,危害十分的大,更讓人鬱悶的是,現代雖有地震預警系統,但當地震來臨時,人們是無力抵抗的。這其中,美國就是一個地震多發國,而且集中在過去的十年。那麼美國為什麼那麼多地震呢?下面隨著小編一起來看看下面這篇文章吧。美國為什麼那麼多地震?揭秘美國地震多的原因比如從
 這六部劇情有點黃的電影,你喜歡哪部?

這六部劇情有點黃的電影,你喜歡哪部?

很多的電影都會在劇情當中加上一些色情或是暴力的鏡頭,從而增加觀眾看片時的感官體驗。今天現編就給大家帶來幾部能夠刷新你世界觀、考驗人的心理承受能力的片子、大家一起來看看吧!一、《下水道人魚》此片給人的最大衝擊來自於視覺,骯髒的下水道、半泡在髒水中的棄嬰、成堆的蛆、腐爛的貓、長的腐-肉、流著粘稠液體的膿

下一次龍年是哪幾年,龍年的下一個年是什麼年

下一次龍年是哪幾年,龍年的下一個年是什麼年以2022年為基準,下一個龍年是2024年。另外,龍年有:1940年、1952年、1964年、1976年、1988年、2000年、2012年、2036年、2048年、2060年、2072年等。龍年龍在十二生肖中排名第五,與十二地支同屬於「辰」。一天中十二個小
 日本為什麼那麼乾淨?國人看了臉紅

日本為什麼那麼乾淨?國人看了臉紅

一次偶然的機會,我去過日本,有一句本不想說出口,但又實在忍不住,那就是日本為什麼那麼乾淨?可是反觀我國城市有一些街道就顯得非常的髒亂,這到底是什麼原因呢?經過了解,我發現日本做到了下以八個方面,下面我們就一起來看看吧。1.沒公共垃圾桶,垃圾自行帶回家丟。日本為什麼那麼乾淨相對於不少國家來說,日本街道
 日本最不容錯過的9部情色電影 這些電影你都看過嗎?

日本最不容錯過的9部情色電影 這些電影你都看過嗎?

一說到日本電影大多數人都會想到日本動作情色電影,也許你會覺得現在直來直去的日本AV實在太無趣了,那麼你可以回頭看看AV這個詞出現的前後(上世紀80年代初)的日本情色電影吧。今天51區小編就給大家介紹幾部最經典的日本情色電影,不然錯過哦!其中的經典電影,香豔自然少不了,還有對人性的深刻描寫。1、瀨瀨敬

三十四個省級行政區簡稱和行政中心地圖,三十四個省級行政區簡稱和行政中心順口溜

三十四個省級行政區簡稱和行政中心地圖,三十四個省級行政區簡稱和行政中心順口溜北京北京北京。天津,天津,天津。上海,上海,上海。重慶,重慶,重慶。河北省,河北,石家莊。河南,河南,鄭州。湖北省,湖北,武漢。湖南,湖南,長沙。江蘇,江蘇,南京。江西省,江西,南昌。遼寧,遼寧,瀋陽。吉林,吉林,長春。三十

唐朝西涼是現在的哪個省,北涼是現在的哪個省

唐朝西涼是現在的哪個省,北涼是現在的哪個省西涼,中國歷史上的「涼州」,位於中國西部,主要在甘肅省境內,故稱西涼、西州。涼州有著悠久的人類活動歷史。早在四五千年前,戎、崔、月氏、烏孫等北方民族就已雜居。涼州是西漢和唐朝時期僅次於長安的中國西北最大的古城。東晉十六國時期前涼後涼,南涼北涼,唐初的都城大良
 apa酒店老闆新書否認南京大屠殺 絕撤書日本要付出什麼代價?

apa酒店老闆新書否認南京大屠殺 絕撤書日本要付出什麼代價?

今年1月份,APA集團代表元古谷志雄的著書否認南京大屠殺成為問題起源。介紹該書的視頻在中國網上流傳後,引起了強烈中韓民眾強烈不滿,進而發起抵制該集團的行動。沒想到風波才過去短短幾個月,元古谷志雄又跳出來「生事」——宣傳新書並且聲稱從未想過要撤掉擺在酒店客房內的有關書籍,更不會因為東京奧運會而這麼做。
 2017年春節是幾月幾號?2017年春節放假安排

2017年春節是幾月幾號?2017年春節放假安排

時間匆匆轉眼又是一年,馬上又到2017年了。很多朋友都在關心2017年春節是幾月幾號?2017年春節放假時間怎麼安排的!今天51區為大家提供最新放假時間!↓↓↓2017年春節是幾月幾號?從上圖可以看到除夕是2017年1月27號,那麼春節就是2017年1月28號咯。也就是說離過年52天(從2016年1