Google建议使用curl进行查询

时间:2014-09-16 16:58:20

标签: linux curl google-suggest

当我使用不同的浏览器进行请求时,它正在给我正确的xml响应。

http://suggestqueries.google.com/complete/search?output=toolbar&hl=en&q=test&gl=US

现在我使用curl命令请求上面的url,但它给了我 400 错误:

curl http://suggestqueries.google.com/complete/search?output=toolbar&hl=en&q=test&gl=US

此外,我已经通过了用户代理,但它也给了我同样的错误。

curl -A "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"  http://suggestqueries.google.com/complete/search?output=toolbar&hl=en&q=test&gl=US

请指导如果我错过了某些事情。

错误

400。这是一个错误。

您的客户发出了格式错误或非法的请求。这就是我们所知道的。

当我尝试下面的命令时:

curl -v -A "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0" -H "Accept: application/xml" -H "Content-Type: application/xml" https://suggestqueries.google.com/complete/search?hl=en&q=test&gl=US&format=rich

然后得到答复:

  • 即将connect()连接到suggestqueries.google.com端口443(#0)
  • 尝试74.125.200.138 ...已连接
  • 成功设置证书验证位置:
  • CAfile:无 CApath:/ etc / ssl / certs
  • SSLv3,TLS握手,客户端问候(1):
  • SSLv3,TLS握手,服务器问候(2):
  • SSLv3,TLS握手,CERT(11):
  • SSLv3,TLS握手,服务器密钥交换(12):
  • SSLv3,TLS握手,服务器完成(14):
  • SSLv3,TLS握手,客户端密钥交换(16):
  • SSLv3,TLS更改密码,客户端问候(1):
  • SSLv3,TLS握手,已完成(20):
  • SSLv3,TLS更改密码,客户端问候(1):
  • SSLv3,TLS握手,已完成(20):
  • 使用ECDHE-ECDSA-AES128-SHA
  • 进行SSL连接
  • 服务器证书:
  • 主题:C = US; ST =加利福尼亚; L =山景; O = Google Inc; CN = *。google.com
  • 开始日期:2014-08-27 11:47:20 GMT
  • 到期日期:2014-11-25 00:00:00 GMT
  • subjectAltName:suggestqueries.google.com已匹配
  • 发行人:C = US; O = Google Inc; CN = Google Internet Authority G2
  • SSL证书验证确定。

  • GET / complete / search?hl = en HTTP / 1.1

  • User-Agent:Mozilla / 5.0(X11; Ubuntu; Linux x86_64; rv:27.0)Gecko / 20100101 Firefox / 27.0
  • 主持人:suggestqueries.google.com
  • 接受:application / xml
  • Content-Type:application / xml

  • HTTP / 1.1 200确定

  • Content-Type:text / html;字符集= UTF-8
  • Set-Cookie:PREF = ID = 221163cf51f1fd63:FF = 0:TM = 1410889133:LM = 1410889133:S = 8a7TwxXZ4a-1bM3l;到期= 2016年9月15日星期四17:38:53 GMT;路径= /;域= .google.com
  • Set-Cookie:NID = 67 = UiY78HgmkOLxvy0S4_EfmD7vRX0gInDI6FhWWuj2cP9w25NfV6DdzVq7XooHlo5QNH1NteyjxWqyDVm0Dp9OD8Y7ABx-GEOy-wYEHDEciDmIxFhCFxixOXO1RJIn5UL_;到期=周三,2015年3月18日17:38:53 GMT;路径= /;域= .google.com;仅Http
  • P3P:CP ="这不是P3P政策!有关详细信息,请参阅http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657。"
  • 日期:2014年9月16日星期二17:38:53 GMT
  • 服务器:gws
  • 内容长度:0
  • X-XSS-Protection:1;模式=块
  • X-Frame-Options:SAMEORIGIN
  • 到期日:2014年9月16日星期二17:38:53 GMT
  • Cache-Control:private
  • 替代协议:443:quic,p = 0.002

  • 连接#0以托管suggestqueries.google.com完好无损

  • 关闭连接#0
  • SSLv3,TLS警报,客户问候(1):

  • 完成curl -v -A" Mozilla / 5.0(X11; Ubuntu; Linux x86_64; rv:27.0)Gecko / 20100101 Firefox / 27.0" -H"接受:application / xml" -H"内容类型:application / xml" https://suggestqueries.google.com/complete/search?hl=en

  • 完成q =测试
  • 完成gl = US

2 个答案:

答案 0 :(得分:0)

获取wireshark并检查包裹。它可能没用,因为我可以看到curl使用SSL。但是,您可以检查您的浏览器是否也使用SSL。如果没有,你可以得到完整的包,你可以比较卷曲输出并找出哪个字段导致错误(也检查谷歌的回复,它们可能会有所不同,不仅有400响应)。

答案 1 :(得分:0)

您必须将网址放在引号中,请尝试:

curl 'http://suggestqueries.google.com/complete/search?output=toolbar&hl=en&q=test&gl=US'

& 在大多数shell中都经过特殊处理。

正如您在发布的错误中看到的那样,网址会在第一个& 之前被删除:

Done curl -v -A "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) 
Gecko/20100101 Firefox/27.0" -H "Accept: application/xml" -H "Content-Type: 
application/xml" https://suggestqueries.google.com/complete/search?hl=en
                                                                       ^
                                                                       |