perl socket 模拟http请求
通过perl的socket模拟http请求, 包括字符编码转换,格式化时间,文件写入操作
#!/usr/bin/perl
#
use Socket;
use POSIX qw(strftime);
use Encode;
use File::Basename;
#
#
#
$dir = dirname( __FILE__)."/";
#print("start to maintain...\n");
# ntplgz.lzyy.cn 172.17.30.16
$defualt_host = '172.17.30.16';
$default_host = '192.168.10.64';
$addr = $ARGV[0]||$default_host;
$port = $ARGV[1]||'80';
$dest = sockaddr_in($port, inet_aton($addr));
$buf = undef;
socket($sock, PF_INET, SOCK_STREAM, 6) or die "Can't create socket: $!\n";
connect($sock, $dest) or die "Can't connect:$!\n";
#print "connect success\n";
#定义参数
$dt = get_format_date("%m/%d/%Y");
#$dt = "5/27/2017";
$proc = "gz_goods_maintain_task";
$k0 = "list{'$dt'}";
$content = "Mis=lzmis&proc=$proc&k0=$k0";
$contentLength = length($content);
$headers = "GET /entrance.do?disable_verify=disable_verify_fais6yr8273y&verify=save&$content HTTP/1.0\r\n".
"Accept:*/*\r\n".
"Host:$default_host\r\n".
"Connection:close\r\n".
"User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) Chrome/56.0.2924.87 GzPerlHttpClient/1.0\r\n".
"\r\n";
#print "start to send data to server ... \r\n";
#print $content."\r\n";
send($sock, $headers, 0, $dest);
#print "receive data from server ...\r\n";
recv($sock, $buf, 2048,0);
#转utf-8
$buf = encode("utf-8",decode("gbk",$buf));
#print $buf."\r\n";
#只读取消息体
@buf = split(/\r\n\r\n/, $buf);
print $buf[1];
#写日志
$filename = $dir."logs/".get_format_date("%Y%m").".txt";
write_log_file($filename, get_format_date("%Y-%m-%d %H:%M:%S")."\r\n".$buf[1]."\r\n\r\n");
print "\r\n";
close $sock;
#格式化本地时间
sub get_format_date{
my $format = $_[0];
if ( !$format ) {
$format = "%Y-%m-%d %H:%M:%S";
}
my $date = strftime $format, localtime;
return $date;
}
sub write_log_file{
my $file = $_[0];
my $content = $_[1];
open($file, "+>>".$file);
print $file $content;
close($file);
}
补充协议获取方式:
$host = '192.168.10.222'; #主机地址 $port = 80; #端口 #使用tcp协议 $proto = getprotobyname('tcp'); #生成访问地址 $iaddr = inet_aton($host); $paddr = sockaddr_in($port,$iaddr); #创建socket socket(SOCK,PF_INET,SOCK_STREAM,$proto) or die "socket:$!"; #将socket连接到访问地址 connect(SOCK,$paddr) or die "connect :$!" ;

浙公网安备 33010602011771号