天天动画片 > 八卦谈 > 网站需要验证码Python简单测试自动通过验证

网站需要验证码Python简单测试自动通过验证

八卦谈 佚名 2023-11-22 14:33:48

网站需要验证码Python简单测试自动通过验证

随着技术的发展,验证码越来越复杂,接下来我们解决常用的几种,需要用到的库有selenium、PIL

通常可以使用openca或者tesserocr,但是对于新手来说,他们的安装和使用有些难度。下面就介绍一个更加简单的ddddocr,首先是安装:

pip install ddddocr

为了演示效果,我们这里提前准备好了一个图片验证码

from selenium import webdriver
from selenium.webdriver import ActionChains
import time
from PIL import Image

# 初始化 Chrome 浏览器
driver = webdriver.Chrome()
driver.maximize_window()

# 打开目标网站,等待加载
driver.get("https://test.com/")
time.sleep(1)

# 选择账号、密码输入栏,输入对应的账号密码
input_user=driver.find_element_by_xpath('//input[@name="username"]')
input_user.send_keys('账号')
input_pwd=driver.find_element_by_xpath('//input[@name="password"]')
# 输入密码
input_pwd.send_keys('密码')

# 将当前页面截图
driver.save_screenshot('code.png')
# 选择验证码图片的元素
code_btn = driver.find_element_by_xpath('//input[@name="password"]/span')
# 获取图片元素的位置
loc = code_btn.location
# 获取图片的宽高
size = code_btn.size
# 获取验证码上下左右的位置
left = loc['x']*1.25
top = loc['y']*1.25
right = (loc['x'] + size['width'])*1.25
botom = (loc['y'] + size['height'])*1.25
val = (left, top, right, botom)
# 打开网页截图
login_pic = Image.open('code.png')
# 通过上下左右的值,去截取验证码
code_img = login_pic.crop(val)
code_img.save('code.png')

# 识别验证码
with open('code.png,'rb') as f:
    img_content = f.read()
result = ddddocr.Dddd0cr(res = ocr.classification(img_bytes)
code=res[-4:] #看你的验证码是几位,截取验证码后4位

# 在输入框输入验证码
driver.find_element_by_xpath('/html/body/div[3]/form/p/input')
yzm_input.send_keys(code)

# 点击登录
submit = driver.find_element_by_xpath('/input[@class="submit"]/input')
submit.click()

# 等待 2 秒钟查看结果
time.sleep(2)
# 关闭浏览器
driver.quit()

使用selenium打开浏览器来模拟这个滑动流程

from selenium import webdriver
from selenium.webdriver import ActionChains
import time

# 初始化 Chrome 浏览器
driver = webdriver.Chrome()
driver.maximize_window()

# 打开目标网站,等待加载
driver.get("https://test.com/")
time.sleep(1)

# 定位滑块元素和背景图片元素
slider = driver.find_element_by_xpath("//*[@id='slider']")
bg = driver.find_element_by_xpath("//*[@id='sliderBackground']")

# 计算滑块需要移动的距离
distance = slider.location['x'] - bg.location['x']

# 模拟人的拖动操作
action = ActionChains(driver)
action.click_and_hold(slider).perform()
action.move_by_offset(distance, 0).perform()
action.release().perform()

# 等待 5 秒钟查看结果
time.sleep(5)

# 关闭浏览器
driver.quit()


本文标题:网站需要验证码Python简单测试自动通过验证 - 八卦谈
本文地址:www.ttdhp.com/article/42617.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们