我写了一个简短的片段,它发送一个GET请求,执行auth并检查是否有200 OK响应(当auth成功时)。现在,我在这个特定的GET请求中看到的一件事是,无论auth是否成功,响应总是为200.
差异在HTTP响应中。那是当auth失败时,第一个响应是200 OK,就像auth成功时一样,然后再进行第二步。该页面再次被重定向到登录页面。
我只是想制作一个快速的脚本,可以检查我的登录用户并传递我的网络应用程序并告诉我哪个auth通过,哪个没有。
我该如何检查?示例代码如下:
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 :(得分: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
答案 1 :(得分:0)
如果有来自200的重定向,那么它必须是javascript或元重定向。所以只需在响应主体中查找。