爬虫之selenium登录中等难度验证码网站
本帖最后由 txq0211 于 2022-3-29 08:25 编辑抛砖引玉,验证码识别不是每一次都对的。
因此,遇到识别出错的时候,我们需要刷新页面或者验证码,重新登陆。
尝试了好几种方式,最后,正确的方式,请大神指正。
from selenium import webdriver
import ddddocr
from selenium.webdriver.chrome.service import Service
from time import sleep
from webdriver_manager.chrome import ChromeDriverManager
# 1、自动安装对应版本的Webdriver
s = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=s)
if __name__ == '__main__':
href = "https://v6.siyucms.com/admin/Login/index"
while True:
# 2、打开指定的网页,最大化
driver.get(href)
driver.maximize_window()
sleep(0.5)
# 3、获取验证码ID
code_png_lel = driver.find_element_by_id('LAY-user-get-vercode')
# 4、不用全屏截图,只把验证码所在元素保存为png图片
code_img = code_png_lel.screenshot_as_png
# 5、利用弟弟获取验证码
ocr = ddddocr.DdddOcr()
code = ocr.classification(code_img)
# 6、填写账号和验证码(已保存的可不填)
# driver.find_element_by_name("username").send_keys("test")
# driver.find_element_by_name("password").send_keys("123456")
driver.find_element_by_name("vercode").send_keys(code)
sleep(0.2)
# 7、登录
driver.find_element_by_xpath("//button").click()
sleep(2)
# 8、2秒后获取当前页面的url
currentPageUrl = driver.current_url
print("当前页面的url是:", currentPageUrl)
# 9、判断当前url是否等于初始href,如果相等,刷新(弹窗问题用刷新处理)再无限循环
if currentPageUrl == href:
driver.refresh()
else:
break
# 9、关闭浏览器并退出
driver.close()
疑难杂症求助:
selenium+接口测试验证的时候,输入正确的验证码返回值也是报错。
问题已解决,感谢hecoter提供通过接口的解决方式。
贴已置顶,请大家往下看。
txq0211 发表于 2022-3-28 22:07
hecoter 发表于 2022-3-28 22:04
import ddddocr
import requests
带cookie请求验证码就行了,不带cookie获取的验证码肯定不对阿 本帖最后由 txq0211 于 2022-3-28 22:08 编辑
hecoter 发表于 2022-3-28 22:04
import ddddocr
import requests
直接通过验证码链接保存识别的,传参的时候是错的。
而且,这类中间有线条的验证码,你多整几个试试,不是每一次都是对的。
bfvA178 发表于 2022-3-28 22:22
带cookie请求验证码就行了,不带cookie获取的验证码肯定不对阿
是的,中等难度的应该就至少考虑cookie了~ bfvA178 发表于 2022-3-28 22:22
带cookie请求验证码就行了,不带cookie获取的验证码肯定不对阿
还是不可以。而且我拦截参数的时候,Burpsite带了Cookies,重发的时候改的验证码有时候报错 hecoter 发表于 2022-3-28 22:32
import re
import ddddocr
import requests
666,🐮,通了 有些难度,学习了,感谢分享 占位 收藏
页:
[1]