python爬虫

闪烁图片验证码处理

2020-04-09  本文已影响0人  苦海飘摇
今天,同事在爬一个网站的数据时遇到了闪烁验证码,这里我帮他处理一下。
url = "https://www.******.cn:****/stcs/getCaptcha"
res = sess.get(url=url, headers=headers).content
im = Image.open(io.BytesIO(res))

im.save('1.png')
r = dm(im)

im.seek(im.tell() + 1)
im.save('2.png')
r = dm(im)

im.seek(im.tell() + 1)
im.save('3.png')
r = dm(im)

im.seek(im.tell() + 1)
im.save('4.png')
r = dm(im)
1.png
2.png
3.png
4.png

这里的dm()是我自己做的验证码识别模块。

a = {'1': '', '2': '', '3': '', '4': ''}  # 根据key值保存对应识别结果
url = "https://www.globalsms.cn:8443/stcs/getCaptcha"
res = sess.get(url=url, headers=headers).content
im = Image.open(io.BytesIO(res))

im.save('1.png')
r = dm(im)
a['1'] = r

im.seek(im.tell() + 1)
im.show()  # 由于第二张能显示全所有验证码,因此我直接将其打开而不是保存
r = dm(im)
a['2'] = r

im.seek(im.tell() + 1)
im.save('3.png')
r = dm(im)
a['3'] = r

im.seek(im.tell() + 1)
im.save('4.png')
r = dm(im)
a['4'] = r
print(a)
# 前两位
if a.get('4')[:2] == a.get('3')[:2] or a.get('2')[:2] == a.get('3')[:2]:
    res = a.get('3')[:2]
elif a.get('2')[:1] == a.get('3')[1:2]:
    res = a.get('3')[:2]
else:
    res = a.get('4')[:2]
# 第三位
res += a.get('3')[-1:]
# 最后一位
res += a.get('1')[-1:]
print(res)
上一篇下一篇

猜你喜欢

热点阅读