F# “Web请求返回”;DOS";

F# “Web请求返回”;DOS";,f#,web-crawler,F#,Web Crawler,我得到的是“DOS”而不是html字符串 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” 哈哈,这是什么 所有其他网站似乎都可以运行…它基于用户代理。如果使用浏览器用户代理

我得到的是“DOS”而不是html字符串

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”

哈哈,这是什么


所有其他网站似乎都可以运行…

它基于用户代理。如果使用浏览器用户代理,请求将起作用。这就是说,这似乎是一个非常明确的禁止消息。

他们可能检测到自动爬网并向您发送响应。

我已经在测试自己(不是用F,但这并不重要),我可以确认站点读取用户代理字符串,并根据其值返回站点内容或“DOS”文本

奇怪的是,它们提供了一个提要服务(RSS和Atom),还过滤掉了对它的请求

虽然用户代理信息很容易被伪造,但我的建议是,你应该尝试获得他们的许可来获取内容;至少从XML提要

let req=(WebRequest.Create(uri)):?>HttpWebRequest
let req =  (WebRequest.Create(uri)) :?> HttpWebRequest
// 'use' is equivalent to ‘using’ in C# for an IDisposable
req.UserAgent<-"Mozilla"
//对于IDisposable,“use”相当于C#中的“use”
req.UserAgentit是两个网站中的一个,barf.com是您的网站,您宣传它或试图从我们这里窃取一些东西,或者barf.com将您的请求视为虚假用户,并投诉DDOS攻击在英语程序员论坛上宣传法语网站有点愚蠢。您没有其他信息可以提供给我们吗?
WebClient
对象是否返回HTTP响应头,例如
200
404
500
System.Net.HttpWebResponse{CharacterSet=“ISO-8895-1”;ContentType=“text/html;charset=ISO-8895-1”;headers=seq[“保持活动状态”;“连接”;“内容长度”;“内容类型”……];Ismutuallyaauthenticated=false;Method=“GET”ProtocolVersion=1.1;ResponseUri=;Server=“Apache/2.2.11(Unix)mod_ssl/2.2.11 OpenSSL/0.9.7a mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.9”;StatusCode=OK;StatusDescription=“OK”;]@开发者艺术:你为什么对他试图帮助开发者感到抱歉?@Ian,特别是考虑到他刚刚说jlezard试图向我们发送垃圾邮件(这意味着这是他的网站).因为他告诉了他一种规避网站保护的方法。@Matt我想他是在指出eugeneK的断言是多么愚蠢:为什么有人会在一个英语编程网站上垃圾邮件发送一个专门针对宠物的四年前的法国网站,使用F#语言。感谢所有回复,除了开发者艺术(Developer Art),它似乎对生命怀有怨恨。我打算用我的小“爬虫”阅读几千页,你认为我会遇到很多这样的网站吗?感谢在关闭第三方网站或耗尽其带宽之前,确保您知道自己在做什么。编写一个智能爬虫很难。阅读所有的使用条款是不可能的。我会放一个小计时器,以不取下第三方。做一个聪明的爬虫肯定比我想象的要困难得多。但这很有趣,特别是在F#中,异步计算。谢谢你的警告:)如果网站上有robots.txt文件,你需要尊重他们的意愿。在爬网站点之前,您可能需要检查该文件是否存在;必须有人把它放在那里。但是现在其他人也给出了同样的答案,我想他们可以得到荣誉,而不是你,也不是我。