如果我访问链接http://mega.1280.com/file/EKOZKE/,输入验证码并点击下载按钮,我可以下载文件。
我想知道我是否可以在不单击“下载”按钮的情况下提交表单?我的意思是直接在地址栏上输入验证码然后回车?
我尝试http://mega.1280.com/file/EKOZKE/?code_security=xxxxxx其中“code_security”是验证码文本框的名称,但它失败了。有任何想法吗?
如果我访问链接http://mega.1280.com/file/EKOZKE/,输入验证码并点击下载按钮,我可以下载文件。
我想知道我是否可以在不单击“下载”按钮的情况下提交表单?我的意思是直接在地址栏上输入验证码然后回车?
我尝试http://mega.1280.com/file/EKOZKE/?code_security=xxxxxx其中“code_security”是验证码文本框的名称,但它失败了。有任何想法吗?
该表单有一个 POST 方法。您不能使用不同的 url 模拟 POST 请求,这就是 GET 请求所做的。
即使服务器不检查请求的方法,您仍然必须提供每个强制性数据。如果您查看表单发送的内容,您会看到还有 3 个其他参数(action
、btn_download
、 ),更重要的是,服务器需要file_id
几个 cookie 来恢复您的 php 会话(PHPSESSID
security_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
参数指向的文件的响应。