4

我想访问有关 Facebook 上任何用户的公共信息。基本上,这意味着只有用户图片和全名,仅此而已。这是您在未登录的情况下打开页面时获得的信息,如下所示:

http://www.facebook.com/jurgenappelo

但是,当我尝试从代码中执行此操作时,Facebook 会返回此消息:

“您使用的是不兼容的网络浏览器。”

我正在尝试模仿 Firefox 浏览器,但这似乎不起作用。难道我做错了什么?或者 Facebook 是否使用其他技术来阻止这一点?

        var requestString = "http://www.facebook.com/jurgenappelo";
        var request = (HttpWebRequest)WebRequest.Create(requestString);
        request.Headers.Add("HTTP_USER_AGENT", "Gecko/20050511 Firefox/1.0.4"); 
        try
        {
            HttpWebResponse response =(HttpWebResponse)request.GetResponse();
            if (response != null)
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    Stream stream = response.GetResponseStream();
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        var html = reader.ReadToEnd();
                    }
                }
            response.Close();
            }
        }
        catch { }
4

2 回答 2

8

难道我做错了什么?

您违反了 Facebook 的条款和条件:

未经我们许可,您不得使用自动化方式(例如收获机器人、机器人、蜘蛛或刮刀)收集用户信息或以其他方式访问 Facebook。

http://www.facebook.com/terms.php?ref=pf

于 2009-07-23T11:19:52.413 回答
3

根据这个:

在 .NET 中设置 HTTP 标头:必须使用适当的属性修改此标头

你应该尝试改变:

request.Headers.Add("HTTP_USER_AGENT", "Gecko/20050511 Firefox/1.0.4"); 

到:

request.UserAgent = "Gecko/20050511 Firefox/1.0.4";
于 2009-07-23T12:31:21.567 回答