繁体   English   中英

在ttp://toolbarqueries.google.com/search?q = info :(域名)上获取“远程服务器返回错误:(503)服务器不可用”

[英]Getting “The remote server returned an error: (503) Server Unavailable” on ttp://toolbarqueries.google.com/search?q=info:(domainName)

我正在尝试创建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)服务器不可用”。 我做了一些研究,也看到了有关堆栈溢出的一个相关问题。 显然,如果许多请求来自同一ip,则google会停止提供请求。 是否有任何变通办法,使我可以在两个小时或三个小时内检查几千个页面排名。

是否有任何变通办法,使我可以在两个小时或三个小时内检查几千个页面排名[?]

不。 您只是在请求太多数据。 可能会有JSON或XML API来获取批处理响应,但是我不知道来自Google的任何信息。

最后,我们所做的是从代理提供者那里获取代理并使用它们。 必须使用信号量,以便为所有线程分配一个新的代理,同时确保代理每分钟不被使用超过3次,并且代理以循环顺序的方式旋转。 没有其他解决方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM