2009-10-09 84 views
0

对于完全非恶意的目的 - 特别是机器学习,我想下载一个CAPTCHA图像的巨大数据集。然而,CAPTCHA总是使用一些混淆的javascript来实现,这使得在没有浏览器的情况下获得实际的图像是一件不平凡的任务,至少对我来说,这是一个JavaScript新手。脚本下载CAPTCHA图像

所以,任何人都可以给我一些有用的指针,如何使用完全在浏览器之外的脚本下载隐藏的词的图像?并且请不要指向我已经收集到的模糊词语的数据集 - 我需要从特定网站收集特定实验的图像。

谢谢!

编辑:这个问题可以被问到的另一种方式是非常简单的。当你点击网站上的“查看源代码”时,你会看到脚本引用,但这就是你所看到的。但是,如果您点击“保存网页为...”(在Firefox中),然后查看保存的网页的来源,javascript将被解析并且新的html和图像(至少在ASIRRA和reCAPTCHA的情况下)在源头中。如何使用脚本模仿这种“将网页另存为...”行为?这是一个重要的网络编码问题,请不要再质疑我的动机了!这是我可以从所有涉及脚本的Web开发中使用的知识,我相信其他堆栈溢出访问者也可以!

+1

如何问网站的所有者?如果它是非邪恶的...... – Greg 2009-10-09 13:57:41

+0

该网站实际上是微软的研究项目名为ASIRRA,它使用的猫狗,而不是模糊的话 - 但它在基本相同的方式来实现。他们有一个公开的数据集,但它太小了。 – JoeCool 2009-10-09 14:00:27

+0

@格雷格:同意,礼貌的事情是你之前批量下载的内容与网站所有者联系,吸了大量的带宽。 – RedFilter 2009-10-09 14:02:49

回答

3

在等待答案的时候,我不停地挖掘并最终想出了一种黑暗的方式来完成我想要的任务。

首先,这是一个有点复杂的问题(至少像我这样的JavaScript新手)的原因是,ASIRRA的图像通过javascript,这是一种客户端技术加载到网页上。当您使用类似wget或curl下载网页时,这是一个问题,因为它实际上并没有运行javascript,它只是下载源html。因此,你不会获得图像。

但是,我意识到使用firefox的“Save Page As ...”完全符合我的需求。它运行加载图像的JavaScript,然后将其全部保存到我的硬盘驱动器上众所周知的目录结构中。这正是我想要自动化的。所以...我发现了一个Firefox插件叫做“iMacros的”,并写了这个宏:

VERSION BUILD=6240709 RECORDER=FX 
TAB T=1 
URL GOTO=http://www.asirra.com/examples/ExampleService.html 
SAVEAS TYPE=CPL FOLDER=C:\Cat-Dog\Downloads FILE=* 

设置为循环播放10000次,它的工作完美。实际上,因为它总是保存到同一个文件夹中,所以重写的图像被覆盖(这正是我想要的)。

0

为什么不自己获取CAPTCHA并生成图像? reCAPTCHA也是免费的。 http://www.captcha.net/

更新:我看到你从一个特定的网站想要,但如果你自己的,你可以调整它给同种图像作为你的目标网站。

+0

我已经拥有自己的服务器和运行recaptcha的网站,但同样的问题依然存在。如果我浏览到我的网站,我可以看到新的模糊词语,但是如果我使用终端或脚本,我无法找到图像的位置来自动下载。所以这回到我原来的问题 - 如何在没有浏览器的情况下直接使用脚本获取图像? – JoeCool 2009-10-09 14:37:55

0

与运行该网站的人联系并询问数据集。如果你试图以任何可疑的方式下载许多图像,那么你会以相当快的速度结束他们的杀人名单,这意味着你不会再从他们那里得到任何东西。

CAPTCHA旨在保护人们免受滥用,您所做的从他们的角度看起来就像是虐待。