这是从C / C ++应用程序发送的HTTP请求,现在我想过滤以获取HTTP / HTTPS以打印HTTP / HTTPS信息。我该怎么做?
<?php
$logz = '/server/order.php?&IP=127.0.0.1?&hWid={e29ac6c0-7037-11de-816d-******************}&pcName=USER-PC&processName=C:Program FilesInternet Exploreriexplore.exe&buffer=POST /server/order.php HTTP/1.1
Content-Type: app1ication/x-www-form-urlencoded
Host: localhost
Content-Length: 272
Cache-Control: no-cache
/server/order.php?&IP=127.0.0.1?&hWid={e29ac6c0-7037-11de-816d-******************}&pcName=USER-PC&processName=C:Program FilesInternet Exploreriexplore.exe&buffer=https://localhost/test/logon.php username=kazim&password=kazim&login_button.x=0&login_button.y=0XÀž»}ÞÓŸýÁÊð#(˜Ð';
preg_match('/^(http|https):\\/\\/[a-z0-9_]+([\\-\\.]{1}[a-z_0-9]+)*\\.[_a-z]{2,5}'.'((:[0-9]{1,5})?\\/.*)?$/i', $logz,$match);
echo $match[1];
?>
修改
我希望它只发布 https://localhost/test/logon.php 那就是什么
答案 0 :(得分:0)
我用过这个:
ruby {
code => "event.set('[is_tags_empty]', 'true') if event.get('[tags]').length == 0"
}
if [is_tags_empty] {
mutate {
remove_field => ["tags","is_tags_empty"]
}
}
$ result只是为了从preg_match获取返回码。
在您的示例数据中,您在页面后面有一个空格:$result = preg_match('/(http|https):\/\/[a-z0-9]+[a-z0-9_\/]*/',$logz,$match);
。有了它,这很容易,只是不要在.../logon.php username=...
中包含空格。在其中添加[a-z0-9_\/]*
将使其与模式中的所有\/
匹配,无论它们位于何处。
在你的模式中,你将每个加倍。但这不是必需的,因为/
意味着不在\/
之后处理/
,就像preg_match期望的正则表达式分隔符一样。一个\
就足够了。