有没有办法在Python中保存验证码图片并稍后查看?
我正在用Python做一些网页自动化的脚本。我知道我不能自动处理验证码,但我想做的是:
我想尽可能自动化所有操作,直到遇到验证码。当我打开网页(使用urllib2)并解析内容时,如果发现有验证码,我想用Tkinter打开这个验证码。现在我知道我得先把验证码图片保存到我的硬盘上,然后再打开它,但在这之前有个问题。屏幕上的验证码图片并不直接在网页源代码里。源代码中有一个变量,在一些JavaScript代码里,它指向另一个页面,而那个页面里有验证码图片的链接。但是,如果你加载那个中间页面,验证码的图片就会变,所以和那个JavaScript变量相关的图片链接就不再有效了。用这种方法获取图片可能是不可能的,所以如果你有任何想法,请告诉我。
现在,如果我使用firebug加载页面,会有一个“GET”请求,它是当前我看到的验证码图片的直接链接。我在想有没有办法让Python或urllib2看到页面加载时的“GET”请求,因为如果可以做到这一点,那就简单多了。
如果你有任何建议,请告诉我。
1 个回答
2
当然,网站上的验证码每次都会换新的(如果验证码是重复的,那一旦某个假用户解决了验证码,垃圾邮件发送者就能轻松地自动生成一百万个!)。我觉得你需要一些“截图”功能来捕捉你想要的图像——不过没有一种跨平台的方法可以调用这种功能,但每个平台(比如Linux、BSD等的桌面管理器)通常都有自己的解决办法。或者,你可以通过自动化浏览器(比如使用SeleniumRC
)来在合适的时机“截图”(例如“打印为PDF”)。我相信你在firebug中看到的内容可能会让你误解,因为它实际上是在“显示一个快照”……只是这个快照是在html源代码或DOM层面,而不是在屏幕/位图层面。