我有一个脚本,在该脚本中我将GET请求发送到页面。我试图弄清楚如何抑制输出,这是代码本身:
use IO::Socket;
my $domain = 'yahoo.com';
$socket=IO::Socket::INET->new(
Proto => 'tcp',
PeerAddr => $domain,
PeerPort => '80',
) or return $!;
print $socket "GET /index.php HTTP/1.0\r\n";
print $socket "Host: ", $domain, "\r\n";
print $socket "Connection: close", "\r\n";
print $socket "User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)", "\r\n";
print $socket "Accept: text/html, application/xhtml+xml, */*", "\r\n\r\n";
print while <$socket>;
这是输出。
HTTP/1.0 200 OK
Server: nginx/1.4.7
Content-Type: text/html
X-Powered-By: PHP/5.4.27-1~dotdeb.0
Set-Cookie: PHPSESSID=k2bviiurukqdju1l26j4fat0q0; path=/
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Date: Sun, 18 May 2014 19:53:20 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
X-Page-Speed: 119_1_jt
X-XSS-Protection: 1; mode=block
Alternate-Protocol: 80:quic
Apache works!
如您所见,它在顶部显示了完整的页面标题,我只希望页面输出。我如何抑制服务器标头的输出?并且只保留页面数据。
如果您只是尝试发出Web请求,那么使用http
库几乎总是更好的选择。
但是,对于这种特殊情况,以下内容也已足够。它只在第一行之后仅打印all \r\n
,因为这是用于将标头与http
协议中的内容分开的定界符。
# The following line has been replaced with the loop
# print while <$socket>;
$seennl = 0;
while (<$socket>) {
if ($seennl) {
print;
}
elsif ($_ eq "\r\n"){
$seennl=1;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句