如果我使用LWP发送请求,则会有一个便捷功能as_string
,它告诉我刚刚发送了什么请求。非常方便,事实上我没有任何问题。除了我刚注意到它肯定在骗我。例如,这段代码:
use v5.14.2;
use LWP;
my $response = LWP::UserAgent->new->get('http://user:pswd@example.com/');
say $response->request->as_string;
提供此输出
GET http://user:pswd@example.com/
User-Agent: libwww-perl/6.13
但肯定没有像这样发送网址!库必须已解析出用户名和密码,并添加了相应的标头,并添加了主机标头,依此类推。有没有一种简单的方法可以找出实际发送的内容?
答案 0 :(得分:1)
有LWP::ConsoleLogger::Everywhere 1 ,您可以加载它以获取请求和响应的所有详细信息。该请求将在通过网络发送之前进行,并在响应时发出响应。
您需要做的就是在代码中的任何位置use LWP::ConsoleLogger::Everywhere
。如果您想要更多控制权,该分发中的主模块LWP::ConsoleLogger将允许您轻松调整设置。
但是,这不是通过网络传输的真实数据。如果你想知道它收到了什么,你需要用tcpdump
之类的东西来监控连接,然后看看它(这是非常高级的网络东西),或者可能将端点更改为你自己的IP地址或者只是127.0.0.1
,然后使用netcat监听特定端口。
$ nc -l 8080
如果您将请求发送到该端口,您将在netcat中看到它。
1)免责声明:我是该模块的撰稿人