日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

凡科网JS逆向后跳出的滑块验证(base64图片解码之后的破解滑块验证)

發布時間:2024/1/18 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 凡科网JS逆向后跳出的滑块验证(base64图片解码之后的破解滑块验证) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

? ? ?? 1.前提和大概思路概述

? ? ?? 2. 轉換思路selenium和驗證滑塊圖片的獲取處理

? ? ?? 3.總結


? ? ? 1.前提和大概思路概述 ?

? ? ? ? 只是學習的途中有一些新的發現,分享給大家,希望對你們有幫助。

? ? ? ? 凡科網的JS逆向的閉包技巧應該是典型的閉包案例,很多人都有講解,這里只做一個粗略介紹。

?

?

?正常完成逆向之后,進行模擬登錄,好像是因為我的多次請求,出現了滑塊驗證

?先要做的是拿到底圖和完整圖或者滑塊,但凡科網的這里只能找到圖片base64偽加密后的imgId和sliderId,發起對應請求想得到后解碼,奈何自己實在試過一堆法子,一直請求失敗,無奈下換用selenium做模擬登錄,重要的還是做滑塊的思路嘛(實際還是自己實力不夠--)

{'success': False, 'msg': {'dealType': 1, 'capErrno': -2}}

? ? ? ?

? ? ?? 2. 轉換思路selenium和驗證滑塊圖片的獲取處理

????????用到的庫:

from selenium.webdriver import Chrome import time import requests from selenium.webdriver.common.action_chains import ActionChains import base64 import numpy as np import cv2 as cv

? ? ? ? ?? 先模擬登錄一下試試

# ***中輸入你的賬號和密碼web = Chrome()web.get('https://i.fkw.com/')time.sleep(1)web.find_element_by_xpath('//*[@id="loginCacct"]').send_keys('***')web.find_element_by_xpath('//*[@id="loginPwd"]').send_keys('***')time.sleep(1)web.find_element_by_xpath('//*[@id="login_button"]').click()time.sleep(2)

? ? ? ? 好家伙一下子就進去了,可畢竟咱們是長見識為主,所以咱拿錯誤的賬號密碼來做試驗(正確的重復多次登錄后也會出現)

? ? ? ? 現在的重點主要是獲取到對應的圖片base64編碼后的數據,在進行解碼,存儲圖片。(注意只需要base64后的數據,要對數據做一定處理)

ImgId_str = web.find_element_by_xpath('/html/body/div[4]/div/div[2]/div/div/div[3]/div/div[1]/div[1]/img[1]').get_attribute('src')ImgId = '/' + ImgId_str.strip('data:image/jpeg;base64,')sliderId_str = web.find_element_by_xpath('/html/body/div[4]/div/div[2]/div/div/div[3]/div/div[1]/div[1]/img[2]').get_attribute('src')sliderId = 'i' + sliderId_str.lstrip('data:image/jpeg;base64,')

? ? ? ?? 發現得到的這大串玩意,看起來蠻爽

? ? ? ?? 開始解碼,好像規則里的 整除加= 不是很有作用,我試了試加不加都可以(可能是我忽略了細節), 把滑塊和底圖都存儲起來。

def decode_base64(strs,i):if(len(strs)%4 == 1):strs += "==="elif(len(strs)%4 == 2):strs += '=='elif(len(strs)%4 == 3):strs += '='imgdata = base64.b64decode(strs)file = open(f'{i}.jpg','wb')file.write(imgdata)file.close()

????????用cv.TM_CCOEFF_NORMED算法進行精度匹配,將一維位置轉換為二維位置,得到x,y的坐標。

Img_ = cv.imread('1.jpg')slider_ = cv.imread('2.jpg')result = cv.matchTemplate(Img_, slider_, cv.TM_CCOEFF_NORMED)yiwei_ = np.argmax(result) x, y = np.unravel_index(yiwei_, result.shape) time.sleep(2)# print(x,y)

? ? ? ? 找到滑的地方,模擬人工滑動,即可完成。(注意傳輸的坐標值)

web.implicitly_wait(10)btn = web.find_element_by_xpath('/html/body/div[4]/div/div[2]/div/div/div[3]/div/div[1]/div[2]/div[1]/div')ActionChains(web).drag_and_drop_by_offset(btn, xoffset=y, yoffset=0).perform()

? ? ?? 3.總結

? ? ? ? 對圖片base64解碼處理后的滑塊驗證,很多地方都可以優化,比如如何讓匹配速度更快,模擬人工軌跡一步步滑等等。爬蟲無上限,可能圖片驗證,滑塊驗證成功,賬號密碼正確,還是會顯示驗證碼錯誤(12306目前是這樣的),還有很多的selenium限制的地方。

? ? ? ? 歡迎看到這篇的你們提出寶貴意見,一起交流學習。

模擬人工軌跡參考:Python爬蟲滑塊驗證

opencv環境安裝:OpenCV-python安裝教程

????????

? ? ? ??

總結

以上是生活随笔為你收集整理的凡科网JS逆向后跳出的滑块验证(base64图片解码之后的破解滑块验证)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。