2013-05-17 23 views
0

我已經寫了一小段,它發送一個GET請求來解析HTTP響應時,如果有一個200 OK響應(AUTH時成功)執行AUTH和檢查。現在,我通過這個特定的GET請求看到的一件事是,無論auth是否成功,響應始終爲200。如何使用Ruby

的DIFF是在HTTP響應。那就是當auth失敗時,第一個響應是200 OK,就像auth成功時一樣,在這之後還有第二步。該頁面再次被重定向到登錄頁面。

我只是試圖讓一個快速的腳本,可以檢查我的登錄用戶,並通過我的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"} 

所以現在我需要如何解析這個響應一些指點。

很多謝謝。

+0

你說的是http basic auth?也許你應該展示一些代碼。 – pguardiario

+0

增加了我的代碼片斷.. – Sunshine

+0

請注意,['和'/'或'*不是*一樣''&& /''||在紅寶石(http://devblog.avdi.org/2010/ 8月2日/使用和 - 和 - 或 - 在旁註/)。當布爾邏輯是意圖時,只有後者應該被使用。 –

回答

0

我這樣做與"net/http"

require 'net/http' 

uri = URI(url) 
connection = Net::HTTP.start(uri.host, uri.port) 
@response = Net::HTTP.get_response(URI(url)) 
@httpStatusCode = @response.code 
connection.finish 
+0

添加我的代碼片段.. – Sunshine

+0

嗨扎克,問題是,正如我上面提到的,有效和無效登錄嘗試給出相同的200響應。之後,如果認證失敗,頁面會重定向到登錄屏幕。 – Sunshine

0

如果有從200重定向,那麼它必須是一個JavaScript或元重定向。所以請在響應主體中尋找。

+0

我檢查了任何重定向腳本的響應源代碼。沒有... – Sunshine

+0

那麼你如何解釋重定向? – pguardiario

+0

好吧我不確定重定向腳本在哪裏。但是,這將如何發生/在這裏幫助?我送一個GET請求做身份驗證,並收到AUTH通過/失敗的響應... – Sunshine