from selenium import webdriver import requests import time import click from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service import cv2 import numpy as np from selenium.webdriver.support.ui import Select, WebDriverWait from selenium.webdriver.support import expected_conditions as EC from base64 import b64decode, b64encode import cv2 as cv import random import actions s = Service(r'路径') driver = webdriver.Firefox(service=s) driver.get("网址") time.sleep(5) # # 输入账号 driver.find_element(By.CLASS_NAME, "top-login").click() driver.find_element(By.ID, "home_nsrsbh").send_keys('1322145') # 密码 driver.find_element(By.ID, "home_password").send_keys('lsajdisa') # 点击登录 driver.find_element(By.ID, "loginButton_nr").click() # 获取背景图片地址 bg = driver.find_element( By.XPATH, '/html/body/div[5]/div/div/div[2]/div/div[4]').get_attribute('style') img_str = bg.split(",")[-1] # 删除前面的 “data:image/jpeg;base64,” # img_str = img_str.replace("%0A", '\n') bg1 = img_str.replace("%0A", '\n').split('"')[0] img_data = b64decode(bg1) # b64decode 解码 with open('captcha.jpeg', 'wb') as fout: fout.write(img_data) # fout.close() hk1 = driver.find_element( By.XPATH, '/html/body/div[5]/div/div/div[2]/div/div[4]/div/img').get_attribute('src').split(",")[-1] hk_data = b64decode(hk1) with open('huak.jpeg', 'wb') as f: f.write(hk_data) hua_kuai = driver.find_element( By.XPATH, '/html/body/div[5]/div/div/div[2]/div/div[4]/div') bg_url = 'captcha.jpeg' hk_url = 'huak.jpeg' bg_img = cv.imread(bg_url) hk_img = cv.imread(hk_url) # 识别图片边缘 bg_edge = cv.Canny(bg_img, 100, 200) slider_edge = cv.Canny(hk_img, 100, 200) # 转换图片格式 bg_pic = cv.cvtColor(bg_edge, cv.COLOR_GRAY2RGB) slider_pic = cv.cvtColor(slider_edge, cv.COLOR_GRAY2RGB) # 缺口匹配 res = cv.matchTemplate(bg_pic, slider_pic, cv.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res) x = max_loc[0] y = max_loc[1] offset = x + 2 # k = int(x*280/350 + 2) # track1 = get_track(k+random.randint(3,10)) print('需要滑动{}'.format(offset)) actions = webdriver.ActionChains(driver) # # # 点击开始拖拽 actions.click_and_hold(hua_kuai) .perform() # 先一直点击不动 actions.pause(0.3) # 暂停0.2秒 actions.move_by_offset(offset, 0) actions.pause(0.15) # actions.move_by_offset(-25, 0) actions.pause(1) actions.release() # 松开按钮 actions.perform() time.sleep(2)
滑块验证码破解
最新推荐文章于 2024-08-19 23:38:57 发布