目標網站
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與瀏覽器中相同便是校驗成功,隨後請求想要的資料便可得到