Skip to content

Instantly share code, notes, and snippets.

@devops-school
Last active February 15, 2021 22:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save devops-school/35f6c36cbb60663ac1fabe821b09b529 to your computer and use it in GitHub Desktop.
Save devops-school/35f6c36cbb60663ac1fabe821b09b529 to your computer and use it in GitHub Desktop.
PHP script to dump full HTTP request to file (method, HTTP headers and body).
$ grep -o 'account id: [^ ]\+' dumprequest.txt | sort | uniq -c
993 account id: 2919295
496 account id: 2956515
99 account id: 2956534
989 account id: 2984338
494 account id: 2984644
495 account id: 2984661
GET / HTTP/1.1
HTTP headers:
Host: www.devopsschool.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
Dnt: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
X-Newrelic-Synthetics: PwcbU19bDAADXE1AVQZUBFRTUwJPBAZSBE8MWg8IGVACUQxMAQMHVwFXUgcAWlwAEkhDVlQDUlRTUwYeAVFSVx1WDAMMFQxUAAcUVwNSBVJVVw9U
BFsJERxGAlIEAlFeXQEbAQdRVE8EVQ9RFVlXAQRICFVSWAIAUAYDVlAFGm4=
X-Abuse-Info: Request sent by a New Relic Synthetics Monitor (https://docs.newrelic.com/docs/synthetics/new-relic-synthetics/administra
tion/identify-synthetics-requests-your-app) - monitor id: c033f890-2e77-4773-ac37-14c91b40476f | account id: 2984338
Request body:
GET / HTTP/1.1
<?php
// https://gist.github.com/magnetikonline/650e30e485c0f91f2f40
class DumpHTTPRequestToFile {
public function execute($targetFile) {
$data = sprintf(
"%s %s %s\n\nHTTP headers:\n",
$_SERVER['REQUEST_METHOD'],
$_SERVER['REQUEST_URI'],
$_SERVER['SERVER_PROTOCOL']
);
foreach ($this->getHeaderList() as $name => $value) {
$data .= $name . ': ' . $value . "\n";
}
$data .= "\nRequest body:\n";
file_put_contents(
$targetFile,
$data . file_get_contents('php://input') . "\n*************************************************************\n", FILE_APPEND
);
echo("Done!\n\n");
}
private function getHeaderList() {
$headerList = [];
foreach ($_SERVER as $name => $value) {
if (preg_match('/^HTTP_/',$name)) {
// convert HTTP_HEADER_NAME to Header-Name
$name = strtr(substr($name,5),'_',' ');
$name = ucwords(strtolower($name));
$name = strtr($name,' ','-');
// add to list
$headerList[$name] = $value;
}
}
return $headerList;
}
}
(new DumpHTTPRequestToFile)->execute('./dumprequest.txt');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment