如何访问加载页面时生成的验证码图像?

时间:2010-10-24 21:08:04

标签: http forms login

在某些网站上,当您想要登录时,您还需要输入验证码。如果我想为用户提供支持,将验证码输入我的应用程序(然后登录网站),我该怎么做?

我的问题是,验证码图像的链接是这样的:example.com/captcha,每次加入时它都会提供不同的图像。

我的方法是这样的:

  • 请求页
  • 下载图片
  • 向用户显示图片
  • 用户输入登录信息
  • 应用程序登录

问题是,如果您下载图像以向用户显示图像,您实际上会收到的图像与加载页面时生成的图像不同,对吗?如何获取页面加载时生成的图像,以便当我向用户显示时,它是正确的?

问题是与语言无关。

8 个答案:

答案 0 :(得分:3)

我认为你的问题是关于会话,你的app下载图片的会话以及提交登录表单的app会话可能不是同一个会话,那么你的验证码永远不会是正确的,你应该在请求之间保持会话,通常是网站设置的一些cookie。

答案 1 :(得分:1)

听起来你正试图自己发明一个验证码解决方案。您考虑过使用reCAPTCHA吗?它是免费的。

答案 2 :(得分:1)

你能对你的情况有所了解吗?从你所说的,我假设如下:

  • 您有一个登录第三方网站的“客户端GUI应用”。这是一个Web应用程序,还是桌面/独立应用程序?用什么语言写的?
  • 您的应用会与第三方网站联系并下载验证码图片。然后,该图像将显示给用户。
  • 用户输入验证码短语并将其提交给您的应用。然后,您的应用会将此短语提交到网站进行验证。这是会话进入的地方。假设远程站点使用基于cookie的会话跟踪,您将需要像下载图像时那样将此相同的cookie发送到第三方服务器(在上面的步骤中)。这允许服务器将您的提交与其发送的正确图像进行匹配。确切地说,如何执行此操作取决于您编写应用程序的语言及其精确结构。没有更多信息,就不可能有更具体的解决方案。

答案 3 :(得分:1)

按照设计,大多数验证码都会给你一个不同的图像。没办法解决这个问题。

首先要做的是打开fiddler。通过这种方式,您可以看到浏览器正在做什么,以便它可以进行认证。保持原谅。

通常归结为发送的cookie。因此,您需要做的是在您的客户端应用程序上保留cookie,并使用该cookie发送所有请求。不同的平台提供了这样做的功能,但我确信快速搜索会告诉你如何。

记住要注意所有在小提琴手中交换的内容,你需要确保你的应用程序触发相同的内容。除了cookie之外,还要注意js可能在表单上设置的任何隐藏字段。

答案 4 :(得分:0)

生成的图像也是提供给用户的图像。你的“主要”html页面没有/不应该生成图像,它只使用图像标记嵌入它。

答案 5 :(得分:0)

您可以使用验证码图像传递某种令牌,也可以附加到文件名中,例如captcha-0ad719bef61bc6a0.jpg,附加的数据可以链接到数据库服务器端的具有正确答案的临时表。这样您就可以在不将图像和答案传递给应用程序的情况下检查一切正常。

答案 6 :(得分:0)

我不确定我是否完全理解这个问题,但是你不会只是在从服务器请求后在本地存储验证码,然后从客户端应用程序嵌入本地映像,同时存储任何必要的会话验证码数据假设用户输入正确,那将允许在帖子上验证验证码吗?

如果问题是每次请求时验证码都会发生变化,只需要请求一次。

如果这不适用于您,您能否提供更多说明?

答案 7 :(得分:0)

这取决于验证码到另一个验证码。也许你需要使用会话或cookie或一些验证码图像文件名。显示带有验证码的页面。