我的谷歌控制台中有 3 个服务器密钥,用于不同的服务器。
一开始,只有一个密钥似乎有效,那就是我的本地IP地址。
在暂存服务器上使用 cURL 进行调试后,我发现响应为:
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "https://code.google.com/apis/console"
}
],
"code": 403,
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
}
这对我来说没有意义,因为提供了密钥,并且密钥肯定是使用适当的 IP 地址设置的。
因此,我开始了调试过程,对于暂存服务器,我尝试了一些cURL IP发现工具。
突然 icanhazip.com 给了我服务器的IPv6地址,将其添加到允许的IP列表后,它突然起作用了。如果你问我,一些奇怪的行为。
所以我仍然需要修复我的生产服务器,我发现这个没有IPv6地址。同一个工具为我返回 IPv4 地址,在我的控制面板中,我也没有设置 IPv6 地址。
由于谷歌没有一个很大的支持平台,我希望这里有人遇到了同样的问题。
我正在尝试使用谷歌的自定义搜索API。
显然我在服务器上以错误的方式使用 cURL。它现在就像一个魅力!
(必须在URL周围添加撇号)
如果其他一切都失败了,你可以抓取谷歌搜索页面并解析结果吗?像这样的东西(PHP):
$ch = curl_init ('');
$query = 'Pepijn';
curl_setopt ($ch, CURLOPT_URL, 'http://www.google.com/search?hl=en&tbo=d&site=&source=hp&q='.$query);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
您需要对所有返回的 html 和所有内容进行"排序",但结果基本上在 #search ol 的列表项中。