我正在网站上制作注册程序 为此,我使用C ++ Builder和Indy(TIdHTTP)。
工作原理:
问题:CAPTCHA代码始终不正确。这必须是因为在这三次调用网站之间的某个地方,CAPTCHA挑战发生了变化。
为了防止这种情况,必须以某种方式连接这些请求 所以我认为,这里需要某种sessions支持......
请告诉我如何在Delphi或C ++ Builder中实现这一目标
编辑:
由于Runner
,我发现会话ID存储在Cookie中答案 0 :(得分:2)
对我而言,序列似乎是正确的。只需检查发布CAPTCHA回复时的问题,即可提供ID以告知CAPTCHA是哪个。
对我而言,听起来您的POST未被识别为特定请求。换句话说,您可能没有将响应与特定用户相关联。当您第一次调用GET并从服务器返回CAPTCHA时,服务器必须为您提供返回的CAPTCHA的唯一ID。这可以是一个唯一的URL,一个cookie,一个嵌入HTML中的字段等等......
这是我对你的描述的猜测。
编辑:
我有更多信息。它显然是一个PHP服务器。从“BlaXpirit”提供的页面:
访问您网站的访问者是 分配了一个唯一的id,即所谓的 会话ID。这要么存储在 用户方面的cookie或是 在URL中传播。
因此,如果ID在cookie中,那么我猜你没有发回cookie。你是这里的中间人,就像这样。
您应该将cookie发送到客户端,然后返回CAPTCHA服务器,或者拥有自己的会话管理,存储CAPTCHA cookie,在他/她发送响应时识别客户端,并将带有响应的cookie发送回CAPTCHA服务器。
答案 1 :(得分:2)
如果服务器在cookie中发送了PHP会话ID,请确保使用的是最新版本的Indy。 Indy 10的cookie处理已经被打破了一段时间,但我最近检查了Indy的cookie管理的新代码,以解决很多问题。
如果服务器在注册表单的隐藏字段中发送了PHP会话ID,那么您需要确保在发回的POST数据中包含该ID。
答案 2 :(得分:0)
使用 IdCookieHandler 并将其链接到IdHTTP对象。然后所有的cookie /会话管理内容将由Indy 自动完成。
如果您希望使用真实会话支持和Web自动化(包括注册),这是最快速,最干净的解决方案。
答案 3 :(得分:-1)
让我猜猜,嗯......我打赌你注册雅虎:)无论如何,对于大多数流行的邮件提供商来说,它并不那么容易,有一些javascripts可以防止自动注册。这些脚本可以动态生成cookie或POST字段。