自动化登录验证码页面的实现方法

新知榜官方账号

2023-07-06 14:44:31

背景

今天有同学提出了一个需求,老板让自动登录这个页面:https://www.dianxiaomi.com/index.htm,毫无疑问登录页面基本都会有在线验证码,要破解这个验证码当然不是啥难事,诚然可以自己去训练模型,然而大量的训练集测试数据还得自己去打码,说白了,不值当,有现成的接口可以用,何乐而不为,于是我们向万恶的百度伸出了魔爪。

实现步骤

  1. 申请并获取百度API的key和secret,使用高精度识别接口进行验证码识别。
  2. 使用selenium自动化工具进行局部截图,利用opencv进行降噪和去色处理提高识别准确度。
  3. 利用selenium输入账号密码和验证码自动登录。

代码实现

import requests
import json
import base64
import urllib
from selenium import webdriver
import time

#selenium截图
driver = webdriver.Chrome()
driver.get('https://www.dianxiaomi.com/index.htm')
time.sleep(1)

#删除元素
js="var elem=document.getElementsByClassName('dnf');elem[0].parentNode.removeChild(elem[0]);"
driver.execute_script(js)
js="var elem=document.getElementsByClassName('qqshow');elem[0].parentNode.removeChild(elem[0]);"
driver.execute_script(js)
js="var elem=document.getElementsByClassName('QR');elem[0].parentNode.removeChild(elem[0]);"
driver.execute_script(js)

nodes=driver.find_element_by_id('loginImgVcode')
nodes.screenshot('test.png')

#用户名
exampleInputName
#密码
exampleInputPassword
driver.find_element_by_id('exampleInputName').send_keys('18231327142')
driver.find_element_by_id('exampleInputPassword').send_keys('密码')

#请求百度api接口
res=requests.get("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=你的key&client_secret=你的秘钥")
res=json.loads(str(res.text))
token=res['access_token']

temp_url='https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token='+token
temp_headers={'Content-Type':'application/x-www-form-urlencoded'}
temp_file=open('./test.png','rb')
temp_image=temp_file.read()
temp_file.close()
temp_data={'image':base64.b64encode(temp_image)}
temp_data=urllib.parse.urlencode(temp_data)
temp_res=requests.post(url=temp_url,data=temp_data,headers=temp_headers)
res=json.loads(str(temp_res.text))
code=res['words_result'][0]['words']
driver.find_element_by_id('loginVerifyCode').send_keys(code.strip().replace(' ',''))

#登录按钮
driver.find_element_by_id('loginBtn').click()

time.sleep(10)
driver.close()

本页网址:https://www.xinzhibang.net/article_detail-6428.html

寻求报道,请 点击这里 微信扫码咨询

关键词

自动化 登录 验证码 百度API selenium opencv

分享至微信: 微信扫码阅读

相关工具

相关文章