维基百科查询返回错误403
本文关键字:查询 返回 错误 百科 | 更新日期: 2023-09-27 18:14:10
我正在使用以下代码查询Wikipedia,但我总是得到一个错误(403 forbidden)。但是,当我在浏览器中输入完全相同的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;
}
}
尝试将用户代理头设置为与浏览器匹配的内容。如果这不起作用,启动Fiddler,偷看一下你的浏览器头文件,把它们复制到你的web请求中。
http://msdn.microsoft.com/en-us/library/system.net.webclient.headers.aspx 编辑我给的建议是一般性的。请遵守您正在下载的网站的政策,因为欺骗浏览器用户代理可能违反政策或默认情况下被认为是恶意的:
http://meta.wikimedia.org/wiki/User-Agent_policy:不要为您的bot复制浏览器的用户代理,因为带有浏览器用户代理的类bot行为将被认为是恶意的。