2012-05-25 135 views
1

我正在嘗試從以下網址的網頁:cURL和網絡瀏覽器之間的區別?

http://www.medicare.gov/find-a-doctor/provider-results.aspx?searchtype=OHP&specgrpids=922&loc=43615&pref=No&gender=Unknown&dist=25&lat=41.65603&lng=-83.66676

它的工作原理,當我將其粘貼到瀏覽器中,但是當我通過捲曲運行它,我收到以下錯誤頁面:「請求的url的一個或多個查詢字符串參數無效或具有意外的值,請糾正並重試。」

如果我提供不同的userAgent或referrer,似乎沒有什麼區別。有一個重定向,所以我使用CURLOPT_FOLLOWLOCATION。

這裏是我的代碼:

$ch = curl_init($page); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0'); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 

$html = curl_exec($ch); 
curl_close($ch); 
echo $html; 

爲什麼這樣的請求,將在瀏覽器,而不是與捲曲工作有什麼想法?

+0

我得到同樣的錯誤,你用cURL得到的 –

+0

而不是跟隨位置,陷阱的重定向,看看你發送的地方。捲曲和瀏覽器版本相同嗎? –

+0

該鏈接出現錯誤「請求的url的一個或多個查詢字符串參數無效或具有意外值,請更正並重試。」在我的瀏覽器中,可能需要添加一個cookie jar來捲曲 –

回答

2

問題出在cookie上。這個特定的網站需要設置一個ASP.NET_SessionId cookie來響應。我增加了以下我捲曲的要求:

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIE, 'ASP.NET_SessionId=ho1pqwa0nb3ys3441alenm45; path=/; domain=www.medicare.gov'); 

我不知道是否有任何會話ID的工作,但它嘗試了隨機的,他們所有的工作。

2

您的瀏覽器正在發送cURL不是的cookie。使用瀏覽器工具或Fidler檢查您發送到網站的Cookie - 您需要通過相同的步驟。

+0

Curl提供許多功能,例如代理支持,用戶身份驗證,FTP上傳,HTTP發佈,SSL連接,** cookies **,文件傳輸恢復,Metalink以及各種其他功能。 https://en.wikipedia.org/wiki/CURL#Examples_of_cURL_use_from_command_line – Premraj

相關問題