Ich schrieb ein Ruby-Skript eine Bild-URL heruntergeladen werden:Wie man eine cloudflare 520 Anfrage mit Ruby "nachlädt"?
require 'open-uri'
imageAddress = ARGV[0]
targetPath = ARGV[1]
fullFileNamePath = "#{targetPath}test.jpg"
begin
File.open(fullFileNamePath, 'wb') do |fo|
fo.write open(imageAddress).read
end
rescue OpenURI::HTTPError => ex
puts ex
File.delete(fullFileNamePath)
end
Verwendungsbeispiel:
ruby download_image.rb "https://images.genius.com/b015b15e476c92d10a834d523575d3c9.1000x1000x1.jpg" "/Users/Me/Downloads/"
Das Problem ist, manchmal laufe ich über diesen Ausgang Fehler:
520 Origin Error
Dann, wenn ich die gleiche URL in meinem Browser versuche, bekomme ich etwas wie folgt:
Wenn ich um die Seite oder klicken Sie auf den ‚Retry für eine Live-Version‘ Knopf im Bild oben, um die Seite geladen laden.
Dann, wenn ich das Skript erneut ausführen, lädt es das Bild einfach gut.
Also, wie kann ich diese Seite reload replizieren/"Retry für eine Live-Version" Verhalten mit Ruby und ohne zu meinem Browser wechseln? Das Ausführen des Skripts führt die Aufgabe nicht aus.
Es stellt sich heraus, es ist egal, wie lange Sie warten. Es funktioniert nur, wenn Sie es versuchen und im Browser neu laden und dann das Skript erneut aufrufen. – kraftydevil
Eine letzte Idee (naja ein paar) Je nachdem, wie weit du damit gehen willst. Sie könnten versuchen, wget oder curl über die Befehlszeile mit System auszuführen, ein Beispiel wäre "System" wget url_to_file_or_image "" Nokoguri hat für mich in der Vergangenheit gearbeitet, es hat einige nette Funktionen, um mit externen Quellen zu verbinden. –