- 日常工作中,一般各业务接口会对登录接口有所依赖,而登录接口中会存在有要求输入图片验证码的问题,最终导致爬取数据或者接口自动化测试难以顺利展开。
- 如何解决这种办法勒?
- 测试:自己公司的系统,可以叫开发屏蔽或者给一个万能验证码
- 爬虫:这种只能自行处理,下面小编将结合第三方识别工具提取并且识别验证码信息
- 1.推荐两个三方识别平台
- 2.使用图鉴识别古诗文网登录中的验证码
- 3.1:注册登录图鉴平台(自行研究)
- 3.2:登录后,点击开发文档,提取识别的源代码
- 开发文档---选择对应的语言(python)
- 封装tujian.py模块,用来识别验证码
import base64
import json
import requests
def base64_api(uname, pwd, img, typeid):
with open(img, 'rb') as f:
base64_data = base64.b64encode(f.read())
b64 = base64_data.decode()
data = {"username": uname, "password": pwd, "typeid": typeid, "image": b64}
result = json.loads(requests.post("http://api.ttshitu.com/predict", json=data).text)
if result['success']:
return result["data"]["result"]
else:
return result["message"]
return ""
def getImgCodeText(imgPath,imgType):
result = base64_api(uname='图鉴平台账号', pwd='图鉴平台密码', img = imgPath, typeid = imgType)
return result
- 3.3:分析以上脚本可知,我们需要识别图片验证码文本,需要知道图片路径、图片文字类型
- 图片路径,我们可以通过requests获取页面源码,保持验证码图片至本地
- 图片文字类型,通过多次刷新页面,我们发现验证码文本为4位的数字+字母,typeid = 3即可
import requests
from tujian import getImgCodeText
from lxml import etree
url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36',
}
response = requests.get(url = url,headers = headers)
page_text = response.text
tree = etree.HTML(page_text)
img_src = 'https://so.gushiwen.cn/' + tree.xpath('//*[@id="imgCode"]/@src')[0]
img_data = requests.get(url = img_src,headers = headers).content
with open('./code.jpg','wb') as fp:
fp.write(img_data)
text = getImgCodeText('./code.jpg',3)
print(text)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义