【问题标题】:Virtual screen scraping with Perl [closed]使用 Perl 进行虚拟屏幕抓取 [关闭]
【发布时间】:2012-07-29 11:52:20
【问题描述】:

是否可以在 Perl 或 Python 中进行虚拟屏幕抓取?假设我有一个登录页面,一旦我输入用户名或密码,它就会将我带到另一个身份验证页面,我必须在其中编写验证码读取的内容。现在使用 Mechanize 或类似工具,我可以自动化第一步。但是,对于第二步,是否可以通过 Perl 捕获验证码页面的屏幕截图(虚拟的,因为我们并没有真正在浏览器中加载页面)?一旦完成,也许我可以自动化一个验证码阅读工具(谷歌有一个),它将尝试阅读它。 (所有此类验证码页面都将验证码图像放在固定大小的框中的固定位置,因此我可以使用 Imagemagick 裁剪屏幕截图的那部分并提供给 Google 工具。这需要经过几次反复试验才能找到屏幕截图的哪个部分包含验证码)。那么有可能吗?

【问题讨论】:

  • 一方面,我很想用我最喜欢的语言展示这种事情是多么容易……另一方面,我不会参与自动验证码破解不能绝对肯定它是白帽子。
  • 好吧,如果它是黑帽,那么我会手动完成它而无需求助于 Perl 和其他东西。我没有犯罪记录,我可以保证,我也不打算有犯罪记录,所以请放心分享您的专业知识。
  • 为什么需要自动解决验证码?
  • 没什么,特别是。前几天我在读一篇文章,上面说谷歌有一种软件可以用来破译验证码。所以我决定测试一下。然后我记得这将是一个漫长的过程,我必须去验证码页面,截图,裁剪验证码部分,然后将其输入软件,等等等等。所以很自然地,我的想法转向了自动化。

标签: python perl imagemagick screen-scraping mechanize


【解决方案1】:

您根本不需要模拟或使用屏幕做任何事情。只需跟踪 CAPTCHA 请求其图像数据的位置并自行下载 - 您将获得准备好的图像文件。

【讨论】:

  • 但是图片是随机的,每次都会包含不同的图片。因此,一旦我在 mechanize 对象中拥有带有验证码的页面,随后对图像发送页面的请求将不会给我相同的图像。
  • 当然。正如您在手动访问 CAPTCHA 时获得新图像一样,您将通过 mechanize 获得新图像。这到底有什么问题?
  • 嗯,我需要包含验证码图像的页面。我应该在下面的文本字段中输入的数据必须与上面的图像相对应。那么,只请求一个随机图像而没有它应该在的页面有什么用呢?
  • 1) 读取页面,2) 查找并下载此页面引用的 CAPTCHA 图片,3) 将此下载的文件,而不是 URL,提交给 Google 服务,4) 读取结果并使用相同的 mechanize 实例来保存您已阅读该 CAPTCHA 的页面以发送回答案。
  • 哦,对了。通常,每当我右键单击验证码图像并单击查看图像时,它总是将我带到不同的图像,这就是为什么我认为即使下载也会给我一个不同的图像。但是不,它给了我相同的图像。谢谢!
【解决方案2】:

我最喜欢绕过验证码是deathbycaptcha。他们有一个可用于大多数语言的 api。还有一项服务可以让您解决验证码以获得未来解决方案的信用,但我现在不记得它的名称了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 2011-01-12
    • 2013-12-31
    • 2013-01-12
    • 2017-02-25
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多