Connection reset by peer - SSL_connect lors de l'ouverture d'une URL
Je suis tenté de télécharger un .fichier zip à partir d'une BingAds URL et me bats pour contourner cette erreur:
Connection reset by peer - SSL_connect
J'ai ce code en cours d'exécution dans la production à travers une autre application, mais je suis en utilisant la nitro.io pour une nouvelle application sur un chromebook et en cours d'exécution hors de leurs rails par défaut de l'installer (le protoxyde encadré).
Le code actuellement en train de travailler dans l'autre application:
class BingApi
def self.get_data(request_params={})
require 'zip'
#Acquire Bing report download URL
report_url = BingApi.acquire_report_url(report_request_id, request_params)
zip_file = open(report_url)
unzippedxml = Zip::File.open(zip_file) # open zip
entry = unzippedxml.entries.reject(&:directory?).first # take first non-directory
entry.get_input_stream{|is| is.read } # read file contents
end
La report_url
ressemblera à quelque chose comme: https://download.api.bingads.microsoft.com/ReportDownload/Download.aspx?q=cWmkJ72lVlzGEG%2fouLL8Xes2j6I5qVhLrnTqNIrW....
Lors de la visite, il vous invite à télécharger un .fichier zip que j'ai décompresser et ensuite les analyser.
Cependant, ce même code sur le chromebook en utilisant le protoxyde d'box me donne la Connection reset by peer - SSL_connect
erreur
Errno::ECONNRESET - Connection reset by peer - SSL_connect:
/home/action/.parts/packages/ruby2.1/2.1.1/lib/ruby/2.1.0/net/http.rb:920:in `block in connect'
/home/action/.parts/packages/ruby2.1/2.1.1/lib/ruby/2.1.0/timeout.rb:76:in `timeout'
/home/action/.parts/packages/ruby2.1/2.1.1/lib/ruby/2.1.0/net/http.rb:920:in `connect'
/home/action/.parts/packages/ruby2.1/2.1.1/lib/ruby/2.1.0/net/http.rb:863:in `do_start'
/home/action/.parts/packages/ruby2.1/2.1.1/lib/ruby/2.1.0/net/http.rb:852:in `start'
/home/action/.parts/packages/ruby2.1/2.1.1/lib/ruby/2.1.0/open-uri.rb:313:in `open_http'
/home/action/.parts/packages/ruby2.1/2.1.1/lib/ruby/2.1.0/open-uri.rb:724:in `buffer_open'
/home/action/.parts/packages/ruby2.1/2.1.1/lib/ruby/2.1.0/open-uri.rb:210:in `block in open_loop'
/home/action/.parts/packages/ruby2.1/2.1.1/lib/ruby/2.1.0/open-uri.rb:208:in `open_loop'
/home/action/.parts/packages/ruby2.1/2.1.1/lib/ruby/2.1.0/open-uri.rb:149:in `open_uri'
/home/action/.parts/packages/ruby2.1/2.1.1/lib/ruby/2.1.0/open-uri.rb:704:in `open'
/home/action/.parts/packages/ruby2.1/2.1.1/lib/ruby/2.1.0/open-uri.rb:34:in `open'
lib/bing_api.rb:25:in `get_data'
lib/bing_api.rb:224:in `get_and_parse'
J'ai essayé différentes solutions:
zip_file = open(report_url, :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE)
OU
zip_file = Faraday.get(report_url, :ssl => false)
Enfin, je l'ai contourné en utilisant:
uri = URI.parse(report_url)
https = Net::HTTP.new(uri.host, uri.port)
https.open_timeout = 5
https.use_ssl = true
https.ssl_version = 'SSLv3'
request = Net::HTTP::Get.new(uri.request_uri)
zip_file = https.request(request)
mais je ne peux pas passer le zip_file
à unzippedxml = Zip::File.open(zip_file)
ou je reçois un no implicit conversion of Net::HTTPOK into String
TypeError.
Ai-je raté quelque chose de simple ici? Dois-je faire quelque chose de différent, que zip_file.class => Net::HTTPOK
objet?
J'ai essayé d'appeler zip_file.body
mais ce qui est retourné ressemble à ce que vous verriez si vous avez essayé d'ouvrir un fichier zippé dans un éditeur avant de décompression.
OriginalL'auteur macoughl | 2015-01-14
Vous devez vous connecter pour publier un commentaire.
Le serveur est interrompue.
Il ne prend en charge explicite TLS1.0 et SSL3.0 les poignées de main et ne prend pas en charge le généralement utilisé et le plus compatible SSLv23 poignée de main. Et même explicite TLS1.0 poignée de main, il peut échouer si vous incluez le mal ou trop algorithmes. La sortie de analyze.pl:
Comme on peut le voir ici SSLv23, TLSv1_2 et TLSv1_1 poignées de main ne fonctionnent pas et TLSv1 poignée de main ne fonctionne pas mais pas si les algorithmes sont ÉLEVÉS:TOUS (peut-être trop algorithmes ou peut-être inattendue, les algorithmes sont inclus). SSLv3 poignée de main puis travaille stable.
Navigateurs contourner ce genre de comportement en essayant plusieurs fois tandis que lentement abaisser le protocole SSL/TLS version utilisée dans la poignée de main. Mais en dehors de navigateurs pratiquement personne d'autre ne le fait. Toute autre demande sera généralement pas, sauf si elles sont spécifiquement configuré pour utiliser TLS1.0 ou SSL3.0 des poignées de main avec ce serveur.
Au moins l'URL que vous avez donné ne renvoie 404 not found. Veuillez vérifier que vous avez réellement obtenu un fichier ZIP. Je ne sais pas sur ce serveur, mais souvent ce genre de télécharger des liens créés dynamiquement et ne sont valables que si vous avez visité un autre site avant et a obtenu un cookie ou une chose semblable à cravate l'URL de votre session de navigation.
Je ne sais pas si il est possible d'obtenir l'URL en dehors du navigateur, parce que vous pourriez avoir besoin d'avoir les mêmes cookies ou même navigateur d'empreintes digitales. Vous devez essayer. Si une simple URL de téléchargement échoue, peut-être qu'on pourrait les imiter assez du comportement du navigateur avec mechanize.
OriginalL'auteur Steffen Ullrich