txq0211 发表于 2022-3-28 21:39

爬虫之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提供通过接口的解决方式。
贴已置顶,请大家往下看。


bfvA178 发表于 2022-3-28 22:22

txq0211 发表于 2022-3-28 22:07
hecoter 发表于 2022-3-28 22:04
import ddddocr
import requests


带cookie请求验证码就行了,不带cookie获取的验证码肯定不对阿

txq0211 发表于 2022-3-28 22:07

本帖最后由 txq0211 于 2022-3-28 22:08 编辑

hecoter 发表于 2022-3-28 22:04
import ddddocr
import requests


直接通过验证码链接保存识别的,传参的时候是错的。
而且,这类中间有线条的验证码,你多整几个试试,不是每一次都是对的。

notifier 发表于 2022-3-28 22:36

bfvA178 发表于 2022-3-28 22:22
带cookie请求验证码就行了,不带cookie获取的验证码肯定不对阿

是的,中等难度的应该就至少考虑cookie了~

txq0211 发表于 2022-3-28 22:40

bfvA178 发表于 2022-3-28 22:22
带cookie请求验证码就行了,不带cookie获取的验证码肯定不对阿

还是不可以。而且我拦截参数的时候,Burpsite带了Cookies,重发的时候改的验证码有时候报错

txq0211 发表于 2022-3-28 22:46

hecoter 发表于 2022-3-28 22:32
import re
import ddddocr
import requests


666,🐮,通了

hnwang 发表于 2022-3-29 01:00

有些难度,学习了,感谢分享

WeiSanJin 发表于 2022-8-4 13:57

占位 收藏
页: [1]
查看完整版本: 爬虫之selenium登录中等难度验证码网站