网易邮箱大师获取下载链接时的验证码的分析解决 python

    xiaoxiao2021-03-25  178

    网易邮箱大师的下载,提供了一个方式:输入你的手机号码,网易汇给你发放一个带链接的邮件,点此链接可以跳转到应用商店下载,用以解决不方便扫码时的情况。

    这里会让我们输入验证码,看了下开发者工具,发现一个奇怪的现象。

    preview里面显示的是一个验证码图片,response中却没有任何内容。

    打破了我固有的认识,之前以为返回的也是一张jpg或者其他格式的图片。(后来想想,这样不利于后台对用户输入验证码的验证。)

    验证码地址 http://smsspub.mail.163.com/mobileserv/verifyCodeImg.jsp

    直接访问该url,这是可以看到preview和response中的内容了,但是他们是一堆乱码。

    ÿØÿàJFIFÿÛC $.' ",#(7),01444'9=82<.342ÿÛC 此处省略。。 ¹u<¿Ä:‡Œµ½"MOÉ×1ˆÚE¸ŽX³•bÇ*@<î7g9gô{ÍÃ0XÞàH¤°@û¶Gç“Ç­tMš¯HÈÁÚÅOàG"„PNÐ1Ï'ó¡ËK*·‡"I-úZE$^˜»wLÌ¿¿ir˜|¿îŽj³Q\@—î’n1ÈÈÞ¼2GçUíõXnu»%Y–»7–iÜ3Ç5;êc¶…»[h­`ÛB°Ä¿u"UUAE:ŠC?ÿÙ

    查阅下发现是jfif格式的图片,图片存储格式之一,由JPEG格式衍生而来。

    这里不深究jfif的问题。

    问题抛出,如何使用python 将一个图片流,转换为一个切切实实的png,jpeg呢?

    import requests import Image import StringIO #获得返回的图片流(所谓的乱码) a = requests.get('http://smsspub.mail.163.com/mobileserv/verifyCodeImg.jsp') #将字符串转为file()属性,因为image.open方法打开的是一个文件 f = StringIO.StringIO(a.content) #打开并另存为jpeg im = Image.open(f) im.save('test.jpeg')

    以上是个人的理解。算是比较简单的方式,如果有其他方式大家可以交流。

    注:这里如果直接open 返回值的话,会提示str没有file()属性。

    拿到图片再去做相关的二值化,分割等等操作。

    另:jfif貌似携带了很多的信息,如果直接解析不知道能否走的通。但是感觉可能又是一个坑啦。

    转载请注明原文地址: https://ju.6miu.com/read-4485.html

    最新回复(0)