Я пытаюсь создать службу Windows. Цель сервиса — подобрать URL-адреса из базы данных и проверить их рейтинг страницы в Google. Цель состоит в том, чтобы поймать любого, кто подделывает рейтинг своей страницы. Я нашел код по адресу http://www.codeproject.com/KB/aspnet/Google_Pagerank.aspx и использовал его.
Теперь вот код
public static int GetPageRank()
{
string file = "http://toolbarqueries.google.com/search?q=info:codeproject.com";
try
{
//Request PR from Google
WebRequest request = WebRequest.Create(file);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string data = reader.ReadToEnd();
reader.Close();
response.Close();
//Parse PR from string
int pageRank = -1;
if (data.IndexOf(':') != -1)
{
data = data.Substring(data.LastIndexOf(':') + 1);
}
int.TryParse(data, out pageRank);
return pageRank;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return -1;
}
}
Теперь то, что происходит, это то, что когда этот метод вызывается после некоторых попыток, таких как 100 попыток, я начинаю получать следующее исключение. «Удаленный сервер вернул ошибку: (503) Сервер недоступен». Я провел некоторое исследование, и я также видел связанный с этим вопрос о переполнении стека. По-видимому, Google перестает обслуживать запросы, если многие из них исходят от одного и того же IP-адреса. Есть ли обходные пути, которые позволят мне проверить несколько тысяч страниц, скажем, за два или три часа.