1

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

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

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

4

1 回答 1

1

该表单有一个 POST 方法。您不能使用不同的 url 模拟 POST 请求,这就是 GET 请求所做的。

即使服务器不检查请求的方法,您仍然必须提供每个强制性数据。如果您查看表单发送的内容,您会看到还有 3 个其他参数(actionbtn_download、 ),更重要的是,服务器需要file_id几个 cookie 来恢复您的 php 会话(PHPSESSIDsecurity_code 与提供的验证码。

底线:您可以模拟请求,但不能通过提交简单的 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参数指向的文件的响应。

于 2009-06-10T12:53:47.777 回答