Po obejrzeniu dużo, znalazłem kilka rozwiązań, które wydają się działać, ale nie dla mnie ...Jak wykonać podstawowe uwierzytelnianie przez HTTPs w Ruby?
Na przykład mam ten skrypt:
require 'net/http'
require "net/https"
@http=Net::HTTP.new('www.xxxxxxx.net', 443)
@http.use_ssl = true
@http.verify_mode = OpenSSL::SSL::VERIFY_NONE
@http.start() {|http|
req = Net::HTTP::Get.new('/gb/PastSetupsXLS.asp?SR=31,6')
req.basic_auth 'my_user', 'my_password'
response = http.request(req)
print response.body
}
Kiedy go uruchomić, to daje mnie strona, która wnosi do uwierzytelniania, ale jeśli piszę następujący adres URL w przeglądarce, otrzymuję na stronie bez problemów:
https://my_user:[email protected]/gb/PastSetupsXLS.asp?SR=31,6
próbowałem również z open-uri:
module OpenSSL
module SSL
remove_const :VERIFY_PEER
end
end
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
def download(full_url, to_here)
writeOut = open(to_here, "wb")
writeOut.write(open(full_url, :http_basic_authentication=>["my_user", "my_password"]).read)
writeOut.close
end
download('https://www.xxxxxxx.net/gb/PastSetupsXLS.asp?SR=31,6', "target_file.html")
Jednak wynik jest taki sam, witryna żąda uwierzytelnienia użytkownika. Jakieś wskazówki, co robię źle ?. Czy muszę zakodować hasło w Base 64?
Czy próbowałeś dodać nazwę użytkownika i hasło w adresie URL w taki sam sposób, jak w przeglądarce? –
Tak, oczywiście, ale w ten sposób nie jest obsługiwane dla tych bibliotek. –