2010-11-07 128 views
-1

在向Google查询内容匹配项时,Google阻止我的IP遇到问题。我拥有300个私人IP地址,并且可以通过桌面应用(具有相同IP地址)来执行类似功能,从而轻松连接Google。但是,当我使用CURL在服务器上启动它时,我的IP会暂时被阻止 - 您的计算机可能会发送自动查询,请在30秒内重试。所以必须有足迹在某处。使用PHP Curl +代理查询Google时遇到问题

任何如何,这里是我的代码:

function file_get_contents_curl($url, $proxy = true) { 

    global $proxies; 
    App::import('Vendor', 'proxies'); 

    $proxies = $this->shuffle_assoc($proxies); 
    $proxy_ip = $proxies[array_rand($proxies, 1)];//proxy IP here 
    $proxy = $proxy_ip.':60099'; 

    $loginpassw = 'myusername:mypassword'; //proxy login and password here 

    $ch = curl_init(); 

    if($proxy) { 

     curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 
     //curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port); 
     curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP'); 
     curl_setopt($ch, CURLOPT_PROXY, $proxy); 
     curl_setopt($ch, CURLOPT_PROXYUSERPWD, $loginpassw); 
     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)'); 
    } 

    curl_setopt($ch, CURLOPT_HEADER, 1); 
    @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    //Set curl to return the data instead of printing it to the browser. 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    $data = curl_exec($ch); 
    //echo $data; 
    curl_close($ch); 
    return $data; 
    } 

我验证过的IP被设置和我连接直通代理。

任何人有任何想法?

回答

-1

Http-proxies不保证您的隐私。你可以尝试使用袜子。

但是你最好用google-api来代替。

0

可以使用HTTP代理以及SOCKS代理,在搜索谷歌搜索结果时没有区别。
有多种可能的原因为什么你被发现。

  • 你的代理是质量差的或共享(也许不知情的情况下)
  • 你的代理是只有一个或两个子网/过连续
  • 您查询谷歌太快或太频繁

您不应该每隔一小时查询一次IP超过20次的IP,这只是一个粗略的值,并且不会受到搜索引擎的惩罚。
所以你应该根据你的代理计数来实现延迟。

但是如果选项1)或2)是真的,即使这样做没有帮助,您将需要另一个IP解决方案。

查看Google等级刮板(http://google-rank-checker.squabbel.com/),它是一个免费的PHP项目,用于搜索Google,并包含可用于自己的代码的正确延迟例程。
此外,缓存功能可能证明对您有用,因为您不想查询超过需要的Google。

而不要忘记:
如果您发现,然后让您的脚本停止自动!
你只是通过继续发生麻烦,检测意味着你做错了什么。