如何在HEADERS中使用Curl?

Bla*_*ank 4 php curl

我试图做这样的事情,但是没有用!

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://google.com/"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('GET /search?q=kk HTTP/1.1
Host: www.google.de
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Proxy-Connection: Close
Cookie: PREF=ID=2bb051bfbf00e95b:U=c0bb6046a0ce0334:
Cache-Control: max-age=0
Connection: Close
'));
$response = curl_exec($ch); 
curl_close($ch);   



    echo $response;
Run Code Online (Sandbox Code Playgroud)

另外,是否可以仅设置标题就发出整个请求,而无需设置URL?我的意思是没有这个?

curl_setopt($ch, CURLOPT_URL, "http://google.com/"); 
Run Code Online (Sandbox Code Playgroud)

谢谢!

Mik*_*ark 5

我知道了。

1)将标题更改Host: www.google.deHost: www.google.com

动机:Host标头中指定的主机应与URL的主机完全匹配。

2)使用“ www.google.com”代替“ google.com”

动机:向google.com发出的搜索请求不会检索搜索结果。系统会提示您访问www.google.com。

3)将完整URL设置为CURLOPT_URL,而不仅仅是主机名。例如,将CURLOPT_URL更改为curl_setopt($ch, CURLOPT_URL, "http://www.google.com/search?q=kk");

动机:正确使用cURL API。

4)GET /search?q=kk HTTP/1.1从CURLOPT_HTTPHEADER中删除-放错了位置。

动机:正确使用cURL API。

5)响应将被gzip或deflate压缩。要停止此操作,请删除Accept-Encoding: gzip, deflate请求标头。

动机:如果您告诉Google您有能力接收压缩的回复,那么他们会向您发送回复。解压缩HTTP响应是您可能不想执行的额外步骤。如果响应采用未压缩的文本形式,则可能更容易处理。