2011-12-21 33 views
0

如何使用php curl正確地獲得curl響應。我試圖改變一些請求頭和用戶代理配置curl以獲得www.google.com

GET/HTTP/1.1 
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7 
Host: www.google.com 
Accept: */* 
Accept-Encoding: gzip,deflate,sdch 

,但它不工作我得到302錯誤

HTTP/1.1 302 Found 
Location: http://www.google.co.in/ 
Cache-Control: private 
Content-Type: text/html; charset=UTF-8 
Set-Cookie: PREF=ID=30a99703e541807e:FF=0:TM=1324467004:LM=1324467004:S=0VlXyYEJtxKQ_Pqk; expires=Fri, 20-Dec-2013 11:30:04 GMT; path=/; domain=.google.com 
Date: Wed, 21 Dec 2011 11:30:04 GMT 
Server: gws 
Content-Length: 221 
X-XSS-Protection: 1; mode=block 
X-Frame-Options: SAMEORIGIN 

HTML輸出,我得到的是

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> 
<TITLE>302 Moved</TITLE></HEAD><BODY> 
<H1>302 Moved</H1> 
The document has moved 
<A HREF="http://www.google.co.in/">here</A>. 
</BODY></HTML> 

如何得到和使用php curl發佈數據,就好像我們正在使用瀏覽器一樣。

這裏是curl_setopt

curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_USERAGENT, " Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate,sdch'); 
+0

302不是錯誤,代碼優於400是錯誤! – RageZ 2011-12-21 11:35:34

+0

你的問題是什麼? Google的回覆將您重定向到他們的印度網站 - 這不是您想要的嗎? – 2011-12-21 11:36:02

+0

這麼蹩腳的我.. – 2011-12-21 11:38:12

回答

1
HTTP/1.1 302 Found 
Location: http://www.google.co.in/ 

告訴你去http://www.google.co.in/的內容我的PHP代碼,所以你要做的另一卷曲序列存在。

+1

-1跟着位置可以讓你在一次捲曲操作中做到這一點 – ghostJago 2011-12-21 12:30:48

5

設置捲曲CURLOPT_FOLLOWLOCATION選項true

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

威爾將指示捲曲遵循任何「位置:」服務器發送頭。更多信息請見documentation

+0

+1不知道那個,很有幫助。 – 2011-12-21 13:38:46

相關問題