出于完全非恶意的目的-特别是机器学习,我想下载一个庞大的CAPTCHA图像数据集。但是,始终使用一些混淆的javascript来实现CAPTCHA,这使得在没有浏览器的情况下获取实际图像成为一项艰巨的任务,至少对我(这是javascript新手)而言。
因此,任何人都可以给我一些有用的指导,以指示如何使用完全在浏览器外部的脚本来下载模糊单词的图像吗?并且请不要将我指向已经收集到的模糊单词的数据集-我需要为此特定实验从特定网站收集图像。
谢谢!
编辑:可以问这个问题的另一种方法很简单。当您在带有复杂javascript的网站上单击“查看源代码”时,您会看到脚本引用,但仅此而已。但是,如果单击“将网页另存为...”(在firefox中),然后查看已保存网页的源,则将解析javascript,并且新的html和图像(至少在ASIRRA和reCAPTCHA的情况下)为在源中。如何使用脚本模仿这种“将网页另存为...”的行为?一般而言,这是一个重要的Web编码问题,因此请不要再以此动机向我提出疑问!从现在开始,这是我可以在涉及脚本的所有Web开发中使用的知识,并且我相信其他堆栈溢出访问者也可以使用!
在这里等待答案的过程中,我一直在挖掘,最终找到了一种可以完成我想要的方法的技巧。
首先,这是一个有点复杂的问题(至少对于像我这样的javascript新手来说)的原因是,ASIRRA的图像通过javascript(一种客户端技术)加载到了网页上。当您使用wget或curl等下载网页时,这是一个问题,因为它实际上并未运行javascript,而只是下载了源html。因此,您不会获得图像。
但是,我意识到使用firefox的“页面另存为...”确实可以满足我的需求。它运行了加载图像的javascript,然后将其全部保存到硬盘上的众所周知的目录结构中。那正是我想要自动化的。所以...我找到了一个名为“ iMacros”的Firefox附加组件,并编写了这个宏:
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=*
设置为循环10,000次,效果很好。实际上,由于它总是保存到同一文件夹,因此重复的图像被覆盖(这就是我想要的)。