超级鹰打码
通过借助第三方平台对验证码的识别,来实现我们的目的,此处以超级鹰网站自身登入为例
-
准备工作:
在超级鹰官网注册属于自己的账号,在此账号内充值积分(1元=1000积分)
点击左侧中软件ID一栏,在此界面生成自己的软件ID
点击上方开发文档一栏,选择自身开发语言并下载demo文档,这里我用的是python
将下载好的压缩包解压,这里我解压到了与自身所要编写的测试文件同级目录下
-
关于解压的.py文件
#第三方平台已经将验证代码编写,我们只需拿来调用即可 #用户中心>>软件ID,填入用户名,密码,软件ID chaojiying = Chaojiying_Client('用户名', '密码', '软件ID') #验证码图片文件路径替换 a.jpg im = open('a.jpg', 'rb').read() #1902为验证码类型,可在超级鹰官网查看验证码类型的代号 #python3.4+版 print 后要加(),我们需要将代码进行如下修改,否则系统将报错 print chaojiying.PostPic(im, 1902) print(chaojiying.PostPic(im, 1902)) #此处为传入 base64代码 print chaojiying.PostPic(base64_str, 1902)
-
代码编写
#导入模块 import time from selenium.webdriver import Chrome from chaojiying import Chaojiying_Client from selenium.webdriver.common.by import By #user为注册的超级鹰用户名,pwd为密码 user = '2260767033' pwd = '123456789' ID = '953073 web = Chrome() web.get('http://www.chaojiying.com/user/login/') web.find_element(By.XPATH,'/html/body/div[3]/div/div[3]/div[1]/form/p[1]/input').send_keys(user) web.find_element(By.XPATH,'/html/body/div[3]/div/div[3]/div[1]/form/p[2]/input').send_keys(pwd) #此处img为验证码的二进制格式 img = web.find_element(By.XPATH,'/html/body/div[3]/div/div[3]/div[1]/form/div/img').screenshot_as_png chaojiying = Chaojiying_Client(user, pwd, ID) #此处chaojiying.PostPic()返回的为一个字典对象 dict = chaojiying.PostPic(img, 1902) #pic_str所对应的值就是我们需要的验证码内容 str = dict['pic_str'] web.find_element(By.XPATH,'/html/body/div[3]/div/div[3]/div[1]/form/p[3]/input').send_keys(str) time.sleep(3) web.find_element(By.XPATH,'/html/body/div[3]/div/div[3]/div[1]/form/p[4]/input').click() time.sleep(5) web.close()
-
可能遇到的问题
在导入下方代码的时候,程序可能会报错:
from chaojiying import Chaojiying_Client
我们可以通过将文件标记为Source root以解决该问题