ly0 / baidupcsapi

百度网盘api
MIT License
1.2k stars 235 forks source link

能否换下验证码处理方式? #3

Closed spance closed 9 years ago

spance commented 9 years ago

看到captcha.py里面有用到PIL这个图像处理包,最后去装了Pillow结果下了一大装也编译了一大堆lib,结果最后来了个IOError: decoder jpeg not available 倒入如这样来吧,反正就是显示验证码给人类,不一定要通过console吧,验证码图像拿到后,上传到临时图片存储上,返回一个地址,然后等待用户键入,用户就用这个地址去看验证码图像吧。也省得在console上处理图像这么麻烦,用的也麻烦的。 搜索一下“image temporary upload”会有很多也算是小有历史的服务,像tiikoni expirebox这些,临时传个小图片保留几个小时就足够了。

autodataming commented 9 years ago

我都是直接display在linux下;在win下直接图片的存储路径 就可以自动弹出图片

autodataming commented 9 years ago

system()

lilydjwg commented 9 years ago

推荐把 Pillow 作为可选项,如果是 Windows 或者能够连接上 X Window 那么还是调用外部命令吧。

lilydjwg commented 9 years ago

@spance Windows 的话推荐去这里找二进制 Python 库。

spance commented 9 years ago

问题就是没有X可用啊。 只是一个小图像而已,传到外部临时存下,给用户一个地址,用户看了回来输入验证码继续,这不也更省事些么?

spance commented 9 years ago

@lilydjwg 当然不是windows了,否则也不用这么麻烦,几个debian和ubuntu.

spance commented 9 years ago

@autodataming 问问你是怎么“直接display在linux下”的?

lilydjwg commented 9 years ago

@spance 呃,Debian 源里竟然没有 Pillow……不过装好依赖也不是很费事的呀。

上传的方案也不错的说,不过我觉得要往第三方上传东西应该事先让用户知道。

spance commented 9 years ago

@lilydjwg 我最初是pip install Pillow的,要编译一大堆,最后在仓库里面搜了一下,有二进制版本python-Pillow装上可以看到图了,只是那个图实在看不清,尝试了好多遍,有很重的马赛克的味道。 所以还是觉得,最好把这个小图片post外部存储上,用户拷了地址看完回头输入4个码就完事了,captcha.py也不用那么复杂了,也就不用那些依赖包了。

spance commented 9 years ago

大家看看识别难度有多大啊 captcha 终端xterm-color 终端看图真的很累啊。

lilydjwg commented 9 years ago

噗哈哈哈~

ly0 commented 9 years ago

哈哈哈哈,确实比较难看清。 可以试试自己在外部实现一个函数,这个函数返回验证码 就像里面实现的这个

    def show_captcha(self, jpeg):
        import captcha
        captcha.show(jpeg)
        verifycode = raw_input('captcha > ')
        return verifycode

然后再初始化PCS类的时候加上captcha_callback 参数,如

PCS(username='aaaa', password='bbbb', captcha_callback=xxx)

这个问题之前有人发邮件给我提到过,临时加上去的,还没有测试 TAT

大家不愧是程序员,这时候都不睡觉啊。

autodataming commented 9 years ago

如果display 命令不是自带的,那么你安装一个ImageMagick,这个软件‍


陈照强 2008-2012中国药科大学 生命科学基地班 0843417 2012-2017上海药物所 Tel: 18321885908 Email:1017044504@qq.com

------------------ 原始邮件 ------------------ 发件人: "Spance";notifications@github.com; 发送时间: 2014年11月1日(星期六) 凌晨0:28 收件人: "ly0/baidupcsapi"baidupcsapi@noreply.github.com; 抄送: "Autolife"1017044504@qq.com; 主题: Re: [baidupcsapi] 能否换下验证码处理方式? (#3)

@autodataming 问问你是怎么“直接display在linux下”的?

— Reply to this email directly or view it on GitHub.

spance commented 9 years ago

好了,改成外部上传验证码了: https://gist.github.com/spance/4a274e5d7f4159efec56

ly0 commented 9 years ago

感谢贡献 :+1: 那么就标记为已解决了。