Запрос из Википедии возвращает ошибку 403 - PullRequest
3 голосов
/ 12 ноября 2011

Я запрашиваю Википедию, используя следующий код, но я всегда получаю сообщение об ошибке (403 запрещено). Однако когда я набираю тот же самый URL в моем браузере, это работает. Я использовал тот же код раньше для запроса других веб-API, поэтому я не уверен, что вызывает проблемы.

    private static string query(string text)
    {
        text = text.Replace(" ", "%20");

        string url = "http://en.wikipedia.org/w/api.php?action=opensearch&search=" + text + "&format=json&callback=spellcheck";

        WebClient client = new WebClient();
        client.Headers.Add("User-Agent", "whatever");  // <-- this line was missing

        try
        {
            string response = client.DownloadString(url);
            return response; 
        }
        catch(Exception e)
        {
            Console.WriteLine(e.Message);
            return null; 
        }   
    }

1 Ответ

5 голосов
/ 12 ноября 2011

Попробуйте установить для заголовка пользовательского агента значение, соответствующее вашему браузеру. Если это не работает, запустите Fiddler , взгляните на заголовки браузера и скопируйте их в свой веб-запрос.

http://msdn.microsoft.com/en-us/library/system.net.webclient.headers.aspx

EDIT

Совет, который я дал, был общим. Пожалуйста, соблюдайте правила веб-сайта, с которого вы загружаете файлы, так как подделка пользовательского агента браузера может противоречить политике или считаться вредоносной по умолчанию:

http://meta.wikimedia.org/wiki/User-Agent_policy:

Не копируйте пользовательский агент браузера для своего бота, так как поведение, похожее на бот с пользовательским агентом браузера, будет считаться вредоносным.

...