Client1向Server1发送请求并通过php curl获取响应。我只能访问Client1源代码,我需要记录所有发出并进入Client1的请求和响应,并将其保存为txt文件。
这样做的原因是用新服务器替换Server1。 Client1源代码非常复杂,因此我决定记录所有请求和响应,以便我可以对Server1进行反向工程。
使用Linux命令(例如使用--verbose和--trace-ascii)或使用WireShark对类似问题有一些答案,但我无法理解它们,我必须在我的代码中实现它而不是使用它命令。怎么做?
以下是卷曲功能:
private function fba8eb($ia61712c)
{
if (empty($this->v9e19674cb))
return false;
$this->query = $ia61712c;
preg_match('/action=(.*?)&/', $ia61712c, $i43da24755ffd);
$i87f2ea = $i43da24755ffd[1];
switch ($this->v488f1ce) {
case 'no-ssl':
case 'ssl':
fwrite($this->v9e19674cb, "POST " . $this->v7d5fd . " HTTP/1.0\r\n");
fwrite($this->v9e19674cb, "User-Agent: Smsmidlet-api/1.0 (" . $this->v488f1ce . "; " . $this->v9f1e7fea . "; " . $this->v9f1e7fea_version . "; call: $i87f2ea)\r\n");
fwrite($this->v9e19674cb, "Host: " . $this->v45213b . "\r\n");
fwrite($this->v9e19674cb, "Content-type: application/x-www-form-urlencoded; charset=utf-8\r\n");
fwrite($this->v9e19674cb, "Content-length: " . strlen($ia61712c) . "\r\n");
fwrite($this->v9e19674cb, "\r\n" . $ia61712c . "\r\n");
$i3bd625bb = '';
while (!feof($this->v9e19674cb)) {
@$i3bd625bb .= fgets($this->v9e19674cb, 2048);
}
$ie4a1f55ce = fclose($this->v9e19674cb);
list($ie3dffdbcc, $this->data) = explode("\r\n\r\n", $i3bd625bb, 2);
return $this->data;
break;
case 'curl':
case 'curl-ssl':
if (get_resource_type($this->v9e19674cb) == 'curl') {
@curl_setopt($this->v9e19674cb, CURLOPT_POST, 1);
@curl_setopt($this->v9e19674cb, CURLOPT_POSTFIELDS, $ia61712c);
@curl_setopt($this->v9e19674cb, CURLOPT_FOLLOWLOCATION, 1);
@curl_setopt($this->v9e19674cb, CURLOPT_HEADER, 0);
@curl_setopt($this->v9e19674cb, CURLOPT_RETURNTRANSFER, 1);
@curl_setopt($this->v9e19674cb, CURLOPT_SSL_VERIFYPEER, false);
@curl_setopt($this->v9e19674cb, CURLOPT_USERAGENT, 'Seridlet-api/1.0 (' . $this->v488f1ce . '; ' . $this->v9f1e7fea . '; ' . $this->v9f1e7fea_version . "; call: $i87f2ea )");
@$i3bd625bb = curl_exec($this->v9e19674cb);
$i3bd625bb = html_entity_decode($i3bd625bb);
curl_close($this->v9e19674cb);
return $this->data = $i3bd625bb;
}
break;
}
return false;
}
答案 0 :(得分:1)
也许只需制作日志功能并执行
即可获得所需内容private function fba8eb($ia61712c)
{
{
ob_start();
var_dump($_GET,$_POST,$_COOKIE,$this,$ia61712c);
$debugstr=ob_get_clean();
log_debug_info($debugstr);
unset($deugstr);
}
if (empty($this->v9e19674cb))
我想到的另一件事是CURLOPT_VERBOSE和CURLOPT_STDERR。
是已经使用CURLOPT_STDERR的代码吗?如果没有,你可以创建一个tmpfile(),将它提供给CURLOPT_STDERR,启用CURLOPT_VERBOSE,并在curl完成时记录它的内容(注意你需要将stream_get_meta_data($ tmpfile)['uri']提供给CURLOPT_STDERR ,不是文件句柄本身,而是stream_get_meta_data为您提供的路径。)