2017-02-11 3 views
1

Ich bin eine HTTP-Anforderung mit dem HTTParty Ruby-Edelsteine ​​mit dem folgenden Code zu senden:HTTParty Anfrage liefert 404 Code

require 'httparty' 
require 'pry' 

page = HTTParty.get('http://www.cubuffs.com/') 

binding.pry 

Sie können überprüfen, ob die URL gültig ist. Wenn die Ergebnisse mit Pry zu erkunden, erhalte ich die folgende:

[1] pry(main)> page 
=> nil 
[2] pry(main)> page.code 
=> 404 
[3] pry(main)> page.response 
=> #<Net::HTTPNotFound 404 Not Found readbody=true> 

Ich bin mir ziemlich sicher, dass nichts mit meinem Code falsch ist, weil ich andere URLs ersetzen kann und sie funktionieren wie erwartet. Aus irgendeinem Grund geben URLs aus dieser Domäne einen 404-Code zurück. Irgendwelche Ideen, was hier falsch ist und wie man es repariert?

Antwort

2

Der Besitzer dieser Website überprüft den Benutzer-Agent aus dem Browser und nicht die, die HTTParty verwendet. Sie können die Seite erhalten, indem ein User-Agent-Header von einem Browser einschließlich, hier ist die von Chrome:

Mozilla/5.0 (Macintosh, Intel Mac OS X 10_12_3) AppleWebKit/537,36 (KHTML, wie Gecko) Chrom /56.0.2924.87 Safari/537,36

Ihr Code wie folgt ändern:

require 'httparty' 
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' 

page = HTTParty.get('http://www.cubuffs.com/', headers: {"User-Agent": user_agent}) 
Verwandte Themen