Php 基于cURL的HTTP请求能否完全模仿基于浏览器的请求?

Php 基于cURL的HTTP请求能否完全模仿基于浏览器的请求?,php,http,curl,screen-scraping,libcurl,Php,Http,Curl,Screen Scraping,Libcurl,这是一个由两部分组成的问题。 Q1:基于cURL的请求能否100%模仿基于浏览器的请求 问题2:如果是,应设置哪些选项。如果没有,浏览器还有什么不能被cURL模仿的功能 我有一个网站,我看到成千上万的请求在很短的时间内从一个单一的IP。这些请求获取我的所有数据。当查看日志以确定使用的代理时,它看起来像是来自浏览器的请求。所以我很想知道它是不是机器人而不是用户 提前感谢R1:我想,如果您设置了所有正确的标题,那么基于curl的请求可以模仿基于浏览器的请求:毕竟,两者都发送一个HTTP请求,这只是遵

这是一个由两部分组成的问题。

Q1:基于cURL的请求能否100%模仿基于浏览器的请求

问题2:如果是,应设置哪些选项。如果没有,浏览器还有什么不能被cURL模仿的功能

我有一个网站,我看到成千上万的请求在很短的时间内从一个单一的IP。这些请求获取我的所有数据。当查看日志以确定使用的代理时,它看起来像是来自浏览器的请求。所以我很想知道它是不是机器人而不是用户


提前感谢

R1:我想,如果您设置了所有正确的标题,那么基于curl的请求可以模仿基于浏览器的请求:毕竟,两者都发送一个HTTP请求,这只是遵循特定约定的几行文本(即HTTP RFC)


R2:回答这个问题的最好方法是看看你的浏览器正在发送什么;例如,在Firefox中,您可以使用或来实现这一点

例如,为了获取此页面,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: http://stackoverflow.com/questions/1926876/can-a-curl-based-http-request-imitate-a-browser-based-request-completely/1926889
Cookie: .......
Cache-Control: max-age=0
(我刚刚删除了一些信息——但你明白了;-))


使用curl,您可以使用设置HTTP头;在这里,您可能必须结合使用
CURLOPT\u HTTPHEADER
CURLOPT\u COOKIE
CURLOPT\u USERAGENT
,…

。你可以模仿大部分东西。

是的,cURL可以100%模仿浏览器请求。要查看要设置的选项,请使用wireshark之类的工具查看浏览器如何通过HTTP进行通信。太好了,我遇到了一个问题,发现缺少一个参数“referer”,伙计,你救了我的命,如果我是同性恋,我就吸你的鸡巴^^