Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 18 additions & 16 deletions crack.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import time
from random import ranint
from io import BytesIO
from PIL import Image
from selenium import webdriver
Expand Down Expand Up @@ -43,7 +44,7 @@ def get_position(self):
size = img.size
top, bottom, left, right = location['y'], location['y'] + size['height'], location['x'], location['x'] + size[
'width']
return (top, bottom, left, right)
return top, bottom, left, right

def get_screenshot(self):
"""
Expand Down Expand Up @@ -137,12 +138,13 @@ def get_track(self, distance):
v = 0

while current < distance:
# 加速度随机,更像人的操作
if current < mid:
# 加速度为正2
a = 2
# 加速度为正
a = ranint(2, 6)
else:
# 加速度为负3
a = -3
# 加速度为负
a = -randint(2, 4)
# 初速度v0
v0 = v
# 当前速度v = v0 + at
Expand Down Expand Up @@ -184,13 +186,15 @@ def crack(self):
# 点击验证按钮
button = self.get_geetest_button()
button.click()
# 获取验证码图片
# 获取带缺口的验证码图片
image1 = self.get_geetest_image('captcha1.png')
# 点按呼出缺口
slider = self.get_slider()
slider.click()
# 获取带缺口的验证码图片
# slider.click()
# 获取不带缺口的验证码图片
self.browser.execute_script("document.getElementsByClassName('geetest_canvas_fullbg')[0].style.display='block'")
image2 = self.get_geetest_image('captcha2.png')
self.browser.execute_script("document.getElementsByClassName('geetest_canvas_fullbg')[0].style.display='none'")
# 获取缺口位置
gap = self.get_gap(image1, image2)
print('缺口位置', gap)
Expand All @@ -202,15 +206,13 @@ def crack(self):
# 拖动滑块
self.move_to_gap(slider, track)

success = self.wait.until(
EC.text_to_be_present_in_element((By.CLASS_NAME, 'geetest_success_radar_tip_content'), '验证成功'))
print(success)

# 失败后重试
if not success:
self.crack()
else:
try:
success = self.wait.until(
EC.text_to_be_present_in_element((By.CLASS_NAME, 'geetest_success_radar_tip_content'), '验证成功'))
self.login()
except:
# 失败后重试
self.crack()


if __name__ == '__main__':
Expand Down