實戰8-滑塊驗證

枸杞子*發表於2024-05-24

目標網站

aHR0cHM6Ly93LmR6d3d3LmNvbS8/Y2lkPTEx

1.分析

進入網站搜尋一個關鍵詞,例如:'金礦',然後手動過滑塊驗證,找到響應資料的請求

在測試過程得知資料請求中需要用到cookies

但是即使攜帶cookies請求還是獲取不到資料,此時就需要校驗驗證碼
分析校驗驗證碼的請求,多次測試這個數字是變化的


這段滑動距離就是請求中攜帶的數字

2.獲取cookies

搜尋cookies值得知cookie是set-cookie

程式碼

url = "https://w.dzwww.com/?act=dzwcode&t=0.8949014516774578"
response = requests.get(url, headers=session.headers,)
cook = {}
for k, v in response.cookies.items():
     cook[k] = v
print(cook)

全程請求需要會話維持

3.校驗驗證碼

3.1先獲取滑塊驗證需要的背景圖與缺口圖的二進位制 這邊獲取到的是一整三合一圖片所以需要將圖一,圖二用程式碼切割出,目前我沒有什麼好的方法只能講圖片儲存然後再用crop方式切割

程式碼

with open('all.png','wb+') as f:
f.write(background_bytes)
img = Image.open("all.png")
cropped = img.crop((0, 0, 240, 150))  # (left, upper, right, lower)
cropped.save("background_bytes.png")

3.2獲取距離值
使用ddddocr的方式
target_bytes:缺口二進位制
background_bytes:背景圖二進位制

det = ddddocr.DdddOcr(det=False, ocr=False, show_ad=False)
target = det.slide_match(target_bytes, background_bytes, simple_target=True)
print(target)
offset = target['target'][0]
print(offset)

獲取距離值後透過請求,如果返回response.text與瀏覽器中相同便是校驗成功,隨後請求想要的資料便可得到

4.總結

1.透過請求獲取set-cookie,並會話維持 2.獲取滑塊需要的兩個圖片二進位制 3.透過ddddocr得到距離值,校驗驗證碼 4.驗證碼校驗成功後,便可以請求得到想要資料

相關文章