标签:gen sim 顺序 agent 增加 read 地址 mys 用户
这个软件收费,这就很不好了
默认安装:打开 cmd,输入命令:
pip install pillow
豆瓣格式:打开 cmd,输入命令:
pip install -i https://pypi.douban.com/simple pillow
一般在我们测试过程中,登录遇到验证码的时候,有以下种解决方案:
1、第三方的打码平台识别
网络上的第三方打码平台众多,这里的选择 超级鹰 这个第三方的平台来给大家做演示。
2、下载开发文档:
下载好的代码:
import requests from hashlib import md5 class Chaojiying_Client(object): def __init__(self, username, password, soft_id): self.username = username password = password.encode(‘utf8‘) self.password = md5(password).hexdigest() self.soft_id = soft_id self.base_params = { ‘user‘: self.username, ‘pass2‘: self.password, ‘softid‘: self.soft_id, } self.headers = { ‘Connection‘: ‘Keep-Alive‘, ‘User-Agent‘: ‘Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)‘, } def PostPic(self, im, codetype): """ im: 图片字节 codetype: 题目类型 参考 http://www.chaojiying.com/price.html """ params = { ‘codetype‘: codetype, } params.update(self.base_params) files = {‘userfile‘: (‘ccc.jpg‘, im)} r = requests.post(‘http://upload.chaojiying.net/Upload/Processing.php‘, data=params, files=files, headers=self.headers) return r.json() def ReportError(self, im_id): """ im_id:报错题目的图片ID """ params = { ‘id‘: im_id, } params.update(self.base_params) r = requests.post(‘http://upload.chaojiying.net/Upload/ReportError.php‘, data=params, headers=self.headers) return r.json() if __name__ == ‘__main__‘: # 需要传三个参数‘超级鹰用户名‘, ‘超级鹰用户名的密码‘, ‘软件id‘ cjy = Chaojiying_Client(‘qq1938091409‘, ‘123456‘, ‘904651‘) # 用户中心>>软件ID 生成一个替换 96001 # 打开一个文件,读取图片的内容 im = open(‘a.jpg‘, ‘rb‘).read() # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要// print(cjy.PostPic(im, 1902)) res = cjy.PostPic(im, 1902) # 1902 验证码类型 官方网站>>价格体系 3.4+版 print 后要加() print(res[‘pic_str‘])
3、需要注册账号,在代码执行中会用到 ‘超级鹰用户名‘, ‘超级鹰用户名的密码‘, ‘软件id‘
获取并输入图片验证码步骤顺序:
import time from selenium import webdriver from PIL import Image # pillow模块 from web_项目前期.a图片验证码.chaojiying import Chaojiying_Client # 创建一个浏览器 driver = webdriver.Chrome() # 访问登录页面 url = ‘http://www.chaojiying.com/user/mysoft/‘ driver.get(url) time.sleep(2) # 暂停一秒钟 # 选择账号、密码输入栏,输入对应的账号密码 input_user = driver.find_element_by_xpath(‘/html/body/div[3]/div/div[3]/div[1]/form/p[1]/input‘) input_user.send_keys(‘qq121292679‘) input_pwd = driver.find_element_by_xpath(‘/html/body/div[3]/div/div[3]/div[1]/form/p[2]/input‘) input_pwd.send_keys(‘546245426‘) # 获取验证码的图片,并进行识别,将识别的结果,输入到验证码输入框中 # 对当前页面进行截图 driver.save_screenshot(‘login.png‘) # 选择验证码图片的元素 yzm_btn = driver.find_element_by_xpath(‘/html/body/div[3]/div/div[3]/div[1]/form/div/img‘) # 获取图片元素的位置 loc = yzm_btn.location # 获取图片的宽高 size = yzm_btn.size print(loc) print(size) # 获取验证码上下左右的位置,电脑的缩放比例125%(100%就不需要乘),需要乘以1.25,否则会出现定位不准确 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(‘login.png‘) # 通过左上右下的值,去截取验证码 yzm_pic = login_pic.crop(val) # 保存验证码 yzm_pic.save(‘yzm.png‘) # 识别验证码 cjy = Chaojiying_Client(‘qq121292679‘, ‘546245426‘, ‘96001‘) # 用户中心>>软件ID 生成一个替换 96001 im = open(‘yzm.png‘, ‘rb‘).read() # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要// res = cjy.PostPic(im, 1902) # 1902 验证码类型 官方网站>>价格体系 3.4+版 print 后要加() data = res[‘pic_str‘] print(data) # 在输入框输入验证码 yzm_input = driver.find_element_by_xpath(‘/html/body/div[3]/div/div[3]/div[1]/form/p[3]/input‘) yzm_input.send_keys(data) # 点击登录 submit = driver.find_element_by_xpath(‘/html/body/div[3]/div/div[3]/div[1]/form/p[4]/input‘) submit.click() # 登录之后等待5秒 关闭浏览器 time.sleep(5) driver.close()
*******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/,谢谢!!*******
标签:gen sim 顺序 agent 增加 read 地址 mys 用户
原文地址:https://www.cnblogs.com/shouhu/p/12764788.html