博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
手动输入验证码
阅读量:5259 次
发布时间:2019-06-14

本文共 1363 字,大约阅读时间需要 4 分钟。

总结:

因为一些验证码使用ocr识别效率比较低,所以就是有时候需要使用手动输入验证码,那么首先就是需要在网页上找到验证码的链接,很多时候验证码的链接是后面有个时间戳的失效时间的,

例如:

code_url = 'https://www.xinhehui.com/Index/Index/verify?version=58d8e16c99f39'

version后面就是经过时间戳得到的,所以就是如果不是根据这个时间戳来获取,会有一个过期或者叫做失效的一个情况出现。

那么获得验证码的链接之后,就可以去下载图片了,如下是使用requests去获取的,

1、第一根据获取得到的二进制而去打开的一个图片:

image = requests.get(self.code_url,headers=headers,stream=True,verify=False)        i = Image.open(StringIO(image.content))        i.show()

是使用二进制流去打开图片

2、还有一个办法就是直接下载下来一个路径,然后再打开图片进行获取该验证码。

with closing(requests.get(self.code_url,headers=headers,stream=True,verify=False)) as response1:            with open(self.path + str(2) + '.jpg', 'wb') as fd:                for chunk in response1.iter_content(128):                    fd.write(chunk)

嗯嗯,应该可以成功获取验证码出来了。

对于scookie会发生变化的,那就需要去更新cookies,如下是更新cookies

cookies_str = image.headers.get('Set-Cookie')        if cookies_str:            php_sessid_str = re.search(r'PHPSESSID=[\S]+', cookies_str)            if php_sessid_str:                print '1' * 20                COOKIES['PHPSESSID'] = php_sessid_str.group(0).split('=')[1]                print 'the new phpsessid is: %s' % (COOKIES['PHPSESSID'])        img_code = raw_input(u'input the imgcode:').decode('utf-8')        print img_code, type(img_code)

这样子,cookies就实现了更新,再次请求的时候就是正确的一个cookies了,这样子就是对的额

转载于:https://www.cnblogs.com/caicaihong/p/6650731.html

你可能感兴趣的文章
maven安装与常用命令
查看>>
linux命令ping
查看>>
71. Simplify Path
查看>>
294. Flip Game II
查看>>
mac 64位 安装wxpython后报错解决方法
查看>>
命令行标签
查看>>
flask 利用flask_wtf扩展 创建web表单
查看>>
MongoDB官方C#驱动中查询条件Query用法
查看>>
Ubuntu安装mysql和简单使用
查看>>
iOS中将后台JSON数据转化为模型的坑
查看>>
设计模式总结(Java)—— 适配器模式
查看>>
shell脚本(管理守护进程)
查看>>
php 简单的对称加密
查看>>
Investment(完全背包)
查看>>
数组方法
查看>>
ROS Kinetic Install on Debian 9
查看>>
在linux下安装并运行scrapyd
查看>>
[PHP源码阅读]array_pop和array_shift函数
查看>>
宏定义 求结构体变量的偏移量
查看>>
Zend Framework相关
查看>>