Может ли HTTP-запрос на основе cURL полностью имитировать браузерный запрос? - PullRequest
4 голосов
/ 18 декабря 2009

Это вопрос из двух частей.

Q1: Может ли запрос на основе cURL на 100% имитировать запрос на основе браузера?

Q2: Если да, какие все параметры следует установить. Если нет, то что еще делает браузер, который не может быть имитирован cURL?

У меня есть веб-сайт, и я вижу тысячи запросов с одного IP-адреса за очень короткое время. Эти запросы собирают все мои данные. При просмотре журнала для идентификации используемого агента он выглядит как запрос из браузера. Так что было любопытно узнать, бот это, а не пользователь.

Заранее спасибо

Ответы [ 2 ]

5 голосов
/ 18 декабря 2009

На этой странице есть все ответы на ваши вопросы . В основном вы можете подражать вещам.

3 голосов
/ 18 декабря 2009

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, ...

...