• 手动输入验证码


    总结:

    因为一些验证码使用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了,这样子就是对的额

  • 相关阅读:
    如何检索某个字段在sqlserver中的哪个些存储过程中?很简单的SQL语句。
    如何去掉HTML代码来获取纯文本?
    ajax实现跨域请求
    ajax实现跨域提交
    lab3
    Lab2
    hw2
    Homework1
    Lab1
    CS61B_学习计划和进程
  • 原文地址:https://www.cnblogs.com/caicaihong/p/6650731.html
Copyright © 2020-2023  润新知