大家好,我刚做了一个用GOOGLE搜索引擎查资料的小软件,方便我找些论文。结果查的频率肯太快,被GOOGLE封了,出现了“您的查询看起来类似于来自计算机软件的自动请求。为了保护我们的用户,请原谅我们现在暂时不能处理您的请求。”。
请大家告诉我有什么办法解决呢?如果能编程解决是最好了,实在不行,能不能花钱去GOOGLE买通行证之类的?
希望大家帮帮忙,告诉我解决的办法,我这几天加油赚分,解决了全部身家献上!!再次感谢!!

解决方案 »

  1.   

    感谢大家,但我那个程序就想速度快,而且多线程同时查了好多个关键字,查询了许多页面,利用了许多的GOOGLE提供的页面查询服务。大伙能不能针对这种情况,提供一下解决方案呢?如果有朋友知道的话,能花钱到GOOGLE去买这个服务(可能否?有朋友试过吗?),也可以接受的,谢谢大家!!
      

  2.   

    请问一下,我用了代理就能避免被封吗?我自己本身的IP也是从大学里面出来的,也被封了。难道代理查询频率快就没有问题了?这是我的一点疑问:GOOGLE用了什么机制判断你用的是机器查询,如果我换了代理,GOOGLE就没有办法了吗?会不会把代理也封掉?谢谢楼上各位的帮忙。
      

  3.   

     换 代理 IP
     和数据采集原理 差不多的。
    http://www.haozs.net/proxyip//// <summary>
            ///  下载文件
            /// </summary>
            /// <param name="PageUrl">网址</param>
            /// <param name="filename">保存文件路径</param>
            public void DownFile(string PageUrl, string filename)
            {
                if (!Directory.Exists(filename))
                {
                    Directory.CreateDirectory(filename);
                }
                string  path = PageUrl.Substring(PageUrl.LastIndexOf("/") + 1);
                string dirname = filename + "\\" + path;
                if (File.Exists(dirname))
                {
                    return;
                }
                else
                {
                    try
                    {                    
                        WebClient wc = new WebClient();
                        WebProxy wp = new WebProxy(al[proxy].ToString(), true);
                        wc.Proxy = wp;
                        wc.DownloadFile(PageUrl, dirname);
                    }
                    catch (WebException ex)
                    {                   
                        if (ex.Status == WebExceptionStatus.ProtocolError)
                        {
                            //文件未找到--跳出 
                            //MessageBox.Show(ex.ToString());
                            return;
                        }
                        else
                        {
                            //换代理 IP
                            //MessageBox.Show(ex.ToString());
                            proxy++;
                            if (proxy >= al.Count)
                            {
                                al = ReadIPproxy("e:\\test.txt");//初始化代理   IP
                            }
                            DownFile(PageUrl, filename);
                        }
                    }
                }        }==========
    /// <summary>
            ///  请求失败的时候,反复操作
            /// </summary>
            /// <param name="PageUrl"></param>
            /// <returns></returns>
            public string ToServer(string PageUrl)
            {
                string responseFromServer = "";
              
                try
                {                
                    while (1 == 1)
                    {
                        WebRequest request = WebRequest.Create(PageUrl);
                        WebProxy wp = new WebProxy(al[proxy].ToString(), true);
                        request.Proxy = wp;
                        request.Timeout = 1000 * 45;                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                        Stream dataStream = response.GetResponseStream();
                        StreamReader reader=null;
                     
                            reader = new StreamReader(dataStream, System.Text.Encoding.Default);
                            responseFromServer = reader.ReadToEnd();
                        
                        reader.Close();
                        dataStream.Close();
                        response.Close();
                        if (responseFromServer.Contains("refresh") || responseFromServer == "")
                        {
                            proxy++;
                            if (proxy >= al.Count)
                            {
                                al = ReadIPproxy("e:\\test.txt");//初始化代理   IP
                            }
                            //ToServer(PageUrl);
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                catch (WebException ex)
                {                
                    if (ex.Status == WebExceptionStatus.ProtocolError)
                    {                   
                        responseFromServer = "";
                    }
                    else
                    {
                        proxy++;
                        if (proxy >= al.Count)
                        {
                            al = ReadIPproxy("e:\\test.txt");//初始化代理   IP
                        }
                        ToServer(PageUrl);
                    }
                }           
                return responseFromServer;
            }
      

  4.   

    哇,谢谢啦,live_7sky !我先按你这个思路做,同时还是提出一个问题
    ,想多了解一下。我这样不断换代理,不会对他们有什么伤害吧?会不会弄的代理都访问不了GOOGLE呢?因为我这个玩意的查询量确实有点离谱····希望懂的人告诉下我,个人不是太理解!我在今后的一个月里面,都会不断发赚分帖,然后把分都投到这里来,希望大家能继续指点,非常感谢。PS:CSDN的热心人确实很多,我有许多困惑都在这里得到解决了,再次感谢大家!
      

  5.   

    奇怪了,我用个代理迅速查询了GOOGLE 100多次,它竟然没有封···我原来写那个查了50次就被封住了···这是为什么呢,GOOGLE的频率限制是多少呀~~
      

  6.   

    对你的什么自制的google搜索有兴趣,什么东东?
      

  7.   

    请大家帮忙呀~~~我发现一个问题,GOOGLE好像盯上我了,不知道它是怎么知道的,举个例子:我打开一个浏览器进程,在其中输入搜索什么的都正常,然后用我那个程序一跑(去GOOGLE查询),结果程序跑的太频繁,被封了(无可奈何)。而后我又回到那个已经打开的浏览器页面,输入查询关键字,果然报错“您的查询看起来类似于来自计算机软件的自动请求。为了保护我们的用户,请原谅我们现在暂时不能处理您的请求。”。 然后弹出验证码让我输入,我输入之后,该浏览器可以正常手动访问GOOGLE了。但是,我新开一个浏览器,将旧的浏览器的查询URL直接COPY到地址栏,该页面又弹出要我输入验证码!所以我想请问一下,GOOGLE是用什么手段得知,我又新打开了一个浏览器呢?它明显是盯上我了,除非我用输入了验证码的那个浏览器,否则我就别想查询它。PS:今天1点多的时候,经过两个个小时的休整,我的程序又复活了,成功查询了50多次,随后再次挂掉···我十分想知道为什么会这样,试过了改USER-AGENT,COOKIE,还试过了热心live_7sky 推荐的代理(顺带把代理也挂了···),希望大伙继续指教!谢了
      

  8.   

    google 是做 搜索的 ,你也是 做搜索的,
     你们相互竞争,对他来说 当然有影响了,抢他饭碗但是对于 那些网站来说 ,利:提高了访问量     弊: 增加了服务器的压力。
      

  9.   

    你可以循环用代理啊,比如你有10个代理IP。。
    每个IP做20次搜索,然后换另一个IP继续做20次搜索,
    这样下来的话每个IP都有一定的间隔期了。。
      

  10.   

    对你的什么自制的google搜索有兴趣,什么东东?
      

  11.   

    google好像提供有api的,Google Web API当 然,除了简单的嵌入整合方式,手痒的程序开发者也可以透过Google所提供的API来将它的服务整合到自己的应用程序中,Google针对搜寻机制提供 的API十分完整,您可以透过Web Services的业界标准界面让整个操作使用更加流畅,这便需要花点心思写点程序才有办法达到的,可以依照您的需求进行客制化,整合程度更高。这 个函式库里包括了.NET(C#), VB及Java的范例程序、WSDL描述文件、API参考手册,及Java Doc文件。由于目前的Google Web API是透过Web Services的架构,所以只要依照WSDL描述档的定义,以SOAP的方式呼叫取得搜寻结果即可,所以只要程序语言本身可以撰写出SOAP Client就可以使用。若您是采用Java为主要开发语言,Google Web API提供已经包装好的SOAP Client链接库,只花几行程序即可撰写完成,相当容易。为了让资源能有效分享给普罗大众,Google针对每个申请者有使用上的限 制。针对每个使用授权每日仅能呼叫1000次,而且每次的查询结果仅回传前1000笔,回传则以最多10笔为一个单位,而搜寻内容则不包括图片、新闻等其 他内容,仅限于网页数据,如此设计均是为及提升执行效能所做的考虑。当然,这样的函式库是提供研究性质之使用,而未被授权于任何与商业有关之应用。在使用之前您最好还是详读一下授权合约内容。
      

  12.   

    http://code.google.com/
    这里面是google的官方开发页面
    你写程序的时候尽量采用官方的,他不会连自己的方式都给封了吧
      

  13.   

    谢谢大家~这个GOOGLE 的API 我听过,好像现在没申请的了吧?而且每日一千次有点小气呀,呵呵。暂时先用代理的顶住当···
    希望能继续得到大伙的意见~
      

  14.   

    结贴啦~~GOOGLE赢了,谢谢大家~~~