表单直接提交有问题

时间:2009-06-10 12:33:25

标签: forms captcha

如果我访问链接http://mega.1280.com/file/EKOZKE/,请输入验证码并单击“下载”按钮,我可以下载该文件。

我想知道我是否可以在不点击“下载”按钮的情况下提交表单?我的意思是直接在地址栏上输入验证码并按Enter键?

我尝试http://mega.1280.com/file/EKOZKE/?code_security=xxxxxx其中'code_security'是验证码代码文本框的名称,但失败了。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

表单有一个POST方法。您无法使用不同的网址模拟POST请求,这就是GET请求所做的事情。

即使服务器没有检查请求的方法,您仍然必须提供每个必需数据。如果您查看表单发送的内容,您会看到还有其他3个参数(actionbtn_downloadfile_id),更重要的是服务器需要的几个Cookie恢复你的php会话(PHPSESSID),这需要将你的security_code与提供的CAPTCHA相匹配。

底线:您可以模拟请求,但不能通过提交简单的GET请求。您必须使用真正的用户代理,能够发送帖子请求和处理cookie。

......但当然,这正是CAPTCHA阻止你做的事情: - )。

编辑:回复您的评论“我只想了解本网站用来提交表单的技巧。” :

实际上,本网站不提交表格。这是您的浏览器提交表单,它通过符合HTML和HTTP标准来实现。在网页上,表单已编码

<form name="frm_download" method="post" action="">

因此,当您单击“提交”按钮时,您的浏览器会收集输入中的所有数据(文本,隐藏,无论如何),并将HTTP POST请求发送到表单源自的相同URL,并带有一堆HTTP标头(包括 Cookie 标头,其中包含附加到此服务器域的所有存储的Cookie信息)和包含表单数据的主体:键/值对列表。

服务器接收请求。它可以检查它实际上是一个POST请求。它可以并将检索所有提交的数据对(参数)。它可以检索cookie,并将这样做以恢复您的PHP会话。然后,它会将您的security_code参数与存储在php会话中的正确数据进行比较。如果CAPTCHA匹配,则会向您发送包含file_id参数指向的文件的回复。

相关问题