-
本文只是我简要的分析过程,以及一些重要点的记录,不涉及核心算法
-
本文章只是为了巩固selenium的学习
一、网站
aHR0cHM6Ly93d3cuZG91eWluLmNvbS92aWRlby83MzcwOTg5MDc4NjcxNTI3MjA1
base64解密
清除cookie即可看到滑块
二、分析
由于这里是由selenium+cv2方法过的,就不对抓包展开分析了
三、直接上代码
option = webdriver.ChromeOptions()
option.add_argument('--headless')
option.add_argument('disable-infobars')
option.add_argument('--disable-gpu')
option.add_argument('--lang=zh-cn')
option.add_argument('--no-sandbox')
option.add_argument('disable-dev-shm-usage')
option.add_argument("--no-sandbox")
option.add_argument("--disable-dev-shm-usage")
option.add_argument("--window-size=1920x1080")
option.add_argument("start-maximised")
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_argument("--disable-blink-features=AutomationControlled")
option.add_argument('--proxy-server=' + proxies["https"].replace("http://", '').strip())
driver = webdriver.Chrome(options=option)
driver.set_page_load_timeout(time)
driver.set_script_timeout(40)
driver.maximize_window()
driver.delete_all_cookies()
driver.get(URL)
iframe = driver.find_element(By.TAG_NAME, "iframe")
driver.switch_to.frame(iframe)
a1 = driver.find_element(By.XPATH, '//img[@class="captcha-verify-image"]').get_attribute("src")
a2 = driver.find_element(By.XPATH, '//img[@class="captcha-verify-image-slide"]').get_attribute("src")
这里特别需要注意的点是 需要进入iframe里获取节点
以上代码就可以完美滴获取到了背景和滑条图片了
在进行cv2的识别
hm = random.randint(50, 100)
req1 = requests.get(a1, proxies=proxies, verify=False)
req2 = requests.get(a2, proxies=proxies, verify=False)
fp1 = open(str(k) + '1.jpg', 'wb')
fp1.write(req1.content)
fp2 = open(str(k) + '2.jpg', 'wb')
fp2.write(req2.content)
bg_img = cv2.imread(str(k) + '1.jpg')
tp_img = cv2.imread(str(k) + '2.jpg')
bg_edge = cv2.Canny(bg_img, 100, 200)
tp_edge = cv2.Canny(tp_img, 100, 200)
bg_pic = cv2.cvtColor(bg_edge, cv2.COLOR_GRAY2RGB)
tp_pic = cv2.cvtColor(tp_edge, cv2.COLOR_GRAY2RGB)
res = cv2.matchTemplate(bg_pic, tp_pic, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
最后缺口匹配 出最优距离
最后就是开始滑动了,这里就不放代码了,放个结果图吧
参数可以用,成功率还可以,有效期没测过