How to send and receive headers via PHP
I'd like to study how headers are sent and received.
I know about PHP's header
function and think I can just look at an actual request header (e.g. using Firebug) and make identical requests to a server (including spoofing the User-Agent). Is this开发者_如何学运维 correct?
The other problem is how do I get the header responses back? I want to analyze the response.
Thanks.
EDIT:
@Tatu, here's the code I ran:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.google.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML, like Gecko) Ubuntu/10.10 Chrome/8.1.0.0 Safari/540.0');
$result = curl_exec($ch);
curl_close($ch);
header('Content-type: text/plain');
echo($result);
You might want to take a look at cURL which will allow you to make requests and set and inspect headers. PHP's header
only sets headers for the current page, you cannot use that to spoof your user agent – these are headers set by the server and as such have no such significance.
The basic structure of a cURL request with custom headers might be something like this:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Your user agent");
$result = curl_exec($ch);
curl_close($ch);
The beginning of $result
will now contain the headers received from the server.
If you want to send headers yourself, without using cURL, check out sockets in PHP.
http://php.net/sockets
精彩评论