用套接字隐藏GET变量

用户名

我有一个脚本,在该脚本中我将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!

如您所见,它在顶部显示了完整的页面标题,我只希望页面输出。我如何抑制服务器标头的输出?并且只保留页面数据。

merlin2011

如果您只是尝试发出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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章