我正在使用以下代码查询维基百科,但我总是收到错误(403 禁止)。但是,当我在浏览器中键入完全相同的 url 时,它会起作用。我之前一直在使用相同的代码来查询其他 web 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;
}
}
最佳答案
尝试设置 user agent header与您的浏览器相匹配的内容。如果这不起作用,请启动 Fiddler , 查看您的浏览器 header 并将它们复制到您的网络请求中。
http://msdn.microsoft.com/en-us/library/system.net.webclient.headers.aspx
编辑
我给出的建议是通用的。请遵守您正在下载的网站的政策,因为欺骗浏览器用户代理可能违反政策或默认情况下被视为恶意:
http://meta.wikimedia.org/wiki/User-Agent_policy :
Do not copy a browser's user agent for your bot, as bot-like behavior with a browser's user agent will be assumed malicious.
关于c# - 维基百科查询返回错误 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8105602/