2012-05-25 5 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 неверны или имеют неожиданное значение, пожалуйста, исправьте и повторите попытку».

Это не имеет значения, если я предоставляю другой пользователь или референт. Существует перенаправление, поэтому я использую 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?

+0

Я получаю такую ​​же ошибку, что вы получаете с помощью cURL –

+0

Вместо того, чтобы следовать за местоположением, перетащите перенаправление и посмотрите, куда вы отправляетесь. Это то же самое между версиями curl и браузера? –

+0

Эта ссылка содержит ошибку «Один или несколько параметров строки запроса запрошенного URL неверны или имеют неожиданное значение, пожалуйста, исправьте и повторите попытку». в моем браузере, возможно, потребуется добавить кук-файл для завивки –

ответ

2

Проблема была с печеньем. Для ответа на этот конкретный сайт необходимо было установить 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'); 

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

2

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

+0

Curl предлагает множество функций, таких как поддержка прокси-сервера, аутентификация пользователя, загрузка FTP, HTTP-сообщение, SSL-соединения, ** файлы cookie **, возобновление передачи файлов, Metalink, а также различные другие функции. https://en.wikipedia.org/wiki/CURL#Examples_of_cURL_use_from_command_line – Premraj

Смежные вопросы