2009-06-10 72 views
1

如果我訪問鏈接http://mega.1280.com/file/EKOZKE/,輸入驗證碼,然後點擊下載按鈕,我可以下載文件。問題與表格直接提交

我不知道我是否可以在不點擊「下載」按鈕的情況下提交表單?我的意思是直接在地址欄上輸入驗證碼,然後按Enter鍵?

我嘗試http://mega.1280.com/file/EKOZKE/?code_security=xxxxxx其中'code_security'是驗證碼的文本框的名稱,但失敗。有任何想法嗎?

+0

你爲什麼這樣做? – Shoban 2009-06-10 12:48:27

+0

我只想找出本網站用於提交表單的技術。 – ByulTaeng 2009-06-10 12:56:51

回答

1

表單具有POST方法。您無法使用其他網址來模擬POST請求,這就是GET請求的作用。

即使服務器沒有檢查請求的方法,您仍然必須提供每個必需的數據。如果您查看錶單發送的內容,您會看到還有3個其他參數(action,btn_download,file_id),更重要的是服務器需要恢復您的php會話(PHPSESSID),這反過來又是幾個cookie需要將您的security_code與提供的CAPTCHA相匹配。

底線:您可以模擬請求,但不能提交簡單的GET請求。你必須使用一個真正的用戶代理,一個能夠發送請求並處理cookie的用戶代理。

......但當然,這正是CAPTCHA在這裏阻止你做的事:-)。

編輯:回覆您的評論「我只想找出本網站用於提交表單的技術。」 :

本網站實際上未提交表格。它是您的瀏覽器提交表單的依據,並符合HTML和HTTP標準。在網頁,形式編碼

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

所以,當你點擊「提交」按鈕,您的瀏覽器輸入收集的所有數據(文本,隱藏,等等),併發送一個HTTP POST請求與表單來源相同的網址,以及一堆HTTP標頭(包括一個Cookie標題,該標題包含附加到此服務器域的所有存儲的Cookie信息)以及包含表單數據的主體:鍵/值對列表。

服務器收到請求。它可以檢查它實際上是一個POST請求。它可以並將檢索所有提交的數據對(參數)。它可以檢索cookie,並且會這樣做來恢復你的php會話。然後它會將您的security_code參數與存儲在您的php會話中的正確數據進行比較。如果驗證碼匹配,則它會向您發送一個響應,其中包含您的file_id參數指向的文件。