Разница между cURL и веб-браузером?

Я пытаюсь получить веб-страницу из следующего URL-адреса:

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

Он работает, когда я вставляю его в браузер, но когда я запускаю его через cURL, я получаю страницу со следующей ошибкой: «Один или несколько параметров строки запроса запрошенного 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; 

Любые мысли о том, почему такой запрос будет работать в браузере, а не cURL?

Solutions Collecting From Web of "Разница между cURL и веб-браузером?"

Ваш браузер отправляет файлы cookie, которых нет в CURL. Проверьте файлы cookie, которые вы отправляете на сайт, используя инструменты браузера или Fidler – вам нужно будет передать то же самое.

Проблема заключалась в использовании файлов cookie. Для ответа на этот конкретный сайт необходимо было установить cookie ASP.NET_SessionId. Я добавил следующее к моему запросу cURL:

 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'); 

Я не знаю, будет ли какой-либо идентификатор сеанса работать, но он попробовал пару случайных, и все они работали.