2010-06-10 104 views
1

我得到一個 「DOS」,而不是HTML字符串....Web請求返回 「DOS」

let getHtmlBasic (uri :System.Uri) = 
    use client = new WebClient() 
    client.DownloadString(uri) 


let uri = System.Uri("http://www.b-a-r-f.com/") 
getHtmlBasic uri 

這給出了一個字符串, 「DOS」

大聲笑什麼?

所有其他網站似乎工作...

+2

這兩個任意一個,barf.com是你的網站,你推廣它,或者試圖從我們這裏偷東西或barf.com識別您的要求有關DDOS攻擊,假冒用戶和投訴 – eugeneK 2010-06-10 10:58:04

+1

好笨促進爲程序員提供英語論壇的法語網站。 – 2010-06-10 11:00:18

+0

有沒有其他信息可以給我們? WebClient對象是否返回HTTP響應頭,例如'200','404','500' – 2010-06-10 11:02:49

回答

1
let req = (WebRequest.Create(uri)) :?> HttpWebRequest 
// 'use' is equivalent to ‘using’ in C# for an IDisposable 
req.UserAgent<-"Mozilla" 
0

它是基於用戶代理。如果您使用瀏覽器用戶代理,請求將起作用。這就是說,這似乎是一個非常明確的Keep Out消息。

+0

對不起,你告訴他。 – 2010-06-10 11:01:15

+0

@開發者藝術:爲什麼他很難過,他試圖幫助開發者? – 2010-06-10 11:04:07

+0

@Ian,尤其是考慮到他剛纔說jlezard正在試圖發送垃圾郵件(這意味着它是他的網站)。 – 2010-06-10 11:05:26

1

他們可能會檢測到自動爬網並向您發送該響應。

+3

-1似乎苦澀 - 複製我精確刪除的答案。 – 2010-06-10 11:09:07

+0

這是正確的答案;有人不得不把它放在那裏。但現在其他人已經給出了相同的答案,我想他們可以獲得信貸,而不是你 - 而不是我。 – 2010-06-10 11:51:09

1

我一直在測試自己(不是在F但它並不重要),我可以確認該站點讀取用戶代理字符串,並根據其值返回站點內容或「DOS」文本。

奇怪的是,它們提供了一個feed服務(RSS和Atom),並且它們也會過濾出對它的請求。

雖然用戶代理信息可以很容易僞造,但我的建議是,你試圖獲得他們的權限來抓取內容;至少來自XML feed!

+0

我打算用我的小「爬蟲」來閱讀幾千頁,你覺得我會遇到很多像這樣的網站嗎? 謝謝 – jlezard 2010-06-10 11:22:15

+3

確保你知道你在做第三方網站或耗盡他們的帶寬之前正在做什麼。編寫智能爬蟲很困難。閱讀所有使用條款是不可能的。 – 2010-06-10 12:25:52

+0

我會放一點計時器,不要打倒第三方。它肯定比我想做一個智能爬蟲要困難得多。但是在F#中異步計算尤其有趣。 感謝您的警告:) – jlezard 2010-06-10 14:37:45