【问题标题】:Get image for captcha session获取验证码会话的图像
【发布时间】:2013-07-13 22:54:57
【问题描述】:

我想获取网站上显示的当前验证码。这方面的一个例子是 http://top100arena.com/in.asp?id=58978

除了右键单击->在新页面中打开图像之外,我如何获得显示的验证码的图像链接?

【问题讨论】:

  • 如果你想用 Java 来做,你将不得不解析页面并提出某种启发式方法来确定你是解析了验证码图像还是普通图像.
  • 解析页面的问题是你得到这个:google.com/recaptcha/api/… 每次打开它都会改变挑战,所以你不会在页面上得到相同的挑战。挑战键是在此处显示图像的内容:google.com/recaptcha/api/image?c=#challengekey
  • 您希望如何完成?您希望您的 java 程序在后台运行,并且每当您在浏览器中打开一个带有验证码的站点时,该程序都会将 url 复制到日志或数据库或您想要的什么?

标签: java captcha


【解决方案1】:

您正在寻找由"rechapta_image" 标识的div:

然后提取这个div里面img元素的src属性。

为此,您可以选择简单的基于字符串操作的方式或使用 HTML 解析库,如 JSoup

以下是此类提取 URL 的示例:

http://www.google.com/recaptcha/api/image?c=03AHJ_VutGj3wvhGoQGxu6FUnG3uOWJdyB2RpSb2N5v9AQJyakMy1kKMPeDoRfADhjAj5rLqekuOzXe3cRChnA_sEN7PL68em4pI_kE3wFKUhhkqFF9jQzKJerX__InwD_DB0Ox1mKQmZVRl97yuSL62tZhYyhSqtuIta-3n0KvytB9QqSn8nXgw8


实际上,chapta box 似乎是一个 iframe。因此,使用包含“chapta”的 src 字符串搜索 iframe。这种 iframe 的示例:

<iframe src="http://www.google.com/recaptcha/api/noscriptk=6LeyFroSAAAAAJTmR7CLZ5an7pcsS5eJ3wEoWHhJ"
   height="300" width="500" frameborder="0"></iframe><br/>

因此,一旦您提取了该 URL,请再次使用 JSoup 查找图像的 URL。获取的页面有这样的部分:

所以,寻找一个中心元素,并从中取出 img 元素。

【讨论】:

  • 你是如何让这个出现的?这不在页面源代码中。
  • 在谷歌浏览器中,右键单击并单击“检查元素”。 Safari 和 Firefox 也有类似的功能。如果您使用 Safari,我认为您必须在 Safari 设置中打开开发人员工具。
  • 使用 JSoup,正如我在回答中所建议的那样。并使用Elements div = document.select("div#rechapta_image"); 获取 div。
  • 打印出 div 对象从 do​​cument.select("div#recaptcha_image") 中打印出 ""。
  • 是的,你应该获取里面的 img 元素,然后请求 src 属性。在调试时,您可以尝试document.select("div#rechapta_image").html() 并将其打印出来。
【解决方案2】:

尝试在 firefox https://addons.mozilla.org/es/firefox/addon/firebug/ 中使用 Firebug,它易于使用,在红色部分您会找到一个名为 Image 的标签,您会在那里找到图像。

【讨论】:

    猜你喜欢
    • 2015-02-13
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 2015-06-27
    • 2023-03-29
    相关资源
    最近更新 更多