0

我正在使用-Oor--output-document选项wget来存储从网站获取的 http。但是 -O 选项需要一个文件来存储输出,我想将它存储在我的程序中的一个变量中,以便我可以更轻松地操作它。有没有办法在不从文件中重新读取它的情况下做到这一点?本质上,我是在手动创建一个粗略的缓存。

示例代码

#!/usr/bin/ruby
url= "http://www.google.com"
whereIWantItStored = `wget #{url} --output-document=outsideFile`

参考:我发现这篇文章有助于在wget我的程序中使用:Using wget via Ruby on Rails

4

2 回答 2

3
#!/usr/bin/ruby
url= "http://www.google.com"
whereIWantItStored = `wget #{url} -O -`

一定要清理你的 url 以避免 shell 注入。-O 之后的 - 表示标准输出,它被 ruby​​ 反引号捕获。

https://www.owasp.org/index.php/Command_Injection 解释了 shell 注入。

http://apidock.com/ruby/Shellwords/shellescape 对于 Ruby >=1.9 或Escape Gem对于 ruby​​ 1.8.x

于 2013-04-19T01:59:05.730 回答
0

我不会使用 wget。我会使用类似HTTParty的东西。

然后你可以这样做:

require 'httparty'
url = 'http://www.google.com'
response = HTTParty.get(url)

whereIWantItStored = response.code = 200 ? response.body : nil
于 2013-04-19T01:53:44.190 回答