GET リクエストを送信し、認証を実行し、200 OK 応答があるかどうかを確認する短いスニペットを作成しました (認証が成功した場合)。さて、この特定の GET リクエストで見た 1 つのことは、認証が成功したかどうかに関係なく、応答が常に 200 であることです。
差分は HTTP 応答にあります。つまり、認証が失敗した場合、最初の応答は 200 OK で、認証が成功した場合とまったく同じです。この後、2 番目のステップがあります。ページは再びログイン ページにリダイレクトされます。
ログインユーザーをチェックしてWebアプリケーションを渡し、どの認証が成功したか、どれが失敗したかを教えてくれる簡単なスクリプトを作成しようとしています。
これを確認するにはどうすればよいですか?サンプルコードは次のようになります。
def funcA(u, p)
print_A("#{ip} - '#{u}' : '#{p}' - Pass")
end
def try_login(u, p)
path = '/index.php?uuser=#{u}&ppass=#{p}'
r = send_request_raw({
'URI' => 'path',
'method' => 'GET'
})
if (r and r.code.to_i == 200)
check = true
end
if check == true
funcA(u, p)
else
out = "#{ip} - '#{u} - Fail"
print_B(out)
end
return check, r
end
end
更新: HTTP 応答で受信する「成功/失敗」キーワードに一致するための新しいチェックも追加しようとしました。それもうまくいきませんでした。しかし、戻ってくるレスポンスが違う形になっているように見えることに今気づきました。ただし、応答の Content-Type は text/html;charset=utf-8 です。また、解析を行っていないため、失敗しています。
成功応答の形式は次のとおりです。
{"param1":1,"param2"="Auth Success","menu":0,"userdesc":"My User","user":"uuser","pass":"ppass","check":"success"}
失敗応答は次の形式です。
{"param1":-1,"param2"="Auth Fail","check":"fail"}
そのため、この応答を解析する方法についていくつかの指針が必要です。
どうもありがとう。