リンクhttp://mega.1280.com/file/EKOZKE/にアクセスし、キャプチャ コードを入力して [ダウンロード] ボタンをクリックすると、ファイルをダウンロードできます。
[ダウンロード] ボタンをクリックせずにフォームを送信できますか? アドレスバーにキャプチャコードを直接入力してEnterキーを押すということですか?
「 code_security 」はキャプチャ コードのテキスト ボックスの名前ですが、失敗しました。何か案は?
リンクhttp://mega.1280.com/file/EKOZKE/にアクセスし、キャプチャ コードを入力して [ダウンロード] ボタンをクリックすると、ファイルをダウンロードできます。
[ダウンロード] ボタンをクリックせずにフォームを送信できますか? アドレスバーにキャプチャコードを直接入力してEnterキーを押すということですか?
「 code_security 」はキャプチャ コードのテキスト ボックスの名前ですが、失敗しました。何か案は?
フォームには POST メソッドがあります。別の URL で POST リクエストをエミュレートすることはできません。これは GET リクエストが行うことです。
サーバーがリクエストのメソッドをチェックしない場合でも、すべての必須データを提供する必要があります。フォームから送信されたものを見ると、他に 3 つのパラメーター ( action
、btn_download
、file_id
) があり、さらに重要なことに、サーバーが php セッションを回復するために必要ないくつかの Cookie ( PHPSESSID
) があることがわかります。提供された CAPTCHA を含む 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
パラメーターが指すファイルを含む応答が送信されます。