perl&lwp经典用法

来源:互联网 发布:李天生sql视频云盘 编辑:程序博客网 时间:2024/05/10 10:01

1. 如何快速GET一个页面?

  1.   use LWP::Simple;
  2.   my $doc = get 'http://www.example.com/';




2. 标准的HTTP请求过程?

  1.   use LWP::UserAgent;
  2.   my $ua = LWP::UserAgent->new;
  3.   my $req = HTTP::Request->new(GET => 'http://www.example.com/');
  4.   my $res = $ua->request($req);
  5.   if ($res->is_success) {
  6.       print $res->as_string;
  7.   }else {
  8.       print "Failed: ", $res->status_line, "/n";
  9.   }




3. 如何得到HTTP响应状态码?

  1.   print $res->status_line;




4. 如何得到HTTP响应的完整内容?

  1.   print $res->as_string;




5. 如何得到HTTP响应的HTML解码后的内容?

  1.    print $res->decoded_content;




6. 如何POST数据

  1.   use LWP::UserAgent;
  2.   my $ua = LWP::UserAgent->new;
  3.   my $req = HTTP::Request->new(POST => 'http://www.example.com/');
  4.   $req->content_type('application/x-www-form-urlencoded');
  5.   $req->content('key1=value1&key2=value2');
  6.   my $res = $ua->request($req);
  7.   print $res->as_string;




7. 如何接受Cookie?

  1.   use LWP::UserAgent;
  2.   use HTTP::Cookies;
  3.   my $ua = LWP::UserAgent->new;
  4.   $ua->cookie_jar(HTTP::Cookies->new(file => "lwpcookies.txt",
  5.                                      autosave => 1));
  6.   my $req = HTTP::Request->new(GET => "http://www.example.com/");
  7.   my $res = $ua->request($req);
  8.   print $res->status_line;




8. 如何在请求里发送指定的Cookie?

  1.   use LWP::UserAgent;
  2.   my $ua = LWP::UserAgent->new;
  3.   my $req = HTTP::Request->new(GET => 'http://www.example.com/');
  4.   $req->header('Cookie' => "key1=value1;key2=value2");
  5.   my $res = $ua->request($req);
  6.   print $res->status_line;




9. 如何访问需要身份验证的网站(basic auth)?

  1.   use LWP::UserAgent;
  2.   my $ua = LWP::UserAgent->new;
  3.   my $req = HTTP::Request->new(GET => 'http://www.example.com/');
  4.   my $req->authorization_basic('user', 'password');
  5.   my $res = $ua->request($req);
  6.   print $res->as_string;




10. 如何指定UserAgent的超时时间和版本?

  1.   my $ua = LWP::UserAgent->new;
  2.   $ua->timeout(5);
  3.   $ua->agent("Mozilla/8.0");



11. 如何让UserAgent不follow重定向?

  1.   $ua->max_redirect(0);



  参数表示跟随重定向的层数,0表示不跟随重定向。


12. 如果机器有多个IP,如何指定UserAgent使用哪个IP访问网络

  1.   $ua->local_address('1.2.3.4');




13. 直接使用IP访问网站,为什么会失败?

   那是因为没有加上Host头部,虚拟主机识别不出你的请求。
   在构造请求时,请加上Host头部:

  1.    my $req = HTTP::Request->new(GET => "1.2.3.4");
  2.     $req->header('Accept' => 'text/html',
  3.                  'Host' => 'www.example.com');