R1: Полагаю, если вы установите все правильные заголовки, то да, запрос на основе завитков может имитировать браузерный: в конце концов, оба отправляют HTTP-запрос, который всего пара строк текста в соответствии с определенным соглашением (а именно HTTP RFC)
R2: Лучший способ ответить на этот вопрос - посмотреть, что отправляет ваш браузер; например, в Firefox вы можете использовать Firebug или LiveHTTPHeaders , чтобы получить это.
Например, чтобы получить эту страницу, Firefox отправил заголовки запроса:
GET /questions/1926876/can-a-curl-based-http-request-imitate-a-browser-based-request-completely HTTP/1.1
Host: stackoverflow.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2b4) Gecko/20091124 Firefox/3.6b4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: /1077095/mozhet-li-http-zapros-na-osnove-curl-polnosty-imitirovat-brauzernyi-zapros
Cookie: .......
Cache-Control: max-age=0
(Я только что удалил пару сведений - но вы поняли идею ;-))
Используя curl, вы можете работать с curl_setopt
для установки заголовков HTTP; здесь вам, вероятно, придется использовать комбинацию CURLOPT_HTTPHEADER
, CURLOPT_COOKIE
, CURLOPT_USERAGENT
, ...