如何从这个网址获取jpg?

时间:2014-11-01 02:16:51

标签: ruby-on-rails ruby nokogiri

此API提供来自网站的缩略图。

<img style="-webkit-user-select: none" src="http://webthumb.bluga.net/easythumb.php?user=00000&url=www.consumerreports.com&hash=sdf9g879d8f7g9sd8fg7s9df&size=medium&cache=30">

用户ID和哈希值已经过编辑,但如果它们是正确的,则此代码会在您的网页上生成一个名为easythumb.jpeg的小缩略图。

有没有办法获取缩略图并将其存储在我的数据库或AWS中?

或者webthumb是否经过精心设计以防止此类行为?

编辑:

根据以下建议尝试了Nokogiri,这是回归。看起来似乎无法从中获得jpg。我是对的吗?

1 个答案:

答案 0 :(得分:2)

理解什么事情做什么很重要。这是一些代码,已经过测试,可以下载图像:

require 'nokogiri'
require 'open-uri'

html = '<img style="-webkit-user-select: none" src="http://webthumb.bluga.net/easythumb.php?user=00000&url=www.consumerreports.com&hash=sdf9g879d8f7g9sd8fg7s9df&size=medium&cache=30">'
doc = Nokogiri::HTML(html)

uri = URI.parse(doc.at('img')['src']) 
# => #<URI::HTTP:0x007f8e13258520 URL:http://webthumb.bluga.net/easythumb.php?user=00000&url=www.consumerreports.com&hash=sdf9g879d8f7g9sd8fg7s9df&size=medium&cache=30>

File.basename(uri.path) 
# => "easythumb.php"

File.open(File.basename("#{ uri.path }.jpeg"), 'wb') { |fo| fo.write(open(uri).read) }

这就是说,URL无效。打开浏览器页面并粘贴该URL会返回“Bad Hash”,而不是图像。