当我使用不同的浏览器进行请求时,它正在给我正确的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
然后得到答复:
SSL证书验证确定。
GET / complete / search?hl = en HTTP / 1.1
Content-Type:application / xml
HTTP / 1.1 200确定
替代协议:443:quic,p = 0.002
连接#0以托管suggestqueries.google.com完好无损
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
答案 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
^
|