各大AI开放平台尝试

这篇博客本来是想写使用拉勾模拟登录获取cookie的,可是当我研究完滑块验证码并且有了思路后,发现使用selenium登录时的验证码是这样的:
在这里插入图片描述
我能怎么办,我也很无奈啊。拉勾有js判断当前浏览器是否是selenium,是直接调用极验的接口,有一个单独的js文件判断,文件可能是sense-版本.js(猜测大概率是),版本我忘了。但是奈何本人没有怎么学习过js,无法看懂极验识别selenium的js代码。我也试过使用Charles截获这个js文件,但这个js文件还包含登录信息,没有就登录不了。

当然网上的方法我也尝试了,看了一些文章。selenium在启动的时候会创建一个代理服务器,并且会有一些不同于浏览器的参数。一般的网站会判断这些参数,高级一点的则是人机判断,比如鼠标轨迹等。极验的js代码里并没有出现这些参数,可能是通过拼接的。另外,自己操作也会出现这样的验证码,所以不是人机判断。

好像有点说远了,说回正体,上面那个验证码该怎么破呢?这样的验证码初步思路是先OCR识别文字,再识别9张图,比对一下看看符不符合。OCR好说,但图像识别需要深度学习的知识,可是我也不会啊,怎么办呢。很多平台都提供了开放的AI功能,就是你注册实名就能使用他们的产品,比如OCR、图像识别、语音识别等。不过,验证码提供的图片一般会很模糊,文字也会做一些特殊的处理,所以实际的成功率会很低。这可能需要单独的训练某个模型去针对才能提高成功率吧。

百度AI开放平台

(http://ai.baidu.com/)
首先登录(没有百度账号就过分了),可以在产品服务看到所有开放的功能,点右上角的控制台。我们先试一下图像识别,点图像识别创建应用,填写信息(随便写,正常一点就行)。之后就可以在管理应用里看到刚才创建的应用信息,比如APPID等。调接口时会用到。

怎么使用有详细的技术文档和SDK,我来简单说一下图像识别的SDK开发文档。
pip install baidu-aip 安装百度AI库

from aip import AipImageClassify

# 在管理应用里可以看到这三个参数
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

# 建立连接
client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

# 读取图片 
with open('example.jpg', 'rb') as fp:
    image = fp.read()
    
# 调用通用物体识别
client.advancedGeneral(image);

# 如果有可选参数 
options = {}
options["baike_num"] = 5 # 结果会返回5个值,这个数字表示是否使用百度百科api查询这五个值,默认0,你也可以填5

# 带参数调用通用物体识别
print(client.advancedGeneral(image, options))

返回值如下:
未加baike_num时

{
	'log_id': 6023433747904984067,
	'result_num': 5,
	'result': [{
		'score': 0.667241,
		'root': '商品-电脑办公',
		'keyword': '光电鼠'
	}, {
		'score': 0.522877,
		'root': '商品-鞋子',
		'keyword': '皮鞋'
	}, {
		'score': 0.359822,
		'root': '动物-软体类',
		'keyword': '紫贻贝'
	}, {
		'score': 0.208572,
		'root': '动物-软体动物',
		'keyword': '贻贝'
	}, {
		'score': 0.0666,
		'root': '动物-哺乳动物',
		'keyword': '虎鲸'
	}]
}

加了时:

{
	'log_id': 172541598469009731,
	'result_num': 5,
	'result': [{
		'score': 0.514441,
		'root': '商品-绘画',
		'baike_info': {
			'baike_url': 'http://baike.baidu.com/item/%E5%B7%A5%E7%AC%94%E7%94%BB/333648',
			'image_url': 'http://imgsrc.baidu.com/baike/pic/item/0b46f21fbe096b63b35e90580a338744ebf8ac77.jpg',
			'description': '工笔画,亦称“细笔画”,属中国画技法类别的一种。工笔画与“写意画”对称。工笔画属于工整细致一类画法,如宋代的院体画,明代仇英的人物画等。工笔画要求“有巧密而精细者”(北宋韩拙《山水纯全集》),水墨、浅绛、青绿、金碧、界画等艺术形式均可表现工笔画。'
		},
		'keyword': '工笔画'
	}, {
		'score': 0.37045,
		'root': '非自然图像-彩色动漫',
		'baike_info': {},
		'keyword': '卡通动漫人物'
	}, {
		'score': 0.241511,
		'root': '商品-绘画',
		'baike_info': {
			'baike_url': 'http://baike.baidu.com/item/%E5%9B%BE%E7%94%BB/3357821',
			'image_url': 'http://imgsrc.baidu.com/baike/pic/item/a8773912b31bb05191a21521387adab44aede031.jpg',
			'description': '图画,拼音:tú huà释义:1、绘画。2.用线条、色彩构成的形象或肖像。3.地图。4.比喻壮丽的河山。5.谋划。'
		},
		'keyword': '图画'
	}, {
		'score': 0.117876,
		'root': '非自然图像-书籍封面',
		'baike_info': {
			'baike_url': 'http://baike.baidu.com/item/%E4%B9%A6%E7%B1%8D/59503',
			'image_url': 'http://imgsrc.baidu.com/baike/pic/item/0b46f21fbe096b63a940b6e806338744ebf8ac29.jpg',
			'description': '书籍,是指装订成册的图书和文字,在狭义上的理解是带有文字,图像的纸张的集合。广义的书则是一切传播信息的媒体。不过有些人认为图书一词是“河图”与“洛书”的简称。'
		},
		'keyword': '书籍'
	}, {
		'score': 0.001983,
		'root': '人物-人物特写',
		'baike_info': {
			'baike_url': 'http://baike.baidu.com/item/%E7%BE%8E%E5%A5%B3/109596',
			'image_url': 'http://imgsrc.baidu.com/baike/pic/item/91529822720e0cf3acdfc0280046f21fbe09aa3d.jpg',
			'description': '美女是一个汉语词汇,拼音是měi nǚ,指容貌姣好、仪态优雅的女子。中国古代关于美女的形容词和诗词歌赋众多,形成了丰富的美学资料。《墨子·公孟》:“譬若美女,处而不出,人争求之。”'
		},
		'keyword': '美女'
	}]
}

可以看出,使用百度百科对验证码识别并没有意义,他查询的是识别的关键字。

上面是SDK(开发文档,专为程序员设置的接口)的使用,还有一种方法调用,就是直接调用API,python就可以使用requests发送POST请求来获取结果。在技术文档里有详细的说明,我就不一一列举了。

我们再看看OCR文字识别的代码:

# -*- coding: utf-8 -*-
from aip import AipOcr

APP_ID = ‘’
API_KEY = ‘’
SECRET_KEY = ‘’ 

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 读取图片 
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

image = get_file_content('info2.png')

#调用通用文字识别, 图片参数为本地图片
#client.basicGeneral(image)

""" 如果有可选参数 """
options = {}
#options["language_type"] = "CHN_ENG"
#options["detect_direction"] = "true"
#options["detect_language"] = "true"
#options["probability"] = "true"

""" 带参数调用通用文字识别, 图片参数为本地图片 """
result = client.basicGeneral(image, options)
print(result)

我试了一下,对于正经的字体,基本能识别成功,但对于拉勾这样将文字倾斜了一点角度的字体,大部分都识别不出来,暂时不去研究。只是玩玩各大平台的功能。

还有一些比较有意思的功能,比如语音识别、人脸对比、文本纠错、情感倾向分析、文章分类等。有兴趣的可以试试,只要注册登录就可以免费使用,为什么不呢?虽然有调用次数限制,但对于我们来说,绝对用不完。

腾讯AI开放平台

(https://ai.qq.com/)
以下的所有平台都不贴代码,只说一下使用的感受。
图像识别

猜你喜欢

转载自blog.csdn.net/Qwertyuiop2016/article/details/89792863
今日推荐