R1: Je suppose que, si vous définissez tous les en-têtes corrects, que, oui, une demande fondée curl-peut imiter un navigateur basé sur un: après tout, à la fois envoyer un HTTP demande, qui est juste quelques lignes de texte suivant une convention spécifique (à savoir la RFC HTTP)
R2: la meilleure façon de répondre à cette question est de jeter un oeil à ce qui envoie votre navigateur ; avec Firefox, par exemple, vous pouvez utiliser Firebug ou LiveHTTPHeaders pour l'obtenir.
Par exemple, pour obtenir cette page, Firefox envoyé ces en-têtes de demande:
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: http://stackoverflow.com/questions/1926876/can-a-curl-based-http-request-imitate-a-browser-based-request-completely/1926889
Cookie: .......
Cache-Control: max-age=0
(I Just enlevé quelques informations - mais vous voyez l'idée ;-))
En utilisant curl, vous pouvez travailler avec curl_setopt
pour définir les en-têtes HTTP; ici, vous auriez probablement utiliser une combinaison de CURLOPT_HTTPHEADER
, CURLOPT_COOKIE
, CURLOPT_USERAGENT
...
Oui, cURL peut 100% imiter une demande de navigateur. Pour voir quelles options définir, utilisez quelque chose comme wireshark pour voir comment votre navigateur communique via HTTP. –