在過去,我遇到了Mechanize無法解析DNS本身的問題。
儘管我很確定Mechanize使用Resolv來獲取底層網站,但我也無法獲得agent.get('http://formitas.si')
的工作。
相反,我所做的是顯式訪問Resolv庫並將IP設置爲我訪問的內容而不是主機名。
require 'mechanize'
require 'Resolv'
@agent = Mechanize.new
address = Resolv.getaddress "formitas.si"
page = @agent.get('http://' + address.to_s) # wouldn't let me use string interpolation on SO
pp page
從而結束了給我這個:
#<Mechanize::Page
{url #<URI::HTTP:0x007f7f93ec7c68 URL:http://212.44.99.132/>}
{meta_refresh}
{title nil}
{iframes}
{frames}
{links #<Mechanize::Page::Link "" "http://www.parallels.com/plesk/">}
{forms}>
我用'wget'並得到了這一點: --2014-03-12 09:30:43-- HTTP:// formitas .si/ 正在解析formitas.si(formitas.si)... 212.44.99.132 正在連接formitas.si(formitas.si)| 212.44.99.132 |:80 ...已連接。 發送HTTP請求,等待響應... 500內部服務器錯誤 2014-03-12 09:30:44錯誤500:內部服務器錯誤。 – squiguy
標題有誤導性。問題不在於機械化返回錯誤,它只是報告問題的信使。服務器在Mechanize請求的有效URL上返回500。 –
我嘗試捲曲,它的工作......所以捲曲的作品和wget /機械不要...... – davidhq